To build a good team you need to look for really good people. In my current company, we are instantly looking for good developers (http://kariera.goyello.com/). I am personally engaged with recruitment for Java developers (not only though). It is not easy job to find good people. During all the years, we have been adjusting our process and we ended up with really simple assignment that we give during the technical part of the interview. And sometimes it is amazing what we see there!
Initially we thought, that the simple task can be given only to Junior developers so we can see how they "cook". You will not hire a cook without tasting his dish, right? And we learned, that not only Junior developers deserve the code check.
The task is really simple (credits to my colleague, Piotr). We want our candidate writes a simple program that processes data from an external file. We require basic knowledge of Java programming language and Object Oriented Programming concepts. This program can be done within maximum an hour with full blown "architecture". But...
Many of the candidates fail though. And what is surprising - not only Juniors but the experienced ones. This is scary actually. We met some guys working for big insurance or financial companies. They usually have many years of "commercial" experience. They know a lot about theory of programming, design patterns, best practices, tools etc. Perfect. But they fail with this simple task. Not knowing how to read a file from a disk using core Java (no internet access is given during the interview; only Java doc is available), not knowing basics about collections, not saying about creating well factored, Object Oriented code.
Lesson learned. Check the code. Not only on the board with conceptual tasks. Let your potential team mate do the coding for you. It will spare a lot of you time in future.
What is your opinion in that matter? What is your experience?