How to hire a senior developer

Introduction

A little while ago I wrote a post the fallacies of the tech recruitment process. While it is nice to point out what is wrong, I never actually provided the proper way to find out if a senior developer might be experienced enough and the right fit for your company, so this time I decided to put my money where my mouth is, and tell you how to hire a senior developer.

Why hire a "senior developer" and what is a senior developer exactly

In my opinion, a senior developer is a developer who manages to think out of the box, and who does not stop reasoning about finding a solution at technical boundaries. A senior developer is somebody who tries to provide business value for every single step he makes, while a junior is more or less focussed on implementing the whole thing, a senior thinks about what he has to do and why he has to do it...

A senior can be tens to hundreds of times more productive business-value wise then a junior.

I have seen people getting the title "Senior developer", while they only have been developing for 3 to 5 years. While this is possible, I am assuming that most of them are not senior developers, but actually expert beginners.

Please allow me to clarify this with the Dreyfus model of skill acquisition (i.e. the different stages somebody goes through when acquiring a new skill). I will take the alternative interpretation of this model, because the original model is to abstract to make a point here. You have 5 distinct levels in this model. This section is blatantly copied from wikipedia:

1. Novice

  • "rigid adherence to taught rules or plans"
  • no exercise of "discretionary judgment"

2. Advanced beginner

  • limited "situational perception"
  • all aspects of work treated separately with equal importance

3. Competent

  • "coping with crowdedness" (multiple activities, accumulation of information)
  • some perception of actions in relation to goals
  • deliberate planning
  • formulates routines

4. Proficient

  • holistic view of situation
  • prioritizes importance of aspects
  • "perceives deviations from the normal pattern"
  • employs maxims for guidance, with meanings that adapt to the situation at hand

5. Expert

  • transcends reliance on rules, guidelines, and maxims
  • "intuitive grasp of situations based on deep, tacit understanding"
  • has "vision of what is possible"
  • uses "analytical approaches" in new situations or in case of problems
I tend to think that a lot of so-called-seniors are actually expert beginners: they know how to implement something technically, but they lack the experience to truely think about what they are doing, why they are doing it, and typically stop thinking at the technical level.

Now on to the hiring process...

How to hire a "senior" guitar player ?

To explain the proper way to do this, let me explain it with another question: how would you hire an expert guitar player?

First of all, I would not ask him about notes and intervals, but I would ask about performances, favorite music pieces, biggest mistakes and achievements, and find out whether he is passionate about his job and has any "war stories" to share

Next, I would ask him to play a musical piece, but with a guitar that is out of tune, and I would hand him a piece of music that contains some oddities or errors somewhere.

  1. Beginner: you notice he does not pluck all the strings in a correct way, is unable to keep the tempo etc
  2. Beginner expert: he will try to play the piece at the best possible "technical" way.
  3. Competent: he will probably tune the guitar first upon noticing it is out of tune.
  4. Proficient: he will probably tune the guitar, notice the piece contains some errors and oddities, and play them, but talk about them afterwards.
  5. Expert: he will probably tune the guitar, flatten out the errors and oddities from the piece during play
I think the point is quite clear here, is it not? While you might master something perfectly in a technical way, that does not make you an expert at all. Combine this with the fact that most people tend to think they are in the top 20 percentile when it comes to being smart, and you can start seeing parallels with a story called "The emperor's new clothes".

How to hire a "senior" developer?

Start by asking him about his career, find out what his passions and achievements are, and where he made the biggest failures (and learned from it, I might hope).

Next, ask him for example, how he would handle a situation that is actually the wrong solution for the problem, let us give an example:

You say you need a website which would allow you to upload files from the local network, so you need a way to create an in-browser explorer that allows you to browse the network.
  1. Beginner: will ask you how the screen should look, and then probably starts talking about the implementation
  2. Beginner expert: will ask you how the screen should look, start talking about how ajax might help here etc.
  3. Competent: might be talking about things like delegating security in browsers over netwerk drives is hard etc
  4. Proficient: will ask you why you exactly need all this functionality that it needs to be implemented in a certain way
  5. Expert: will question your authority and tell you to just use an upload button instead, as the business ROI will probably be way higher here
This also makes my point on productivity. Typically, going higher up in levels, does not mean a linear increase in productivity, but an exponential one.

Conclusion

There you have it: the proper way to hire a senior developer. So, let us hope that by the next time I have to do some kind interview for a senior developer, they will stop asking me about how the garbage collection works in detail, or what exactly a strategy pattern is, because:

"Quite frankly, my dear, I don't give a damn" Clark Gable - Gone with the wind

While those might be interesting, you are focusing on implementation details, not on providing a solution. Technical things can be googled, but a higher level thinking is something only experience can give you.

Signing off,

Tom