Creating an Excellent Software Development Environment
by Steve McConnell, Construx CEO
Why care about creating an excellent environment? For years studies have shown that software developers’ physical environments affect their productivity. The physical environment and other less tangible aspects of the environment also affect morale, recruiting, retention, and other contributors to productivity. This article summarizes a discussion I led among software executives that focused on creating an ideal software development environment.
Cubicles vs. Private Offices vs. Open Spaces
Discussion participants' physical environments vary considerably. Cubicle farms are most common. Some have semi-private (i.e., 2-person) offices. One had separators in a “funky” space. Our discussion about cubicles vs. private offices demonstrated a strong division of opinions.Those in favor of cubes pointed to the following factors:
- Facilitates face-to-face communication
- Eliminates doors as barriers to communication
- Facilitates team feeling, including increasing visibility of project plans on walls and so on
- Is a happy medium between private offices and open work bays
In cube environments developers can get needed flow time by establishing a convention that indicates "do not interrupt." Some organizations reported developers who put rows of paper clips across their cube doors; some reported "caution" tape. A near universal convention is that developers in cube environments use stereo headphones to mean "don’t interrupt." Headphones off means "OK to interrupt." One company reported giving each staff member a pair of Bose headphones. It’s also commonly reported that in many cases the developers don’t listen to anything through the headphones – they are simply a way to block out distractions.Those who preferred cube environments pointed out that they needed to be supplemented in several ways:
- Team rooms are needed to support team meetings
- Conference rooms with closeable doors are needed to support collaborative work without distracting people in cubes
- Teams benefit from private offices that developers can occupy on an as-needed basis when they really need to be “headsdown” (i.e., “hoteling”)
There was no consensus about whether short cube walls or tall cube walls were better.Those in favor of private offices pointed to several advantages:
- A closeable door provides the best support for uninterrupted flow time
- Private offices double as mini-conference rooms, which reduces the need for additional conference rooms
- Private offices are a valuable recruiting tool.
The main disadvantage of private offices is that some people feel isolated, i.e., the privacy can become too much of a good thing.
While no consensus was reached about the superiority of private offices or cubes, we found universal agreement that environments comprised of both cubes and privates offices are disasters. Allocating private offices to some people but not others becomes an exercise in demoralization no matter how the allocation is made. Much better to have all cubes than a mixture of both.Physical Elements of an Excellent EnvironmentAside from cubes vs. private offices, physical environments seem to be converging at many companies:
Multiple flat-panel monitors are now near universal. We had widespread agreement that productivity increases dramatically in going from 1 to 2 monitors. Going from 2 to 3 monitors seems to increase productivity a bit more, but not as dramatically as the move from 1 to 2. One company reported benefits from providing developers with very large (32”) monitors. Developer laptops or laptop + desktop are now common. Most staff seem to view having a laptop as a benefit. Ping pong tables, foosball tables, X-Boxes, and other similar recreational equipment are still common, and still commonly used for decompression times in the organizations that provide them. Plenty of meeting space (including informal conversation pit areas) Sound suppression of some kind—doors that close, white noise generator, company provided headphones, etc.Soft Elements of an Excellent Environment Discussion group members suggested numerous "soft" elements of the excellent environment:
- Feeling of trust
- Supports focusing on the technical problem at hand/minimizes distractions
- Provides challenging work
- Provides flexibility (i.e., to go to school concerts, go to doctor appointments, etc.)
- Feeling that the company is supporting your project, and that that support goes all the way to the top
- Provides a distinctive culture; many cultural details aren’t good or bad, but distinctive details (of almost any kind) help attract and retain the people you want and repel the people you don’t
Most companies seem to be undecided about how much telecommuting to allow and also about what circumstances benefit from it. No one was enthusiastic about telecommuting as a “way of life,” though people reported instances of that, for example, when a key staff member had relocated. Advantages of telecommuting according to these discussions seemed scarce:
Reduces commute time, and therefore improves quality of life for the telecommuter Provides for uninterrupted flow time at home when the environment at the office makes achieving a state of flow difficultOur discussions highlighted numerous disadvantages of telecommuting. Telecommuting:
- Inhibits forming a team identity
- Creates obstacles to mentoring
- Reduces communication bandwidth within the team and slows the development pace
- Sometimes provides a less productive work environment, especially if children are at home during telecommuting hours
- Creates many opportunities for abuse
The group expressed some surprisingly strong reservations about how much telecommuters actually worked when they were telecommuting. The discussion seemed to reach a consensus that there are two basic kinds of telecommuters: the highly motivated worker who telecommutes selectively in order to get more work done and the unmotivated slacker who telecommutes in order to avoid supervision. There was a loose consensus that the strongest workers usually want to be at work, because they know that’s where they can get the most work done, which seemed to lead to the suspicion that most people who seek out frequent telecommuting are in the slacker category. Other challenges/issues with telecommuting:
Good IT support is a must (for VPN, WebEx, Email, IM, bridge phone lines, etc.) Still need to provide face-to-face time on a regular basis
The overall consensus seemed to be that, aside from highly selective use of telecommuting by top performers for “heads down” time, telecommuting is at best a break-even proposition for the organizations that allow it.
Why Isn't There More Agreement on These Topics?
Although these discussions showed a few areas of strong agreement (for example, the value of dual monitors), discussions on this topic demonstrated a notable lack of convergence about key environmental attributes including private offices vs. cubes and telecommuting. I suspect that preferences about these options depend on details of the company culture, including personality attributes of the people each company tends to attract. For example, some technical staff prefer a more social approach to programming (witness the rise and fall of pair programming), whereas others prefer a more solitary approach (witness the success of private offices at Microsoft). The key to creating an excellent environment is to be sure that your work environment is synergistic with other elements of your company’s culture. If your company emphasizes collaboration in general, cubes would be a good match for that culture. If your company celebrates the contributions of the solitary genius, your staff might very well feel that a cube environment conflicts with that ethos.
Creating an Excellent Software Development Environment: Published in Software Executive Report: Notes from the Executive Council for Software Excellence, May 2007, pages 1-4