Joel Spolsky is always writing about how companies should treat and offer the best to their developers in order to be able to get the best of them. As a startup, when the time comes and you do need to hire developers, you want the best developers too, correct? How do you get them when a large salary and a "slick" office is not an option?
While I agree with Joel on giving employees the best you can, you don't need private offices, free lunch, etc. to attract great talent. Some people, no matter what you offer them, will never take a job at your start-up. They need managers, water coolers, big tall buildings, office gossip, etc.
But there are a lot of folks -- younger developers, people willing to take a leap of faith -- who will, and understand that all the perks just aren't part of the package. But that's just half the fun of it.
Since you can't afford much, offer what you can:
In my experience, the people who are "genetically flawed" to want the startup lifestyle are the same people who don't need fancy office space or big salaries. They fundamentally understand the startup model and all that goes with it - late nights, hard work, low pay, office space in the back of a coffee shop, etc.
In all honesty, these are the people you WANT to attract. If you're aiming for employees/developers who need or expect the perks of big business life (or, at least, already-successful-startup life), you're going to encounter problems down the road when the expectations are a mismatch with reality.
The sales process for employees at a brand new startup should be - do you want a substantial amount of equity in an idea that you believe in working for people you admire, respect and want to spend lots and lots of hours with. Find those people and you'll be in a much better position long-term.
I've personally been on both sides of this - hiring people who fit this mold and don't, and I can say from experience that when expectations don't match reality, problems arise.
Be transparent, honest, and up-front. Yes, that's redundant.
The best developers have been around the block a few times. We recognize the BS that many startups put out (and, in their defense, believe in).
We want to know:
In my opinion, the best developers are not necessarily the best coders. They can take a big picture view of how the product fits into the company's big picture. You want people who can communicate effectively, understand the market, and can get along with other roles (a rockstar programmer who can't work with the marketing weenies, or who whines about the sales guys just isn't going to work out). Although at the end of the day, they do have to be able to produce solid code -- my point is that that's not the only criterion you have to worry about.
Just 2 quick points:
Although it's still really really hard to find really good developers and hire them for small startups. If you are not a developer yourself it can be even harder to find a good one since your initial start will be your old colleagues and friends who are confident about your skills.
You have a few weapons, although you can't offer a big office and salary.
If the developer is any good, he/show knows full well that his existing employer (especially if it's not a startup) is massively underpaying him, relative to the value the company is actually deriving from his output.
So in a nutshell: if you offer a fair (and in this context, fair means "large") slice of equity, you have a good chance of snagging good people.
First, great developers like to work for (and with) other great developers. If you're not a developer yourself, make sure your co-founder is, and that he's absolutely great.
Second, great developers like to work on interesting problems. If you're building something interesting and hard, learn how to pitch it as such. Keep in mind that if you're building yet another web app with some forms in it, it's not interesting - but then again, you don't need great developers for that either.
If you are just getting started and need a key developer or two who you want to also grow with the company. Offer them a share in the company instead of the big salary. Convince them in your company dream and they will be a great asset to your company and its growth as they also will have a stake in it.
If you are starting out, and cash is tight, then you need to offer something that your competition cannot offer. Offer your developers a vision that they share about how you all are going to change the world. Give them titles and equity (vested over time, of course) and treat them well.
You might not be able to compete with Google for employees, but then again, they cannot offer a lot of equity. Their offer might make more economic sense (a little Google stock can go a long way) but don't assume that your developers will make the rational money choice, since they might value the other things highly.
I think you need to sell what you are - not what you aren't. Have enough respect for the candidate you DO want to give them the skinny. Hopefully YOU believe in your market so you communicate your own enthusiasm and reasoning to the candidate. Why are you doing what you're doing? Then either they are interested or not. If they are interested, then they'll have lots of questions. Learn what you can about them through their questions - you'll learn something about your own pitch when you answer them!
So you have a limited amount of resources and you wonder what it will take to attract the best programmer. That is important, but what you better focus on is, when 50 programmers answer your job ad, how are you going to decide who is the best? Then be open enough during negotiations to find out what that particular programmer wants. Then you can develop the resources and fine-tune your selection process.
Is Fog Creek picking the best programmers or are the best programmers picking Fog Creek? Once you have a reputation, you can attract the best. The key is know what it takes to close the deal. They're all slightly different.
If I interviewed for a startup and they told me they invested a lot of money in offices and equipment, whether or not it was for me or clients, I would question their judgement.
Based on experience, I would say, it should start with the people who are already in the startup, and founders play a very important role.
Great programmers know who are great at programming. Unless they are really desperate for money, they would always choose who and what they work with.
Of course, it's nice to have "perks" money can buy, however, it turns out, the best motivator for great programmers to join, actually money can't buy. I think the culture can be first, the culture to tinker, curiosity, to be different, to set out to disprove stuffs, actually appeal a lot to programmers.
There are also programmers who don't have a lot of stuffs to prove anymore, however, knowing that what they're doing is important and they are important to others, makes a lot of difference.
I recommend you read Drive: The Surprising Truth About What Motivates Us by Daniel Pink. He says there are 3 things that powerfully motivate developers. As a developer, I agree that I want these things in my job over a high salary or fancy office.
You can get his cliff-note's version here. Don't scare people off by constantly talking about how hard everyone works. I have worked my ass off for startups without being asked because I felt a passion for my work and believed in the founder and my co-workers. I have run screaming from startups who confused working crazy hours with having a workable plan. Work to show how passionate you are about your vision and get the developer to believe in your passion. Look for people who share your passion and that you honestly like. If you wouldn't want to have them over for a beer every week don't hire them.
Prefer passion over a stuffed resume. I would rather hire and work with people who aren't super skilled but share the passion than more skilled people who are just in it for the paycheck. I have seen plenty of enthused amateurs make tons of "mistakes" and still ship great products.
Lastly, if your vision is somewhat boring for developers, (B2B SaaS anyone?) reevaluate your approach. "We are going to win in this space because we are using the coolest open source tools coupled with a proven agile process. We are using short sprints, split testing and MVP techniques to iterate quickly. We have some entrenched competitors and we are going to blow right by them." Programmers are strongly drawn to good process and can smell "waterfall in agile clothing" from a mile away.