Let’s face it, in our industry the single biggest asset is people. And yet, there is a whole subculture who tends to undermine the importance of hiring and retaining the best developers, while promoting the idea that programmers are interchangeable, like commodities for a manufacturing plant. Even the simple concept of Human Resources is per se despicable. It’s the people, stupid!
I don’t want to make it necessarily such a big moral fuss, even though it’s quite important. Today I just want to focus on your investment, as a company, in hiring the right people regardless of their experience or job title. My friend Antonio Cangiano has brought to me an ideal occasion when he reported about his experience hiring two interns for the DB2 Team at IBM Toronto Lab. Specifically, I found some of the reactions in the comments very surprising, especially those commenting negatively about the effort that Antonio and his colleagues have put together to hire two interns, starting from about 100 resumes. What is even more depressing is that it seems that some of the comments come from developers themselves and they go along these lines: How can you possibly devote so much time/energy and ultimately money to hire two shoddy interns?
I wanna reply by telling a story. Between the last 5 years in Canada and 7 years before in Italy I have been ultimately responsible for hiring probably a total of 60 or 70 developers, with experience between 0 and 10 years of software development. While not every developer that I have hired was exceptional, most of them were great and I have to say that I have refined the process over the years. In the end, I have regrets only for one case: one of the very few cases where my gut was telling me “no”, I had some doubts (which is already a no-go in my books), but despite that I wanted to give a chance to the guy in front of me, full of energy and unfulfilled promises. Well, I should have listened to my guts. Nevertheless, one bad mistake in 12 years is not too bad, I think.
Three years ago my company wanted to hire one intern. We had a great respect for developers coming from CS at the University of Waterloo, Ontario. In fact, almost all the developers of the team were coming from there. So we thought that we wanted to give a try to their internship program. The only caveat: the internship lasts for 4 months only, so you have to carve the right amount of work, with the right degree of complexity, or the risk is to have an inexperienced developer to babysit all day without getting much out of her/him.
I’ve made very clear with my boss that I wanted to follow the same rigorous process that I used to follow with every other developer. Time after time, that process constantly showed us that in order to hire 3 developers we had to examine at least 100 resumes. That matched my experience in Italy too.
So, after the usual sing and dance we hired D. and we were quite confident that he would have done a good job for us, even under the very limited conditions imposed by such a short term. Nevertheless, D. exceeded our best expectations and he delivered much more. I guess that the feeling had been mutual, because he came back for more terms not only the year after but even two years later, long after I left the company.
A few months ago we had an opening at my company and I thought about D. almost right away. I have been lucky, in terms of timing, because he was about to graduate and finally he could take a fulltime job. D. has worked with us since then and he has demonstrated to be such a great player for the team. Paraphrasing S.R. Hadden character in Contact, I consider D. one of my best long term investments, entirely worth the time/energy and money spent four years ago to hire him.