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:
- a very simple set of criteria: I am looking for 2 qualities "smart" and "getting things done"
- the "impossible question" as a mean to challenge those qualities
- 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
- 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?"