Out of all the things I do in my daily life as CTO, the most important is hiring the right people for my organization. Conventional wisdom dictates that the market is employer-driven these days, but despite the tough economy and the deep recession in the technology industry, good people who fit well into your organization are still difficult to find. If anything, the process has actually gotten much tougher because 1. the number of quality resumes flowing in is much higher, 2. determining fair compensation after the tech boom of a couple of years ago is more art than science, and 3. with constant downward pressure on budgets, hiring decisions must be made quickly lest open positions are downsized before they can even be filled.
Out of all the positions in a technology organization, the most difficult positions to fill are those of the hands-on technical managers -- the software architects, developer leads, systems managers, and development managers. In many ways, these positions are the early launchpads for the CTO position, as they require the unique mix of technical skill, business acumen, and good old fashioned diplomacy that define the CTO job. Successful hands-on technical managers must be comfortable translating business requirements into technical specifications and they must deal with all the necessary ambiguities along the way. As hands-on managers, they must also have a sixth sense for knowing when to stand back and watch the staffer make mistakes that can be learned from, and when to jump in and offer hands-on assistance with a particularly thorny problem.
When I am hiring for a hands-on technical manager, I pay special attention to the following two things.
People and management skills. While this might be obvious (who doesn't want employees with people skills?) we trip up on this one consistently even though it's the most important. Typically, the tricky decision comes down to two hypothetical candidates. One candidate is clearly a superstar developer and has delivered amazing products but has little management experience or skill. The other candidate, while wholly competent in the technical areas your organization requires, is not a superstar coder but has a solid record of working well with others and consistently delivering on promises made. Often the superstar developer desires a title upgrade and career growth but in the end might not want to actually deal with the pesky but essential details of managing people. In these situations, it's easy to be seduced by the raw technical skill of the superstar developer, but you have to remember the critical management side of the position and hire accordingly. In my opinion, the competent technical manager wins over the superstar developer every time. If you're lucky, however, you will have a nonmanagement place for the superstar developer as well because they are just as difficult to find.
Comfort with ambiguity. In these times, nothing is certain; new security issues arise daily, existing budgets can be frozen or cut completely, and new projects arise out of thin air as companies strive to bring in new sources of revenue. In this environment, a hands-on technical manager must realize that every new project will not necessarily begin with a fully realized technical specification. Anyone looking for absolute certainty and clarity in the current environment should probably look for another line of work.
So what about the technical skills? That's obviously important for the hands-on management position, but technical skills exist in relative abundance in the current market. People and management skills and the ability to deal effectively with uncertainty are always in short supply.