No matter what any recruiter will tell you, you alone are responsible for your career. That means ongoing education and working on a team with proper software development practices.
These practices will help ensure that you spend your time having fun building new things rather than the Very Bad Things which happen when they are not in place (trust me on this). No matter whether you are applying to your first gig in IT or you are a master engineer, it is your responsibility to assess a potential employer during the interview process. If these things are not in place already, your employer should be open to doing them.
- Do you use source control? What kind? What are you requirements/to check in code (assignment to tasks, unit tests, peer review, etc)? Absolutely refuse to work anywhere which refuses to do this.
- Do you use process/task/bug management system to track all work? How do you track progress and manage change? Is your process management tool integrated with your source control?
- Do you use the best tools money can buy? For example: MSDN/Apple Dev accounts, dual monitors, powerful workstations (SSD, 16GB RAM, i5+), and tools like ReSharper, RedGate, etc. Don’t work for bosses who don’t value your time.
- Do you have a dedicated QA team/role? Are they involved in the requirement/release management process? Developers make very bad testers—make sure your team has a formal process for testing
- Do programmers have quiet working conditions and rooms to meet? Show them to me.
- Do you get feedback from customers during the development process?
- Do you have a continous integration server? Do your builds include automated integration/unit tests? Do you have a QA/UAT environment?
- Do you create specification/requirements documents? Do you do it before, during, or after writing code? Depends on whether you use an agile/Scrum or some other process, but there should be some sort of written requirements for all work.
- Do you have a daily standup or regular team meeting? Not everyone can use a Scrum-style methodology, but every team should have a regularly scheduled status meeting. It should be daily for teams working full time in the same office, and not less than weekly in other cases.
- Do you use modern frameworks? Not every team is required to use bleeding-edge development frameworks, languages, etc. However, software productivity IDE’s and frameworks improve quickly, and an old toolset (Visual Studio 2005, VB.Net, Android IDE in Eclipse, PHP 5.3, etc.) is a bad sign.
Credit for most of the questions goes to Joel Spolsky’s The Joel Test.