By Mike Tung, CEO of Diffbot
Energy drinks aren’t a healthy substitute for sleep. But there we were, 16 hours into fixing a problem on the production servers at Diffbot headquarters. Sleep wasn’t an option.
A major company had started pilot testing our information extraction service, and our machines were buckling under the surge of increased workload. With various internal system monitoring alarms going off left and right, our team was frantically hacking away.
We all knew that just a few keystrokes could get us into the clear — but finding the right keystrokes was another issue. The specialists on our team were attacking various aspects of the problem in parallel.
It’s during moments like these that anyone can appreciate how a driven team of extraordinary developers can make or break a project — I know I do, and I also know that they can be hard to find.
Rockstar developers are a strategic asset for a small company, and today’s distributed workforce means you aren’t limited to talent you can find locally.
As GitHub CEO Tom Preston-Werner said at a PandoMonthly event: “Companies that aren’t distributed can’t possibly say that they hire the best people — it doesn’t work that way, the world’s a big place.”
Matt Mullenweg, CEO of WordPress, says 99 percent of the talent in the world is outside the major hubs.
But how can a small team, with limited resources, hire a developer who’s world class? You have to create an environment that will attract world-class talent. From my experience — both running startup teams as well as being a developer — here are my top tips for creating the kind of environment a top developer wants to work in.
Have a clearly defined problem
Like “The Wolf” from Pulp Fiction top developers are natural executors and seek out neat and clearly defined problems.
The key word here is problems, not solutions.
An exceptional developer will find a better way than you to solve a problem — after all, isn’t that why you hired them? — but you need to give him or her the room to do the work.
A job description that has been mapped out to say “this is the problem, we need someone to fix it” will be irresistible to a developer. Like a jigsaw puzzle that has been laid in front of them on a table, they will immediately start wondering how to solve it.
Avoid dictating which tools or technologies should be used to solve the problem. The tools a programmer uses are like a musician’s instrument or an athlete’s gear: they are cultivated and refined over time to suit our preferences.
If your project absolutely requires the use of certain tools, do some homework: study the candidates’ profiles and portfolios to find those who’ve used the same tools to solve similar problems in the past.
Give them a purpose
Beyond monetary incentive, we all like to spend our time doing things that are significant and have meaning.
Your company doesn’t have to be solving world problems, but you should at least be able to explain why your project is important within the context of the organization’s goals.
While you may not think this is essential to do the job, these extra bits of information allow high performers to think of out-of-the-box solutions.
Take a targeted approach to finding developers
Top developers are in demand; we’re picky about the projects we take on. Thus, you should also be selective about the developers you approach.
Consider past work and pitch a project that leverages their background, or brings them closer to their career objectives. The most common reason a project pitch is deleted from my Inbox is that it’s not relevant to my skills and interests — which someone can learn with just a bit of research.
Be organized and in charge of your idea
Talent is attracted to talent. If you want to work with the best, you need to be at the top of your game.
Be clear about your product goals and desired functionality. Don’t ask a developer to “explore” the product space with you or, worse, shift your objectives mid-stream. Top developers have a sixth sense for detecting potential uncertainty; the last thing they want is a drawn out process where they never get paid — especially if it is a fixed price contract.
Take some time to learn the basics of how software development works, so you can speak the language of the developer. Even a simple introductory course will help you better understand, from a technical point of view, what’s possible and what’s harder to accomplish.
Ultimately, top developers like to spend their time doing what they are best at: developing awesome implementations.
Cut down on the time needed in outer stages of the process — narrowing down a fuzzy problem, assessing technical feasibility and skill fit, negotiating the terms (just give us your best rate up front) — and you’ll start to find top developers coming to you.