I personally believe that things worthy of The Daily WTF can be smelled from a mile away, especially if you take the interview passing through or at the developer's place.
It is wise to memorize the Joel Test (already mentioned on this thread), as while it is not the be-all of software development, is a neat guideline.
The Joel Test
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
You just have to wait until the tech interview, take the previous interviews as a way to try and learn how the company is in the "human resources" and "profitability" areas. It's a smart thing to do to try and see if you can learn who their clients are, how old the company is, how many people are working there, etc.
One great way of asking this questions without sounding like an arrogant bastard is to observe if the interviewer is passionate about development (when on the technical interview). Proud people will take for hours about implementations details and the processes and tools in place. Sometimes, just asking them How do you do X?, you'll get to know the code versioning system in place, the build process, the bug database in use (never seen a company that doesn't use one. Built in house is a red mark.), and if there are milestones.
When being interviewed you will be asked some questions to assess your knowledge. These questions can give you some idea of what the company will want you to be able to resolve, and how it works. If the questions are generic or abstract, out of some book, that for me is a black mark. If the questions are more of the form What tools do you like using or Have you ever used Trac or svn
? or What are the relative advantages of git
and svn
?, then I'm inclined to think that the one on the other side of the table is not just going through some checklist.
Of course, when the interview is nearing its end, the interviewer will ask if you have any questions. Be ready to ask between one and three questions (you won't have time for more and you'll likely be deemed as too inquisitive, if there is such a thing) and ask about some things that weren't completely clear to you from the previous conversation.
I consider that interviewers are expecting questions, any question, as you'll be spending a lot of your time on the company, so you'd want to know what you'd be up against.
Some of the questions I've asked are What tools do the developers use? (If the answer is whatever they like, we don't have a standard, we let the developers use what they want sign then and there!), How many people work on a single project?, How many projects are you currently working on?, What source control system do you use? (If the answer is None. tear the previously signed contract and jump out the window to escape!), etc.
Never bring up the money part of the interview, especially on the tech interview.
One thing that I've seen is that I find more enjoyable, relaxing and fulfilling to work at young companies founded by knowledgeable developers, in contrast to more established companies founded by non-techies. The later tend to be more rigorous with some stupid things (developers don't have root to their machines for security reasons, you can only use Visual Studio 6.0, all apps are to run on IE6) and to not understand some part of development, specially why some really bad module should be refactored (- "It's working! what does it need fixing?" - "It's a .Net accounting app that has code from VB3 plagued with GOTO.").