Why I won’t hire you – a recruiter’s (re)view of developer candidates

by Ochronus on December 8, 2010

After leading a relatively high number of developer interviews lately I feel like summarizing my experience – the things I look for in the candidates.
I’ve been always doing a 3-round interview:
- round #1: A 1.5 hour long test along with the other candidates. Some easy factual questions, some minimal coding, some SQL and some requiring logic and deeper thinking.
- round #2: a standalone, logically trickier program to code. I’m giving days to the candidates to solve it at home then send in the code.
- round #3: a personal interview. Developers who reach this point are mostly technically competent and lack big problems. This is the ‘fine-tuning’ phase, I could say.
These are the things I look for:

What makes the candidate ‘click’? Programming or creating?

By ‘programming’ I mean the urge to find out how things work, to control things, to fiddle with details and inner workings of stuff.
‘Creating’ kind of speaks for itself – it’s the warm and fuzzy feeling that gets inside you when you finally release the beast you’ve been designing and coding for weeks.
There should be a healthy balance as both are very important in this field. People who are only into ‘programming’ often lose the ‘big picture’ and don’t pay attention to other factors like priorizing, cost-saving, etc.. Devs who only like to create many times go into the infinite loop of ‘eternal design’  without ever producing any deliverable code.

Does the candidate seem like a person who feels projects his own?

Will he take responsibilty and ‘parent’ his projects? Specifications and needs are many times incomplete and devs who pay extra attention to their projects usually spot these ‘weak points’ or holes, thus they get fixed/covered before the release, not days/weeks after in the forms of bugreports.

School is important but it will never replace experience.

School is great and neccessary for a firm understanding of maths, structured thinking, etc..

Experience is king, things rarely work as specified in 10 years old books in the field of development. It’s even more true for online development.

Do I see the will to improve in the candidate?

Nobody’s perfect. Nobody knows everything. This field is ever-changing, devs need to keep updating their knowledge. Enthusiasm for the field is a must, they need to have that ‘fire in their eyes’ when they talk about their profession. People generally won’t improve only because of the fear of getting fired, they need real motivation – which greatly comes from their own enthusiasm.

I like to surprise the candidates with questions/problems from different fields.

It shows if they’re smart or only experienced in development. Begin smart and analytical is very important, they should be able to quickly analyze and solve problems in general, not only in development. It’s a different mindset which won’t form by simply writing tons of code. Look for the architect, not the coder.

Is the candidate prepared to “unlearn”?

Some methods, knowledge are just simply outdated, not valid anymore. Many people have trouble letting go of old knowledge – and it will mess with new knowledge in that field.

Is he able to focus and simply keep unimportant things out?

Unfortunately like the last point It’s hard or impossible to test. It’s very important when people come bugging him or there’s a ton of things to do and he has to priorize.

Teamwork.

Lone wolfs are fine from time to time, but being the part of a team is neccessary. Decent communication skills are required.. Also here ‘letting go’ can play role as sometimes someone else will take his work over. People get reassigned, etc.

Testing skills.

Lack is a no-go. They should at least have the right mindset.

Polyglot skills.

One language/platform is not enough. We all know this, a language is a tool and we need different tools for different types of work. People who are not able to switch tools are doomed in this field.

Have a whole picture – it’s related to experience vs. education only.

Experienced developers tend to have better overview and won’t get lost in the details. If you spend 2 weeks trying to figure out how to make a query work faster in MySQL, you’re probably wasting time. After a day or to you should have moved on to another solution and went on with the project.

Of course many smaller other things come into account, but these are the major points that came to my mind. Feel free to add your concepts!
Also check out my post on how to be a better deveoper - you might even pass an interview ;)

  • http://manchuck.com Chuck

    I was recently on a couple of interviews for different PHP positions. Two different interviews that relate come to mind:

    The lead developer came in and asked me a series of questions designed to test my technical knowledge of PHP.

    One of the questions was: “You have a SQL query that takes a long time to execute and is called multiple times during script execution. How would you speed up that script?”.

    I asked: “Why is this query taking so long?” his response was: “Just because”

    “Ok….” I replied then asked “Why is it called so many times? Can the data be cached or can the code be re-factored to prevent so many calls?”

    “Yes… What would you do?” He reluctantly responded.

    “Well 1st I would examine the code base to find out why it is called so many times. I am sure that you can get away with making the call once. Also since the query itself is taking so long, I would looking into using something like memcahced”

    “Thats not really what I am looking for as an answer what else would you do?” he came back at me with.

    This point in the interview threw me off completely. I was really at a loss here. What the was his correct answer. I gave up and asked him what he was looking for. He wanted me to say the buzz phrase: “Put the word static in front of the result array”. Both answers are correct however mine would not only help increase performance of the 1st call to the script but all subsequent calls (Since I am caching the results).

    On a different interview with a different company, I had to take a multiple choice test. One of the questions was: “Which of the following is a correct Regex for matching an email address?”. After looking at them all I informed the interviewer that they all would fail since they would not match the “-” in domain names or .co.uk. His response was simply: “Well we do not have any users from domains like that”

    “Of course” I thought “Because they keep getting denied at registration”

    • http://www.iamnolegend.com ochronus

      @Chuck, The second story is just terrific and so true for many companies:)
      About the first one: I’m not sure if you’ve been shown the code or not, guessing answers like this is nearly impossible. Also you’re right that micro-optimizations can only be second to greater architectural ones.

  • Pingback: Tweets that mention Why I won’t hire you – a recruiter’s (re)view of developer candidates -- Topsy.com

  • http://mephistos.com/ Ray

    The second response is what I have seen so often back when I was doing programming and/or system job hunting. You had a standardized test or questions being asked by someone who really only nominally understood the technical aspects of the situation – and if you gave any kind of answer that was not on their ‘script’ they were lost, but then I am sure it reflected back on you because of their lack of understanding in a negative light.

  • ash

    I had to do a number of interviews myself a while back. We scan some resumes and bring in a few people for an hour long chat. We talk about programming, we talk about tech in general – nothing too technical. I look for an opinion on language, libraries, and platforms. If they’re opinionated and up-to-date on the latest developments, it illustrates passion. A good interview is a conversation, not an interrogation. We’ve hired a number of developers this way and all of them have been spectacular. It’s clean, it’s simple, and it doesn’t sap a lot of resources.

    • http://360technologies.net kashif

      @ash, Gr8. Mine the same way too, why we ask technical questions from technical guys if they have access to google. If they are passionate to learn[updated with latest techs and trends] and there CV is showing some real experience that is enough.

  • Pingback: Why I won’t hire you – a recruiter’s review of developer candidates « Ballinger’s Professional Blog

  • Martin

    When I lead technical part of a job interview I only need 15 minutes MAX to be able to recognize a good software developer with skills we need. He may be good at what he does and what we do or the opposite. Also he may be hard working or lazy. The rest is just BS.
    Also in my experience, people who are just simply inexperienced and close minded and have in general hardly seen more than one company from the inside try to ‘teach’ the other by for example writing this kind of wannabe smart looking blog posts.

  • NeilBlakemore

    For Contractors can expect an offer after a telephone interview. I can’t imagine three rounds of bollocks like this. So I don’t expect you to hire me! Oh – I’m available next month by the way. :)

  • Greg Pierce

    While there is certainly a need to make sure that the people are technically competent, there is often too much focus put on standardized testing and stumper questions.

    Far more important than all of those things is whether or not the person will fit on the team. The best technical mind that doesn’t gell with the team (even if they don’t really disrupt it) is not the best hire for you.

    I spent plenty of time over the last year interviewing candidates and some of them were substantially technically competent, but when I watched those people interact with the team it was clear that they wouldn’t fit. Too many organizations have a fairly rigid interviewing process where they are trying to squeeze out people into a short list in a short amount of time.

    I would suggest that a better approach would be pooling the candidates together and seeing how well they work together when they are in competition with each other. Who leads, who inspires others, who are your problem solvers. Every candidate has some strength – its just a matter of is that the strength that your team needs. L33T technical skills are really a small part of whether or not they will add or detract from productivity.

    • http://www.iamnolegend.com ochronus

      Wow, this is a very nice idea but I can only imagine it as an ‘after’ filter. Both aspects are important – being a good teamplayer and being technically competent.

Previous post:

Next post: