I have read a lot about how to hire a great developer (programmer, engineer whatever you like to call them) because I have to hire some. And when I need to do something new, I usually do a lot of reading on it first.
There are lots of theories, tools, methods, and events you can attend to hire them. This is a funny article on the subject of hiring a great developer.
I would like to summarize my readings into three tips to bring on really great developers:
Work on a really interesting project
The one thing that really floats a developers boat is working on a project that is cool. So if you are working on a system that has already been done, or that is not sexy – it will be hard to attract & retain your top guys. If you do have a boring product (be honest with yourself) then I would suggest in order to attract/keep a top guy, have them work 50% on your core product and the other 50% on R & D (you SHOULD always be doing R & D in todays fast paced times)
1/3 of their day is spent in the office – create a working environment that they enjoy
If your house was a cubicle in which you never talked to anyone – would you like going home everyday? Your people are working 8-10 hours (1/3 of the day) in your office. Put some time into how this place is laid out and make it a place they want to spend their time. I do not find working alone in a cubicle on the 42nd floor of a banking building to be a fun environment. I would not want to live in a cubicle, so why would I work in one?
It is very true that developers need a solid 4 hours of uninterrupted time to code efficiently, but that does not mean that they should be de-void of human contact. I used to work at a place where the only time my manager talked to me was when I came in to work late. No one wants to work in a place like this.
Have weekly meetings where people get to show off what they are working on. Talk to them informally about the latest tech crunch article that came out. Developers need to step away from their computers and interact with others to grow and produce better work, and the business owner needs to facilitate this and make it a priority, not a nice to have. Make their office environment a great place architecturally and socially
Make them feel like they are a part of something
I was chatting with my cousin in Australia on facebook, who is a great writer and during our chats, we always talk about existential topics. One that stuck out, and is very applicable not only for hiring/retaining top developers, but anyone is: “connection, it all boils down to connection”.
A basic human need, from the dawn of time is that humans want to feel that they are part of an experience that they are sharing with others (one of the primary reasons social networks are a great success, and why tribes were so hot back in the day). Developers are no different. As a manager/business owner, go out of your way to remind them what common connections people in the team share. It could be as simple as the same ice cream flavor, a band, a programming technique or a camping location.