- Finding
- Recruiting (including assessing)
- Retaining
The key to hiring great developers is to recruit the right people in the first place. While all three steps are important, we feel it's worth expending a lot of effort on Step 2, as you'll discover in this chapter.
Step 1: Finding Great Developers
First discuss with others in your organization the main attributes you are looking for-whiteboard the "spec," in other words. Be clear about the type of person you want and the skills required to do the job. For example, we at TMS look to hire developers. Not coders, not programmers. Developers, in our vocabulary, don't just write code or simply program someone else's technical design-coders and programmers do that. Developers are able to develop the designs and architectures needed for themselves or other programmers. They never hack code; they think about the code's structure and form first, and then write it down. Developers can test and have broad development skills. Now please don't get fired up if you call yourself a coder or a programmer and disagree with the definitions of these terms. They're simply the definitions we use at TMS. That's all, so please don't be offended!
What Sort of Person Should You Look For?
Generally, if we're looking to recruit great developers, we look for people with a good track record in development. It's up to you to decide whether the developer's experience should be in, say, Visual Basic or in Java (that is, whether it's "the brain" and general programming experience you're seeking or whether it's all of the above) combined with experience in the language you're using. When we're recruiting Visual Basic developers we normally expect them to have extensive knowledge of Visual Basic, although if the person were exceptional in every other area, we'd almost certainly take them on and give them the necessary training. The best developers are generally those with logical, methodical minds. They're also usually thoughtful, precise, and, we hope, not impulsive-the best developers think first and act later. We're after the people who think algorithmically (people that understand the necessity of a good algorithm and have the wherewithal to implement it), which is not to say that they should think only in algorithms. A thorough knowledge of algorithms is useful but can always be replaced by someone who "thinks right" and who knows where to look for an existing algorithm.
We are also after people who are in tune with our culture. For TMS, this means they should be first and foremost a team player. If they use too many "I"s instead of "we"s, we have to consider whether they are more comfortable going solo. We have to feel they will fit in with the rest of the family.
Remember that technical people are a bit different from other staff. Typically they'll want plenty of exposure to the new technologies, such as Visual Basic 6, as well as having some fun while they're at it. Technical people tend to hate bureaucracy, administration, and filling out forms-they can also be harder to manage.
Soft skills (such as interpersonal relations, communication skills, and so forth) are also vital. It's important to be presentable, personable, and coherent.
These are some of the things that we think about. What's important to you? Be clear about what you want.