Finding great software developers to work for you can be a full time job, and in many companies, it is. Hiring managers are constantly on the lookout for any great developer they can find because even if they can't land him as an employee, that developer will most certainly have colleagues he can recommend. After all, people who are great at what they do tend to travel in the same circles with other great potential employees. It only makes sense to seek out these people because it's well known that in the world of software, there's a huge range of productivity levels between developers.

But something is fundamentally wrong with this concept of searching for great talent. Do companies really need to have a full time employee just searching for other potential employees? The fact is that since the dot com bubble burst, semi-technologically savvy people have been leaving the field in droves. The job market for software developers has gotten extremely competitive as people with somewhat less than desireable abilities are forced to leave the field for other industries because companies simply won't hire them. Shouldn't this mean that the overall level of talent has gone up? Shouldn't the people left be more competent? You would think that would be true. So, what makes it so incredibly difficult to find great talent?

The answer is that insanely great engineers are being paid top dollar to stay put, and simply aren't changing companies or jobs very frequently. When they do, it is only because a better offer literally landed in their laps. When a developer decribes his job as one that "doesn't completely suck", the truth of the matter is he considers it to be a good job and is willing to stick it out, rather than take risks on a new job that has the potential to be better. Chances are good that the unknown job is probably worse. It's not any different than playing blackjack and asking for a hit when you've got more than 11. It's a gamble, and chances are good that you'll end up worse off than you were.

So, how does a company find and attract these great developers? It's no secret that a good developer can be more than 10 times as productive as an average developer, making fewer mistakes and writing more code in the same amount of time. Software is one of the only industries where such a vast differential can exist between the quality and quantity of work produced between two employees. Small companies don't have the capital to shell out $200k for these great developers. Large corporations are cutting costs left and right. They're willing to pay a bit more to the great guys they already have, but their shareholders, management and HR would balk if they started paying top dollar for every great engineer they could get their hands on. There's a simple solution that very few of these companies have stumbled upon and if you haven't figured it out for yourself yet, I'll clue you in.

Stop torturing your employees.

Walk up and down the aisles of the cubicle farm in any large corporation, and you will inevitably find all of the things that are preventing them from getting top notch talent. Cubicle farms are a problem to begin with. Developers need quiet offices, as heavily advocated by Joel Spolsky. It's hard enough to think alone, but the half height cubicles certainly don't help. Dilbert cartoons plastered all over the place should be considered one of two things; 1) a really big clue to you that your environment sucks, or 2) your employees are incredibly happy and laughing at how bad everyone else has it compared to them. Guess which boat you're probably in? Dilbert cartoons simply wouldn't be nearly as funny if it wasn't a rather accurate representation of the company they were posted in.

You find managers who won't shell out a few extra dollars to get the good stuff instead of the garbage hardware from the lowest bidder, and don't get me started on chairs. Personally, I've never worked in a company where the chair was something I'd consider "comfortable". At one job I switched between four different chairs and all of them sucked.

The only job I ever had where outdated equipment wasn't a problem was one where I was an IT administrator about half the time and I got dibs on all new equipment while my hand-me-downs went straight to the sales guys because it was still top of the line. Let me say that again in case you missed it. To the sales guys! The engineers, the ones doing the real work with CAD drawings, circuit simulations, and software testing all got shafted. Face it. These conditions make putting a gun barrel in your mouth a tempting alternative.

Here's a suggestion. Instead of making work the worst part of their day, make your employees happy to work for you. Even better, get them to actually enjoy coming into work. Easier said than done you say? I honestly don't think so, and I also don't think you need to shell out tons of cash on monster salaries to do it. Let me give you another clue. For the vast, vast majority of candidates, money is not the number one motivator when considering a job offer. I've interviewed a few dozen people for jobs over the last few years, and by far the most common questions revolve around what the team dynamics are, whether I enjoy my job or not, equipment budgets, and how receptive management is to new ideas. Only once have I ever been asked a question related to monetary benefits. Just once! I know how bad a sample size that is, but don't bother correcting me. If you think I'm wrong, you're the one in 36 that felt money was more important.

So, knowing how much more productive these people are, I think it's quite clear that the number one goal of Moon River Software should be to make it into an incredible place to work and follow Fog Creek's example. That means comfy chairs for every employee, not just kickbacks for the executives who rode on the backs of the employees. Flexible hours? Of course. Great benefits? Just like a luxury car, great benefits come standard. Smart and empowered employees? Without exception, because smart people like to be around other smart people. They also like to be challenged and own their own projects. And they love to be given the power to get things done.

This also means equipment budgets to alleviate developer headaches. Ever try to run more than one virtual machine with less than 1Gb of RAM or anything less than a dual cpu computer? It sucks. Ever try to convince management to spend $100 for another Gig of RAM? It's ludicrous that you have to even make a half hearted case for it, let alone fill out paperwork and write up business justifications for it! The conversation should go something like this:

Employee: My computer is too slow, I need more RAM for my computer.Manager: How much do you need?Employee: I have 512Mb now, I need at least another 512Mb.Manager: Go pull the case off your machine and tell me what kind you need. Let's see if we can get you up to 2Gb.

The sad part? We know that doesn't happen in most companies. For $200 the manager can make his employee aware of how seriously his problems productivity problems are taken. Instead, the manager says no, content with the fact that he saved the company $200 this afternoon and annoyed the employee with just one more little thing to add to his list of reasons why he hates his job. And don't think for a second he hasn't been keeping track of the things you've said no to. All of them will add up to him quitting in 6 months because his needs aren't taken seriously. Then you'll spend 4 months of salary on the next guy getting him to the point where he's semi-productive in your environment, plus the $5k bounty you paid to the recruiter to find the new guy. Cost effective? I think not.

So this is my plan for the future, straight out of Fog Creek's business plan. I want to make Moon River Software the type of company where top notch people want to work. I want Moon River Software's reputation to be known as a company that takes the needs of the employees seriously so that we don't have to look for developers. Top notch people will seek us out. But as Joel, of Joel on Software says, all of this doesn't do any good if you can't stay in business, make payroll, or pay the bills. For that reason, I won't make purchases that can't be made out of current revenues. That means no loans, no debt, no outside investment that needs to be repaid, etc. In the beginning, this will need to be waived somewhat out of necessity, but only in the couple of months. After all, what good is a great place to work if it doesn't stay in business?

Will this plan work? I certainly think so. It worked for Fog Creek, so why can't it work for any other company?