The office is a place to get work done.  Why then, do so many complain they can't get any actual work done while "at work"?  This problem is common among most office bound employees, but I'm most interested in how it affects my field, The Programmer.  Specifically, how does the office space support or hinder the programmers' productivity?

There is no shortage of innovative office spaces out there, each with it's own advantages and disadvantages.  Everything from windowless plain white boxes to funky open concept, natural material spaces that invite the outdoors in and spur the imagination to wander.  When it comes to office space, some characteristics come to mind:

  • comfortable
  • no distractions
  • distractions
  • controlled dimmable light
  • natural light
  • quiet
  • moderate noise, hustle and bustle
  • no interruption
  • interruption and collaboration is great

I believe that all of those are important.  Of course the ones in bold represent the exact opposite of the others, with the exception of being "comfortable".  The reason for this is because my ideal office space depends on what I'm doing.  Programmers are most productive when they can get into "The Zone" where nothing else exists in their mind except what they are working on.  All of the items in bold support the ability to get into "The Zone", while the others usually serve to disrupt or prevent getting into and staying in The Zone.

Comfortable is the easiest item to deal with because it is constant, the need for it doesn't change with the type of work you are doing at that moment.  People always want to be comfortable.  Not being comfortable is a distraction so you want to get this right.  Office temperature and good equipment (desks, chairs and computer hardware) serve the employee and allow productivity.  A worker who is in pain from shoulder fatigue or shivering under a blanket will not do their best work.

The Zone is important for productivity.  Being knocked out of The Zone is costly for the business, because studies show that once a developer drops out of The Zone, it can take at least 10-15 minutes before they can become productive again and get back to where they were at the time of interruption.

Getting back to our office space, lets consider some of our options:

Office Type Promotes Good For The Zone Good For Collaboration
Open Concept distractions, natural light, moderate noise, collaboration, hustle and bustle No Yes
Cubicles reduced distractions, natural light, moderate noise, reduced hustle and bustle A bit better It Depends
Individual Offices no distractions, controllable light, quiet, no interruption Yes No

So, it looks like we can maximize collaboration or The Zone, but we can't have an office space that is best for both.  Personally, I'm not really a fan of cubicles.  I'm not sure that their cost is worth the little bit of privacy and reduction of visual distraction that they provide.

What is the perfect developer office space?  An article posted on TechCrunch talked about Facebook's Mark Zuckerberg hiring famous architect Frank Gehry to design the ultimate space for employees to get their geek on.  Zuckerberg says: 

The idea is to make the perfect engineering space: one giant room that fits thousands of people, all close enough to collaborate together.

Ok, the largest open floor plan in the world sounds cool, and is something I wouldn't mind seeing, but I don't think my concentration level would ever approach The Zone in a room with thousands of people.  Of course, this level of extreme is beyond the scope of most corporations anyway, but the general idea is the same.  How can the business maximize employees and minimize the floor space needed?  Clearly the Open Concept floor plan wins if that is your primary objective.  Also gaining popularity is Agile Software Development which emphasizes collaboration with an open concept work area called a "bullpen".  It seems that the cards are stacked in favour of the Open Concept design.

Now, Zuckerberg is not oblivious to The Zone.  He also said:

It will be the largest open floor plan in the world, but it will also have plenty of private, quiet spaces as well.

If your devs are not chained to their desks because they use laptops and your building has enough space to create shared, private spaces that workers can move to when they want to find The Zone, that may be one option.  If workstations include multiple monitors, then the private spaces should be likewise equipped for this to be a viable option.  Even then, this solution may not be perfect, as the dev may lose access to visual cues they use when at their desk, like post-it notes, whiteboards, corkboards, etc.

This brings me to the first iteration of what my ideal office space might look like.  This assumes the use of Agile Software Development, which arranges its people in cross-functional teams of around 6 or 8 people.

The image above shows a mock-up floor plan that I think would work well for the following reasons: 

  • one team per office/room is cheaper than separate offices for each
  • collaboration is encouraged by placing team members together, with a center table they can roll up to
  • The Zone is supported by short dividers between desks to reduce visual distractions
  • keeping dividers short, collaboration is supported by allowing teammates to simply lean back in their chair to see each other
  • Agile is supported by whiteboards and/or scrum boards for the team along the bottom wall
  • The Zone is supported by a room with a door to reduce non-team related distractions
  • separating teams in different rooms allows each team to find their own rhythm, without disrupting the other, so one could be in The Zone while the other openly discusses a new feature
  • cross-team collaboration can be facilitated with meetings, or ad-hoc discussions around common areas like the lunch room or a games room
  • A company policy of don't knock, don't come in could support team-wide entry into The Zone for scheduled periods of time
  • An open door would invite collaboration with other teams at other times during the day

Now, some people will obviously wonder why headphones are not mentioned as a possible solution to some of these challenges.  For some developers, headphones work well.  For others, not so much.  I personally don't want to destroy my hearing with excessive volume because I am trying to drown out the others in my area.  Plus, headphones do nothing for visual distractions.

I think there are advantages and trade-offs to every office layout but this one provides a decent balance of the two extremes.  Programmers benefit from an environment that allows them to get into The Zone to get the work done, but a collaborative environment is essential for deciding what work to do.