In my previous post I covered how recruitment was analogous to buying a house, and stressed the importance of work that shows off a candidates passion for the profession.
Just like programming itself, recruiting the right candidate is all about assessing and deciding on best trade-offs. I would like to give my personal thoughts on this for your consideration:
Junior Developers
Things that you should be more inclined to trade
- Number of years previous experience
- Having a top grade at University
- Degree in Computer Science
- Previous experience of every technology that you use
“If a programmer hasn’t learned C after a year or two, the next three years won’t make much difference” – Steve McConnell
Things that you should be less inclined to trade
- Enthusiasm for programming
- Self awareness on lack of experience
- Basic appreciation for clean code and refactoring
- Understanding of the most basic security concepts (e.g. difference between authentication and authorisation)
- Ability to know when to ask for help
- Ability to learn quickly
Senior Developers
Things that you should be more inclined to trade
- Number of years previous experience
- Having a top grade at University
- Degree in Computer Science
- Previous experience of every technology that you use
- Salary (a bit more for the right person)
“If you can’t change with the times, experience is more a handicap than a help.” – Steve McConnell
Things that you should be less inclined to trade
- Enthusiasm for programming
- Ability to learn quickly
- Ability to mentor junior developers, and a sense of accountability for them
- Respect for the users of your products
- Knowledge of the Principles of Object Oriented Design: Encapsulation, Inheritance vs Composition, Polymorphism, SOLID, etc.
- Knowledge of security fundamentals (e.g. OWASP Top 10)
- Knowledge of other design principles: YAGNI, DRY, KISS etc.
- Knowledge of design patterns and in which situations common patterns are more or less useful
- Knowledge of automated testing at GUI, Integration and Unit levels
- Knowledge of practices, such Agile and Waterfall benefits and pitfalls
Update 12th July: I’ve just read (Code Complete 2nd edition p682) that the same study that gave birth to talk of 10x programmers (Sackman, Erikson and Grant) studied professional programmers with an average of 7 years’ experience and found no relationship between experience and code quality or productivity.
I am not suggesting that having more experience is irrelevant. All other things equal, I would certainly prefer to hire a more experienced developer. However it is foolish to assume that a more experienced developer must be better than a less experienced one.
“If you have to pay more to get a top 10% programmer rather than a bottom 10% programmer, jump at the chance.” – Steve McConnell
If you think I have missed anything, or disagree, or even if you completely agree, please leave a comment to let me know.