- Are you an agile shop?
- Do you have a well defined audience for your product?
- Do you have a product owner?
- Do you use version control for all code? Distributed version control?
- Do you utilize Continuous Integration (CI), or even better, Continuous Delivery (CD)?
- Do you keep an up to date issue database?
- Do you do hallway usability testing?
- Do you have the best hardware and software that money can buy?
Nice to Haves
- Are you profitable?
- Are developers encouraged to actively participate in requirements gathering?
- Do developers have quiet working conditions?
- Do you allow developers to work from home?
- Do you have a schedule?
- Are there product testers?
- Do candidates write code in their interview?
- Do you provide training opportunities for your developers?
- Do you encourage writing unit tests for all features?
As I see it, on the "must have" list, you really should be able to answer every single one of those with a yes. If not, you're going to need a really good explanation. If it's more than one, you probably have a serious problem on your hands. On the "nice to haves," slightly over half would probably suffice, but really, you should try to hit them all. If you want to be competitive in the market place, and a good place to work, you'll want to make sure as many of these are true as possible, along with being in the top 25th percentile for compensation. It is a very competitive market for engineers, and anyone that isn't providing proper care and feeding of their development staff will soon find that someone else will.
Of course, these are all open to subjective interpretation, because each developer will have their own ideas, but let me provide you with my take on why each of these are so important.