More thoughts on interviewing and recruitment

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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s