“We have nothing that is really our own;
we hold everything as a loan.”
― Nicolas Poussin
In the previous installment of this series, I explained why many software companies attract charlatans instead of great developers. I summarized the problem by postulating the first rule of hiring great software developers:
To be able to attract truly great developers, a company has to be truly great itself
Thus, if companies can’t attract (or retain) great software developers they are most likely not great themselves. Great, from a great developer’s point of view, mind you. There are many companies out there who are probably considered “great” by ordinary people (and even investors), but this doesn’t mean they are a great place to be for great software developers.
Today, I want to explain what great developers look for when selecting a company. However, keep in mind that no two great software developers are the same. Still, in my experience, most of them share a common set of expectations.
1. Challenging projects that matter
The main goal of great software developers is working on challenging projects where they can demonstrate and hone their skills. Implementing a mission critical embedded system from scratch (like the mars rover) most likely is. Adapting an accounting system such that it’s in line with the latest tax regulations most likely isn’t. It’s the hallmark of great software developers that they always look for new ways of doing things and learning new techniques and technologies — that’s why they’ve become great, after all. When you look at a great developer, you see a snapshot of a life-long journey towards excellence.
The most attractive projects are projects that have top management or even better media attention. Don’t be fooled by the fact that most great software developers are introverts — as every human being, they still want to feel needed and also like to show off every now and then. This is a manifestation of positive pride: pride in workmanship.
On the perfect project, they would work together with other like-minded great developers, ideally recognized experts in the field from which they can learn and to whom they can look up to.
2. Freedom and the absence of friction
Great software developers are individuals who turned their hobby into profession. They want to be ever productive and spend as much time as possible doing what they love most: writing awesome code. Anything that distracts them from coding is thus abhorred. To them, having to fill in time sheets, write meeting minutes, apply for admin rights, attend regular status meetings is creativity-killing utter waste of time.
Great developers love to freely choose their development tools and when and from where they work. Forcing them to use a particular IDE or to commute daily in order to work on-site in a noisy open-plan office is diametrically opposed to what they look for.
3. Decent pay
Money does matter, even to introverts. But it matters less to great software developers than to average people. More important are challenging projects and a frictionless environment. By paying way-above-average salaries, even mediocre companies may be able to lure in great software developers every now and then. They will, however, always lose them, regardless of whether they stay or leave.
So there you have it: feed them great projects, give them freedom and keep bureaucracy out. Pay them enough that they feel comfortable. The latter is the easiest to achieve. Offering a steady stream of challenging projects that matter and providing a hassle-free environment is hard in the long run, especially for a successful company that grows due to its success. The bigger companies get the more they become driven by fear — fear to lose what they have accumulated in terms of wealth and reputation. They fight this fear by adding more and more creativity-stifling policies to maintain the status quo.
Thus, it’s the sad fate of every successful company to become bureaucratic and boring in the long run. Regardless of whether great software developers stay just for the money (at the expense of losing their greatness), or leave — the second law of hiring great software developers can’t be escaped:
In the long run, great software developers cannot be retained