[Topic] Software Developer Office Space

Some time ago while faced with an impending move, I took the opportunity to express my point of view regarding ideal work space for myself. The question is that of office space versus cubicle space. I am reposting it here as I think it is still relevant.

Introduction

Office space is a question which businesses deal with regularly. At present, the trend has been towards large open spaces which can be modularized and reconfigured. This exposition will consider the question of an effective working environment in the context of a software developer but could be applied to other "thought workers".

Open space in conjunction with cubicles is the popular solution to office arrangements in businesses today. In a way it seems to be an "in" solution"i.e. everyone else is doing it so we should be doing it too. People planning office layouts like them because there is symmetry and consistency, they can be rearranged, they are relatively cheap, they enforce a low-level status quo, and they can be densely packed. On top of that, it is claimed that they make for a vitalized environment where people are likely to spontaneously collaborate and some sort of mystical synergy will occur. While for certain types of workers the argument of communication may be valid, keep in mind that most of the justification of cubicle farms and open space are aesthetics and cost.

Software Developers

As the focus of this essay is to analyze the office environment of a developer, We should consider the working needs of such a person. Developers are most effective when they are able to enter a state of "flow". Some types of work do not require a mental state of "flow", but "flow" is essential to such problems as engineering, design, writing, software development, etc. "Flow" can be defined as a "condition of deep, nearly meditative involvement. In this state, there is a gentle sense of euphoria, and one is largely unaware of the passage of time." (PeopleWare p.63) Entering a state of "flow" or recovering from interruptions takes time—in the order of 15 minutes or more—though interrupting "flow" can be done instantaneously. It is the working environment which offers the opportunity to enter such an optimal state of work.

The primary need of a developer is an environment that allows concentration. This means distractions must be minimized or eliminated. The most common distractions are caused by other people"telephone, email, instant messages, conversations, music, people walking in the field of peripheral vision, etc. A developer needs a means of eliminating the distractions when approaching a task that requires concentration and "flow". A lack of means to prevent distraction and frequent interruptions may lead to frustration and a serious loss of effectiveness.

A secondary need of developers is that of collaboration. In a study carried out by IBM prior to designing a new facility, it was determined that developers spend a 80% of their time working alone or with only one other person. Only 20% of their time is spent working as a group of three or more people (PeopleWare p.62). For that reason, the environment should allow for two people to collaborate without distracting or interrupting the others. Putting many developers in the same space will not lead to better collaboration, rather it will lead to significantly more interruption and much less "flow" on the difficult problems. For group interaction, a separate space should be created where people can interact without interrupting the others who require concentration.

An effective environment will go a long way toward allowing workers to be productive. A distracting environment simply prevents developers from being in a state of "flow" when performing tasks, resulting in something far less than optimal productivity. A good environment will allow workers to concentrate on such tasks and, in addition to doing better work, more personal satisfaction will be available to the workers as they are able to work well.

The Problem

Returning to the classic cubicle farm environment of many modern offices, consider the effects of such an environment on the developer. Remember the primary reasons for a cubicle farm are cost and appearance. Consider the the numerous problems imposed on developers by open cubicle layouts:

  • Cubicles allow more workers per square foot, which means more noise. More noise means more distraction and interruption, allowing less "flow".
  • According to a "Coding War Games" sample from Peopleware, 54% of workers feel that they have a better workspace at home than at their office (PeopleWare p.55). Who would want to be in a poor working environment longer than necessary when there is a better place they could be?
  • A noisy environment results in more defects in software development as is illustrated by survey at a particular company (PeopleWare p.55). Thus, a poor environment contributes directly to performance problems that have potential to cause disasters, such as missed bugs rolled into production environments.
  • Developers spend 30% of their time on individual tasks which require "flow" (PeopleWare p.62). Constant distraction effectively eliminates up to 30% of their productivity.
  • A trend discovered in the "Coding War Games" give a plain indication that better developers end up in better environments (PeopleWare p.45). If the best people are wanted, they are most likely to come and stay when the environment is high quality. Conversely, when the environment is poor and noisy, the best tend to be missing.
  • According to a metric known as the E-Factor, cost and space savings gained by cubicle environments is negated by increases in the hours needed to complete tasks (PeopleWare p.66). The effect can be that what would have taken 2 hours in a better environment could take 8 hours in a noisier more crowded environment.
  • To allow concentration, developers often resort to headphones and music. Would they do that if the environment allowed concentration? Interestingly, a study found that while people can find solutions with background music, the best solutions are more likely to come when the music constraint isn't there (PeopleWare p.79). For that reason, cubicle farms lead to poorer solutions to problems and thus redesign in the future.
  • A work environment that does not allow effective work becomes a frustration for the workers. When the amount of distraction is frequent and inescapable, morale drops and productivity goes with it. When there's little hope of performing well"being in a state of "flow""it is difficult to put forth a good effort on tasks.

When the primary reason for implementing an open office and cubicle layout is cost and appearance, and the fact that developers receive essentially no benefit from such a layout, and considering the problems, does it really "save" anything? Remember that another claim in favor of cubicle layouts is communication and vitality, but it has already been demonstrated that developers are adversely impacted by such an environment a large percentage of the time.

The Solution

An environment effective for developers allows primarily for concentration and secondarily for collaboration. The need for concentration is met by providing office space which minimizes noise, while also providing collaboration areas where groups can engage in discussion while not distracting others requiring concentration. An intelligent or clever layout can encourage some of the benefits of an open layout, such as group interaction, while allowing private quiet space needed for programming "flow". Low noise and quiet absolutely cannot be achieved without walls that insulate from sound and reach to the ceiling, and doors that can be closed"offices. To rationalize open configurations and say they can also consistently allow developers to achieve the amount of "flow" which produces dazzling results, is to misunderstand the nature of such work. Consider why an office configuration increases performance:

  • There is less noise causing distractions. Software developers can enter a state of "flow" when tackling important tasks.
  • An environment which takes into consideration the workers who must exist in that environment demonstrates that people matter and are worth keeping. People will be happier and more loyal to the company and its success.
  • The number of hours required to do the same work in a low noise environment decreases by orders of magnitude (PeopleWare p.66). Several times as much work can be done in the same amount of time. That translates into real value.
  • There are fewer defects produced by people working in a quiet environment (PeopleWare p.55). Releasing defects can cause unquantifiable damage to the company and its image. A good environment will directly reduce the chance of suffering such damage.
  • Better and more intelligent solutions can be arrived at when the environment is quiet (PeopleWare p.79). The cost of erring in important architectural and design decisions is difficult to quantify. However, considering the cost of making large corrections due to poor design, increasing the chance of doing it right the first time has value.
  • Developers spend 80% of their time working in a way which will suffer from distraction (PeopleWare p.62). An office layout where people can collaborate one-on-one while not distracting others, is compatible with the way software developers actually spend their time.
  • Providing a separate open collaboration area for group effort allows collaboration to be done without disturbing and interrupting others. That means more time can be spent working effectively.
  • Most companies want the best people (though some care more about interchangeable parts). It has been demonstrated that the best people end up in the best environments. Whether the environment creates the most productive workers or the most productive workers go to the best environment is debatable, but the environment definitely results in the best people (PeopleWare p.49).
  • A working environment in which work can get done will inevitably result in high morale and high productivity.

It is difficult to argue against such benefits from a standpoint of effectiveness. Cost is the easiest counter-argument to make. Unfortunately, it is basically impossible to monetarily quantify the benefits of a personal office layout in a way that can be compared to fixed expenses such as an office lease. Intuitively the evidence would suggest huge benefits in productivity for an noise-free environment when compared to a noisy environment. It is likely that the benefits would be comparable to or exceed the difference in the cost of two environments.

It is also important to remember in the cost of a quiet environment that fancy furniture and decoration is not relevant to the worker. It is the function of the environment over the aesthetic form that counts. Existing furniture is reusable in most cases, while cubicle layouts generally require corresponding cubicle furniture.

It is also important to note that in all of this, the notion of individual status being conveyed by a personal office configuration should be considered irrelevant to the programmer environment. Many people like to feel important and office culture therefore grants status symbols to those who need to look important; however, the arguments made here are objective and demonstrate how the office configuration affects software developer performance in particular. Workers with other responsibilities should make their own case for a productive environment and attempt to justify it with concrete evidence. If status is part of that justification, then it should be argued as such.

Conclusion

Office space and configuration directly impacts the performance of workers. Software developers in particular thrive in an environment where they are able to concentrate intensely and thus enter the sublime state of consciousness know as "flow". Providing such an environment increases the value of the individual software developers and the amount of productive work they produce. When deciding upon an appropriate office and layout, it is an opportunity to consider the needs of the workers and do all possible to provide the best environment. It is an investment, and a great environment will undoubtedly provide a great return. Given an outstanding working environment, the best people will come and stay.

—Posted by Adam Lane on Aug 6, 2007

You may post a reply to this topic, but you must be logged in. If you already have an account, you may login now. If you need to create an account, you may also register now.


Blogs

Jul 30, 2007
"Using Inno Setup to Create a Versioned Installer"

Nov 6, 2008
"Impact of Virtualization in IT "

Jul 30, 2007
"Detect Java Installation with Shell Script"

Aug 6, 2007
"Software Developer Office Space"

May 5, 2008
"Coding Standards and Style"

Oct 6, 2007
"Telecommuting and Software Development"

Nov 6, 2008
"Evolution of Virtualization "