So you want to hire a great hacker. That’s great! What should you do? Great hackers, are not too concerned with getting an exceptional salary. They probably won’t work for free, but they will often prefer a better job with a smaller pay than an abusive job with a higher pay. But what do they like?
Great Developers like to work on stable, well-proven platforms that are preferably open-source. In today’s world it means either C or C++ using gcc and g++; Perl, Python, Ruby and to a lesser extent PHP; Java and possibly also .NET on Windows 2003 or the open-source and cross-platform Mono. If your platform doesn’t work, has bugs that delving into the source won’t reveal (if the source can be read at all) - they’re not going to be happy.
At a workplace I worked for a few days, I was given a task to automate a buggy Hebrew windows application written using PowerBuilder, which was incredibly quirky. It took me three or four days to write less than a hundred lines of Perl code. I was never so unproductive. After answering the wrong question in an interrogation, I was fired, and was heavily relieved. Such applications should not be tested - they should be rewritten using a more modern and less quirky technology.
Another thing great developers hate is to forced to be consumed by their work. In Israel, some workplaces require at least 9 hours of daily work. How can you work like that, and still work on open-source projects, have a girlfriend or a boyfriend, go to the meetings of social or technical clubs, hang with your friends in coffee shops, restaurants, or pubs, and other activities like that. All of these things are not strictly part of work, but they are what make great developers productive. That’s because coding happens in your mind, not in your editor or IDE, and because the more inspired a developer is, the more happier he is, the better code he writes, and the better ideas he has. A programmer who just works all week, without leisure time is heavily underproductive.
Here’s another thing: in Israel the law mandates at least 12 paid vacation days per year. At my previous workplace, I received 14 paid vacation days? Thank you, Workplace!!
But guess what? Fog Creek software, best known as the company co-owned by Joel Spolsky from the “Joel on Software” site gives people 6 weeks of paid vacation annually. And they’re doing very fine, and people there are super-happy and productive. So, why should I work for you if all I get are 14 stupid days? Get real!
The Joel Test specifically says that you should give your developers the best tools and equipment money can buy - from hardware to software, to office conditions, to food, to location, to everything else. Many workplaces don’t understand that.
In a previous workplace of mine, I was given a recycled computer - it was still fast but its hard-disk was only 40 GB. It was a pain to get some Windows XP virtual machines running there. Another computer we developed on still had a 40 GB hard disk too. We ran out of space there because we had a huge checkout of the Subversion version control system there. And the only hard-disks that our lab had were whopping 80 GB ones, bought because they were the cheapest ones, which probably wouldn’t have been sufficient for too long, either.
The most amazing thing was that the computer’s sole CD drive, was just a CD drive - no CD writing, no DVD reading or writing - a CD drive. It gave me a lot of grief. I had to copy a few DVDs I burned at home on my supervisor’s computer, and copy them over the network, and could not install a Linux distribution from its installation DVD even if I wanted to.
Some people can still happily use old hardware or play with relatively buggy software. But good developers should not be concerned with this. They want a hardware with enough space, RAM, and processing power. They want a screen that they can easily move around (a flat-panel LCD screen). They want good food in the kitchen. They want talkative, interesting and benevolent people to talk with. They want a spacious office. They want Internet connectivity so they can surf the web and search for answers, chat with their friends, ask people on the IRC for help, and contact some people who know more about the software they are using than they do.