Mitch Denny has a good post entitled “Day Programmer vs. Night Programmer”… he makes the case that there are two different types of developers. The “day” programmer who works his/her 8–5 shift and then checks out, versus the “night” programmer who needs more than that from his/her job. The comments to Mitch’s blog post are also insightful, with one person observing that the post won’t likely reach a “day” programmer (who, by definition, isn’t likely to spend time reading up on blogs and staying current in the development world).
My experience is that it boils down to passion for what you do and that’s a very hard thing to find.
I’ve worked with many “day programmers” in the past and am certain that they’re the majority. Most people (in all walks of life) are inherently lazy and want to do the bare minimum required to get through their tasks and collect a paycheck. When the clock strikes 5pm, it’s yabba-dabba-doo right out the door. The notion of spending time outside of those hours to learn new skills, improve the skills they have, or otherwise invest in their abilities is completely foreign. These are people who like the idea of moving ahead in their career, but won’t put in the time and effort to make it happen.
At work, I’ve had some open positions for a while and have a reputation with HR for taking a long time to fill them. I take some ribbing about it, but everyone agrees that “hiring right” is far more important than “hiring fast”. Hiring right means finding those who are passionate about what they do, who are engaged by their job, and who want to excel. As a hiring manager, this is exactly the type of person you want to find and keep. That’s not easy, but you’ll get far better work from a small team of top-notch “night” developers than you will from a legion of average “day” developers — where “better” is defined by speed, quality, reusability, maintenance costs, and other common metrics.
When talking with others about this phenomenon, I use an analogy comparing a small, highly-skilled “special forces” team (self-directed, very focused, and creative when solving problems) to a large squad of recent boot camp graduates (requiring constant management, very specific direction, and not looking to be creative). Interestingly, Mitch refers to this in his blog post when remarking that “day programmers are mostly led [by others] and will seldom lead,” but that “night programmers mostly lead [others]”.
On finding them… At one point, I’d hoped that posting an ad specifically calling for passionate developers would help weed out the “just a job, any job will do” type of submissions. You can still find that ad on this page (second listing at this writing). Unfortunately, while the tone of the ad hits the mark, it doesn’t serve to weed out unqualified applicants. It’s too easy to send an email with an attached resume.
The bigger issue in hiring the “passionate developer” is that these aren’t people who are typically looking for a job. And when the time comes to look around, they’ll usually find a job through word of mouth. Recruiters can sometimes help on this front (at least in terms of weeding out the deluge of resumes that come in from most ads), but a hiring manager will almost always have the best luck with referrals — from other passionate developers.
On keeping them… If the job they have isn’t stirring their passion, or if they’re not feeling rewarded for what they bring to the table, “night programmers” don’t turn into “day programmers”. Instead, they will go someplace else, where they DO feel excited and rewarded. How people feel rewarded is a topic for another day, but the bottom line is that it will vary for everyone. For some, it’s base pay. For others, it’s access to tools and great hardware. For still others, it’s just interesting problems to solve. Usually, it’s some combination of things and knowing what it is for each person on your “special forces” team is absolutely critical to long-term success.
This is an issue I’ve discussed here in the past, but there are some other great bloggers out there that post regularly on hiring, managing, motivating, and inspiring a development team. In addition to Mitch’s blog, check out Christopher Hawkins, Rands in Repose, and Software by Rob (his recent “How to Piss Off Your Software Developers” article is excellent).