We hear much about code smells, test smells, and even project smells, but I have heard no discussion about employer "smells" outside of the Joel Test. After much frustration working for employers with a bouquet of unpleasant corporate-culture odors, I believe it's time for me to actively seek a more mature development environment.
I've started assembling a list of questions to help vet employers by identifying issues during a job interview, and am looking for additional ideas. I suppose this list could easily be modified by an employer to vet an employee as well, but please answer from the interviewee's perspective.
I think it would be important to ask many of these questions of multiple people to find out if consistent answers are given. For the most part, I tried to put the questions in each section in the order they could be asked. An undesired answer to an early question will often make follow-ups moot.
- What constitutes "well-written" software?
- What attributes does a good developer have? Same question for manager. Who are your most valued employees/managers, and why?
- Do you have a development process?
- How rigorously do you follow it?
- How do you decide how much process to apply to each project?
Describe a typical project lifecycle. Ask the following if they don't come up otherwise:
- Waterfall/iterative: How much time is spent in upfront requirements gathering? upfront design?
- Who develops tests (developers or separate test engineers?)
- When are they developed?
- When are the tests executed?
- How long do they take to execute?
- What makes a good test?
- How do you know you've tested enough?
- What percentage of code is tested?
- What is the review process like?
- What percentage of code is reviewed? Design?
- How frequently can I expect to participate as code/design reviewer/reviewee?
- What are the criteria applied to review and where do the criteria come from?
- What new tools and techniques have you evaluated or deployed in the past year?
- What training courses have your employees been given in the past year? What will I be doing for the first six months in your company (hinting at what kind of organized mentorship/training has been thought through, if any)
- What changes to your development process have been made in the past year?
- How do you improve and learn from your mistakes as an organization? What was your organizations biggest mistake in the past year, and how was it addressed?
- What feedback have you given to management lately? Was it implemented? If not, why?
- How does your company use "best practices?" How do you seek them out from the outside or within, and how do you share them with each other?
- Tell me about an ethical problem you or your employees experienced recently and how was it resolved?
- Do you use open-source software? What open-source contributions have you made?
Really a thing to ask yourself: "Does this person seem like they are trying to recruit me and make me interested?" I think this is one of the most important bits. If they seem to be taking the attitude that the only one being interviewed is you, then they probably will treat you poorly. Good interviewers understand they have to sell the position as much as the candidate needs to sell themselves.
Glassdoor.com is a good web site for researching potential employers. It contains information about how specific companies conduct interviews...