The Number One Developer Productivity Tool
A few years ago, Joel Spolsky wrote a great article for his blog in which he proved that not only is there a huge productivity difference gap between top-performing developers and mediocre developers but goes on to prove that hiring a lot of mediocre developers instead of a few great developers is not a feasible strategy.
At the very end, he mentions something, in passing, that I have believed and have been saying for years. When discussing the working conditions at Fog Creek, his software company, he had this to say.
“Programmers get private offices, free lunch, and work 40 hours a week.”
If you require your developers to work onsite, the number one productivity tool you provide for them is a door that closes (well, 4 walls and a ceiling to go with it). Given control of their environment, developers can reach their peak productivity most days and sustain it. Without control, most developers will have a hard time even getting close to their peak.
The reason is as simple as it is obvious: interruptions. In an open-plan office, two people talking to each other can be enough interruption to derail a programmer and set the project back. Phones ring; people get up and walk around; all of these are enough of a distraction to keep a developer from concentrating on the task at hand.
A developer with an office can turn off Twitter, e-mail, IM and Skype to hunker down and work on something. Programmers can get “in the flow,” “in the zone,” or whatever you call it. They can control their environment and shape it to fit their work habits.
In a cube farm, or worse yet, open rooms, programmers have no control over their environment. Without the privacy that an office affords them, it is difficult to concentrate long enough to write a coherent blog post, much less a module for a complex software system.
Companies are always looking to save money—and cutting back on office space often seems a logical move to them. However, it is a penny-wise, pound-foolish strategy. Placing developers in an interruption-driven environment is a guaranteed way to reduce productivity, increase errors and increase the overall cost of producing software.
“Situation Room” environments do have their place in software development. They are useful when rolling out large complex systems that require instant coordination of a lot people and resources. However, open room environments with several islands of tables that serve as desks is the worst type of environment for any task that takes a great deal of concentration like programming.
If you want to increase your developer productivity, put them in offices. If on the other hand, productivity is not that important, by all means, keep them in cube farms or open rooms.
Photo © 2008 Steve Kelley. Released under a Creative Commons license.