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.
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.
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.
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:
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.
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:
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.
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.
Jul 30, 2007
Nov 6, 2008
Jul 30, 2007
Aug 6, 2007
May 5, 2008
Oct 6, 2007
Nov 6, 2008
AgileTrack Software, LLC
Agile solutions to software problems
Agile solutions to software problems