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
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.
- Beginner: you notice he does not pluck all the strings in a correct way, is unable to keep the tempo etc
- Beginner expert: he will try to play the piece at the best possible "technical" way.
- Competent: he will probably tune the guitar first upon noticing it is out of tune.
- Proficient: he will probably tune the guitar, notice the piece contains some errors and oddities, and play them, but talk about them afterwards.
- Expert: he will probably tune the guitar, flatten out the errors and oddities from the piece during play
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).
- Beginner: will ask you how the screen should look, and then probably starts talking about the implementation
- Beginner expert: will ask you how the screen should look, start talking about how ajax might help here etc.
- Competent: might be talking about things like delegating security in browsers over netwerk drives is hard etc
- Proficient: will ask you why you exactly need all this functionality that it needs to be implemented in a certain way
- 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
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