Pages

04 October 2005

Recruitement best practises

There's so much "soft" in software.
I have again the opportunity to recruit somebody for our development team and I think I should improve our practises in that field as in any other. I could say that recruitment is a crucial activity for a startup company such as ours.
But for what company is it not critical?
So, what are the best practises for software development recruiting? I found recently some litterature about it :
  • an article in JoelOnSoftware book ("Joel on Software: And on Diverse and Occasionally Related Matters ThatWill Prove of Interest to Software Developers, Designers, and Managers,and to Those Who, Whether by Good Fortune or Ill Luck, Work with Themin Some Capacity" - maybe the longest book title in history,...)
  • and a book by Joanna Rothman ("Hiring the Best Knowledge Workers, Techies & Nerds: The Secrets and Science of Hiring Technical People") which I did not read yet.
From Joel Spolsky book, I will add a few things to my interviews:
  1. a very simple set of criteria: I am looking for 2 qualities "smart" and "getting things done"
  2. the "impossible question" as a mean to challenge those qualities
  3. a new "let's write some code" exercise.
The later one I did for myself : "reverse a linked list" in java. With 3 levels of difficulty:
  • get a new List object when calling the operation,
  • reverse in place
    • by iterating on the list,
    • by using recursivity
In itself, it is really not difficult (it shouldn't be). However it really reveals development abilities:
  • use of names conventions
  • use of test-driven development
  • care for limit conditions : null input list, empty input list, list size = 1
  • use of exceptions
  • comments (not so easy to comment that code,...)
  • incremental approach to development
  • use of interfaces (should it work on List also?)
  • this can lead to patterns questions: "what pattern would you use to add that functionality to a LinkedList?"
I don't know how many interviewers really make developers code during an interview, but how would you hire a personal cook? By tasting the food and making sure that the kitchen is clean and tidy, wouldn't you?