A company with fewer than 50 employees needs great programmers, not just good ones. And once you find them, you have to hold on to them
In a flat world where, as Thomas Friedman points out, globalization has leveled the competitive field, a new idea can have dozens of competitors worldwide within months. With this as a backdrop, the "good enough" employee no longer cuts it, and the premium on great employees is higher than ever.
In fact, while great people are more expensive than good hires, they can be many times more valuable, especially when it comes to engineers. You cannot just throw bodies at a software problem. As Fred Brooks explains in his The Mythical Man-Month: Essays on Software Engineering, adding programmers to a late project only pushes it further behind schedule. Sometimes fewer people truly can accomplish more.
The challenge, of course, is finding those people. At Rapleaf, a company I co-founded that aggregates data on people, we receive thousands of résumés from candidates who've graduated from such schools as MIT, Stanford, Berkeley, and IIT in India. They've worked at places like Microsoft (MSFT), Oracle (ORCL), and eBay (EBAY).
Past Performance Can Predict Future Success
But most are just good—not great—and it's hard to tell from a piece of paper who fits which category. It's easy to look at a résumé and say, "This person is at least good," or "The candidate is not bad." Identifying the great ones is another matter.
A startup needs people who not only can think creatively and process complex concepts quickly, but who are also fun to be around and enjoy working with others. We also look for people who value good ideas even when they come from someone else and who are unafraid to seize opportunities to grow. In a nutshell, we want the person everyone else asks for advice. In college, this is the person every other computer science student wanted on his team. No wonder so many people hire friends and former colleagues. One of the best predictors of future success is past performance.
What about the candidates you haven't had the luxury of knowing previously? Too many startups over-rely on a person's academic background. To my amazement, some new companies seem to hire anyone who went to MIT. They're outsourcing hiring to the underpaid and overworked admissions officer who evaluated the credentials of a 17-year-old. Do you really want to entrust your hiring to a bureaucrat? This is an extremely bad strategy.
Asking the Right Questions
Of course, many people who went to MIT are real rock stars, and MIT graduates may have a better chance of becoming rock stars than people who went to a lesser-known school. But let's face it. Most are only good.
But finding the great ones isn't impossible. In engineering, asking pointed, carefully crafted questions and giving tough exercises can help determine with great accuracy whether a person is really amazing. I avoid such routine questions as "What do you like to do outside of work?" or worse, "Tell me about your greatest failure." It's better to ask a candidate to solve tough problems and engage in other exercises that will help you understand their thought process.
Next time you're talking to an engineering candidate, ask how News Corp,'s (NWS) MySpace stores its Friend Graph. Or get them to show their creative skills by asking, "How would you explain a database to an 8-year-old?"
Avoiding the False Positive
At Rapleaf, we conduct at least four rounds of interviews, weeding out 80% of the remaining candidates at each round. This means we occasionally lose some great people, but we also err on the side of avoiding the dreaded false positive.
Once you find great people, you need to work at keeping them. This, too, is an art.
The thing about great people is that they only want to work with other great people. This leaves you in something of a bind once you recruit a few. From then on, you can only recruit other great people or risk losing the ones you have.
No Substitute for Face-to-Face Interactions
Another tip: Great people feed off of each other in person. You read about companies sending operations offshore and doing development from virtual offices. But a distributed workforce is really hard to manage and real innovation rarely happens in distributed environments. There are certainly exceptions, especially with big open-source projects like Linux, hadoop, and Firefox, which were developed by teams of people working out of various locations. But more traditionally, it is very hard to find a highly innovative team based largely on outsourcing and telecommuting.
Google's (GOOG) early employees all worked in its early Palo Alto (Calif.) office. Facebook's people all work together now in Palo Alto (Facebook even provides a financial incentive for employees to live in its home city). Rapleaf's employees are all together in San Francisco.
Big innovation often comes from massive collaboration and rapid iteration, and that can much more easily happen when people work in close quarters and can see each other. (That means no opaque walls or cubicles in the development center, either).
Creativity Isn't Always Required
Of course, not everyone can aim for great with every hire. If you are Google or Microsoft today, you can get away with mainly nabbing good people. The fact is, they hire so many people, often for jobs that require following directions or coding to spec, that most new hires need only be good enough anyway. Creativity isn't always required in a large company. But back when Google or Microsoft had fewer than 50 people, they couldn't afford to hire anyone but those who were great.
So if you're at a startup whose goal is becoming the next Google, then you'll have to attract, hire, and retain great people.