Some more thoughts on the state of the software development hiring process. This is based on my own experience over the past several years on both sides of the call, as well as on discussions with folks on Twitter. I'd be happy for feedback, additions, or corrections. I'm sure I don't know everything.

It seems to me that there are huge issues in our industry with lack of respect for interviewees. So when I speak of red flags, I don't mean reasons why a company might choose not to hire someone: there's plenty of HR-oriented advice already out there on that. Instead, these are the things that might make you think twice about actually working for a company.

And let me be quite clear: not everyone has the luxury of being super-choosy. There are a variety of ways that you can choose to react to bad behavior on the part of the interviewer and their company: air your concerns on the phone call, send a follow-up email to the interviewer or their HR department, hang up the phone while making it clear why you are upset -- or do nothing at all. If you've got kids to feed and bills to pay, in this society, you may well need to take the job now and worry about trying to change the company later, and that's OK.

That said, here's my list of things that make me cross a company off my list of potential employers:

  • Racist, sexist, or other blatantly prejudiced remarks, no matter what tone they're delivered in. No, it wasn't a joke. no matter what they might claim, I don't want to work anywhere that normalizes that sort of behavior.
  • Whiteboard interviews that ask me to develop an algorithm to reverse a string, insert an item into a linked list, or similar nonsense. I've never worked somewhere that this was important to know, and if it was, I would look it up. Bonus "no thanks" points if the interviewer doesn't think something like string.reverse() is a good answer.
  • Showing up late, taking calls during the interview, or otherwise making it clear that they have better things to do than talk to you. In rare cases an actual emergency might come up, in which case I'd expect an apology & reschedule.
  • Quizzing me on CS fundamentals (which too often is just "trivia") on the grounds that you need to know how things work behind the scenes. Yeah right, and can they explain the quantum physics behind semiconductors to me? If not, then this is just a "my abstraction is better than yours" argument.
  • An unpaid takehome coding exercise that's either open-ended on time, or designed to take more than an hour.
  • An expectation that people who get hired should not have a life outside of software. This can take the form of pushing you to explain your side projects, insistence that you justify every six-month gap in your employment history, or remarks that "we have unlimited vacation but no one takes it."
  • More concern with your references than with your skills. To me, this is a sign of a lazy hiring manager looking for reasons to say no instead of trying to let you show your best side. Anyone can come up with good references, so as a hiring signal their worth is close to zero.
  • Refusal to discuss compensation, even to the point of not being able to set a range. Why should I invest time in your interview process if you won't tell me what to expect when it's over?
  • Lack of a clearly explained follow-up process. Unfortunately you won't know this until the interview is over. But basic respect says the company should tell you when you'll hear back (and actually get back to you!).

Finally, I really don't know what the state of interviewing is in any industry other than software. I'm told it's not this bad everywhere. I certainly hope that's true.