What is your opinion on class inflation

Testing as part of the interview process

I ask applicants to rate themselves for all technologies on their résumés on this scale:

Make this very clear very close to Litteraly .

Inevitably there will be majority of people return ratings with at least a 3 and a few 2, but not with a majority of 1.

Of course, you cannot determine and rate a person's abilities based on these raw numbers and their own rating. But it makes you Trust agreement , and many are keen to break it. Or unable to read and abide by a simple request. When you're doing your phone screening, have this rating ready. If after two questions you are obviously one step lower in most of your key technologies, you have overestimated yourself. And if they're below the acceptance you set for the role, just call it a day. There's no guarantee they could still be good people, but you have better things to do.

It's a nice approach as it forces people to really think about their skills. The good guys are those who would have put their level on their résumé as "advanced" and suddenly realize what "advanced" really should mean and have the humility to back off.

The problem with this approach is agencies.They usually get annoyed about it as they make their money finding people and you are only prolonging their process which may already be long and basically put some people off.

I don't mind giving pre-screening exercises. It is controversial as not everyone will have the time to direct them and some may cheat on them, but you only faced a few barriers to resolution. With programming roles, this is especially easy because you can ask applicants to submit programs that can be flagged or quickly assessed by a program. You'd have to write these programs once and you're done. It's a good investment of time.

Then send out these exercises and make sure the guidelines are clear about what output you are expecting. Rigor is of great value to developers. So you want to find those who can read and do a basic assignment without whining. The writing of small programs that return some numbers or strings and the assignment exactly match (no EXTRA signs here and there) is easy .

This is the only way I often reject applicants who are not motivated or some insult me. It's good. It's communication. They are basically telling you, knowingly or not, that they weren't that interested. You just saved time on the next interview.

For those who are sending something back, consider this one watch closely if some exactly the sending , what you want. They're not that common, though they are should be . For those who fail completely, you can probably fire them. For those who didn't follow the guidelines by a small margin, get through them anyway if you can: it's just another assessment point to use later in your decision-making process, even if it's not entirely conclusive at the moment.

These must be simple (in terms of implementation and time expenditure), but with a problem-solving touch.

If this is for a quick phone screen, calm them down (the usual Yadda-Yadda: "Drive us through your resume focusing on what you think is important for this role", "What are you looking for" and describe one little more about the role and ask if they have any questions.

Don't do it for too long or you will get nervously tired. So quickly slide it out of the way and start the phone tests.

Ask clear, short questions and make sure you are more flexible than with pre-tests. They are nervous so give them time and guide them to the solution. You want to see a "mindset" and a "personality" here, not raw skills.

When you have time for a long phone screen, use online editors with collaboration features (EtherPad, Google Docs ...) and help them with any problems. Keep backups for the later stages to refresh your memory of applicants and review all of them once you've seen some: you can revise your judgment based on the people you've rated so far. Some EtherPad clones even allow the session to be recorded so that you can replay the input from the session in sequence, which can be very interesting. If you're asking a question orally, make sure it's already pre-written in another editor to copy and paste (and possible code stubs, comments, and examples) into the shared session so as not to waste time .

For face-to-face interviews, you would like to:

  • Review verification ,
  • Whiteboard brainstorming ,
  • technology-oriented discussions ,
  • informal chats (around water coolers or even at lunch),
  • practical tests .

All of this is pretty self-explanatory, but the last one has a few quirks: Have a computer handy with tools and tasks preinstalled. Make sure you can record the applicant's work later. I'm not saying to record live, but sending the coding assignment to a version control system or document management system is great for future reviews, especially if candidates reapply later.

Include several aspects of the day-to-day job in the coding test and have some paper-based and computer-based components in place:

  • paper based code review ,
  • Live code review (by rewriting the code or commenting in a Crucible or ReviewBoard if you have one with a guest account),
  • Live coding test (make sure this is writing code And the Writing tests for the code includes. Or writing tests on existing code. Or writing code for existing tests.)

Talk to them quickly so they can go through you, ask for final statements and questions, and give them a call for a day.

Make sure to have multiple team members taking part in the tests and interviews, possibly some senior developers and some young developers or even interns (great training for them) and even people from other departments (quality assurance, training, support ...) if only for a few minutes. They will all work together. While it is important that you make the final decision, it is good for others to be able to weigh. Make sure that you switch these groups of applicants during the different phases of the interview, keeping some elements throughout: this way you can avoid possible conflicts with one or the other employee who really cannot remain a man (although in the end this is the case if so) If so, unfortunately you should probably also pass on a good applicant).

Obviously, I rarely interview more than 3 applicants a day.More likely 2: one in the morning, one in the afternoon, or they overlap in a way that is not annoying.

All of this seems very time consuming. And it is, and you want to spend some time looking for long-term employees invest to get a great ROI. However, if you automate most of this work and make it part of your process, it takes away a lot of the routine and guesswork, and can be used fairly efficiently. Of course, it even gets a bit robotic at some point, which isn't too good, but it's hard to avoid.

The pre-assessments and pre-exams seem harsh and could weed out or put off very good potential candidates, and they likely do. Maybe some of those who give up would have been great employees if they had gone through. But the cost of dealing with all the others who wouldn't have been great employees is far more threatening and depressing than the prospect of not seeing a great employee walk through the door. And the process aims to find you among other outstanding employees. So don't think of these tasks as lost potential employees, but rather as time savers who are giving up space for the next big ones.


"They are basically telling you, knowingly or not, that they weren't that interested." Is your company as popular as Google, Microsoft or Thoughtworks? Because if not why should Are they so interested at the beginning of the process when they have many other jobs available? Convince me I want this job more than anyone else before you ask me to spend a significant amount of my time convincing you that you want me.


@pdr: Do you think everyone wants to work for the big "stars"? Not really. Many people are interested in certain areas. In this case, they are interested in actors in this area. Not everyone wants to be naked and famous. If your company doesn't look interesting from the outside, this is another problem: your problem isn't in the interview process, but in selling the job offer, promoting your company's work culture, and marketing in general. It starts here. NOT during the interview process. And like I said, you should NOT view it as a "lost" potential employee. Others will come.


There aren't enough really good developers out there to fire them that way. Yes, a false negative is better than a false positive every time, but "others will come" has a very high opportunity cost. And no, not everyone wants to work for the big stars - I don't - but they have enough people fighting over places they can afford to put them through a tough interview. Most of us don't.


@pdr: The company I currently work for may be big enough, according to your theory, not to care about these costs. But the startups I worked for definitely weren't. You were probably just attractive enough that it became irrelevant (as I said, it comes down to marketing your culture upfront), or maybe we were just very efficient at dealing with it. Perhaps all you need to do is refine your process to make it easier and less expensive.


@Spoike: Have you read tutorials, online blog posts, or been hanging around P.SE? Well that's good enough. It is not necessarily exactly what you have to look for, otherwise it's just as bad as firing someone for not knowing Algorithm X or Y. That's why I said it was too close to literature. It is not necessarily exactly these actions that you must have taken, but rather equivalent ones. Of course it's an easy scale, but you know what to answer. I'm sure you did, you just wanted to nitpick (which doesn't go down so well for interviews. Arguing is fine, don't nitpick;))