One of the biggest challenges startup founders face is finding good programmers. This is true for two reasons: first because technical talent is so important, but also because (as a group) programmers tend to differ in attitude and priorities from pure 'entrepreneurs.' Failure to understand these key differences (and account for them in your search for programming talent) will lead to endless frustration. Consult the following time-tested principles to find a capable programmer more quickly:
First and foremost, a programmer needs the technical skills your startup or industry requires. This is all a function of what projects you're working on. For example, a programmer without AJAX experience is not much help to a startup that builds web apps. If your company uses Ruby on Rails, programmers who only know PHP won’t fit the bill (unless they can learn ROR in a relatively short time.)
This may sound obvious, but you aren't just looking for 'a programmer.' Rather, you want someone who has mastered the languages, methodologies or frameworks that your company needs to be successful. If you aren't sure what those are, just look around. Find out what your competitors use and make that your starting point.
As most non-technical entrepreneurs soon discover, not all programmers are cut out for the work environment. There's a big difference between coding for fun on the weekends and working inside the pressure-cooker of a startup. Suddenly, it's not just raw skill that counts: a programmer also needs to meet deadlines, document progress and keep the team informed of what's going on. Venture capitalist Paul Graham hints at this difference in his essay Maker's Schedule, Manager's Schedule.
Here's the truth: the maker's schedule may produce phenomenal code, but the manager's schedule gets the product shipped on time. While coders shouldn't be forced into the manager's schedule wholesale, they do need to be accountable. In your search for programmers, you are looking for people who are not only capable of meeting business expectations, but who actually thrive on doing so. The best way to find such a person is to seek programmers with work experience - that is, those who have coded for money and not just enjoyment.
Agreement on Compensation
For a founder's purposes, programmers can be divided into two categories:
Those who buy into the vision and work for equity
Those who only work for immediate salaries
Neither one is 'wrong' or automatically better than the other. It all depends on the economics of your situation and what path you want to take. A startup flush with cash might decide to pay market salaries for the programmers they want. Meanwhile, a bootstrapped company might prefer someone willing to trade salary today for profits tomorrow. Either can work, but it's critical to establish (with zero confusion) which category a programmer falls into. Someone who really wants a salary may say they'll work for equity, only to start slacking off as time goes by or more lucrative opportunities come up.
It's been said before, but it bears repeating: startups are an 'all in or all out' proposition. Unless the founders and team are absolutely dedicated, the company won’t survive its first brush with disaster. The necessity for undivided commitment applies to programmers, too. If you are counting on someone to literally breathe life into your product and take it from the planning pages to store shelves, do you want that person simultaneously working on various 'side projects' and outside jobs?
Of course not. Not only does it detract from the startup, it also gives them an ever-present out, a way to feel comfortable that 'even if the startup doesn't succeed, at least I have this.' Outside commitments are fine for freelancers, one-off jobs or random projects. When selecting a cornerstone of your technical team, however, time availability is crucially important.
When you think you've found a good programmer, don't immediately hire them. It's very easy to be lulled into a false sense of security by an impressive resume or even a face-to-face interview. But you aren't hiring credentials or interview skills: you need results. And the only way to get results is to make them a requirement of your hiring process. In short, you should run programmers through a 'maze' by giving them a test assignment, something representative of their job duties.
Obviously, this won’t be an engrossing, long-term project. It can take anywhere from twenty minutes to two hours. The idea is just to test a programmer early, not simply for ability but for timeliness, attitude and work ethic, too. The right kind of programmer won’t complain about doing an uncompensated assignment to prove their value; the wrong kind often will.
Hire Slow, Fire Fast
An ounce of prevention is worth a pound of cure. You are much better off defining what kind of programmer you're looking for (and hiring only such people) than hiring the first person available and trying to mold them into what you want. The latter approach, though common, is extremely frustrating and usually consumes much more time than it saves.
For this reason, you should hire slow and fire fast. Take your time in finding the right programmer - do thorough interviews, run them through the maze and feel confident in your decision. But as soon as you feel the relationship isn't working out, let them go. Startups don't have endless time on their hands, and coders who can't or won’t play by your rules can be replaced by ones who will.