This coming February, I will have been out in the white collar, post-college workforce for 10 years. As many of those years have been as a contract consultant, I've worked in a LOT of different offices. There have been the fairly small companies like Meritide, some bigger, but that you've still probably never heard of and the big ones like Wells Fargo, 3M and Target.
Along the way, I've worked in standard cubicles, been crammed 2 to a standard cubicle, worked for weeks in Agile "sit together" rooms, and been stacked into wide open spaces at tables like cattle. In every one, I've seen certain trends that I think should be heeded in any environment where people are developing software, particularly those where it's not the primary or dominant function of the company.
Joel Spolksy has written quite a bit about his ideal office design for software developers. However, while he's able to make the software company he runs match that utopia, he acknowledges the harsh reality that those of us who aren't at the top of a company face:
Most software managers know what good office space would be like, and they know they don't have it, and can't have it. Office space seems to be the one thing that nobody can get right and nobody can do anything about. There's a ten year lease, and whenever the company moves the last person anybody asks about how to design the space is the manager of the software team, who finds out what his new veal-fattening pens, uh, cubicle farm is going to be like for the first time on the Monday after the move-in.
In case you can't tell from reading Joel's stuff, he's hugely in favor of (and has lots of evidence for the benefits of) private offices for developers. And, having been hit in the head with darts from a Nerf war while trying to fix a production problem, I see private offices in corporate America as some shimmering oasis at the end of the sand-brown cubicle desert.
On the other side, you've got lots of people, including the Agile advocates, who point to the improved communication that small teams working and sitting together brings. And, having worked where some people effectively lock themselves up and stop responding to email, forcing people to work *around* them instead of with them, I definitely see this side as well.
Of course, as far as I'm concerned, this back and forth really seems to avoid the very idea that there might be ways to balance these 2 extremes out. That's important because both ends of the spectrum have pros and cons associated with them. There's definitely a bit of "Glass Too Big" thinking that I'd like to see applied to this particular problem.
See, the full cycle of tasks and activities involved in building software dictate several different environments:
- Heads-down coding and problem solving. This requires long blocks of uninterrupted time with few to no distractions.
- Tossing out ideas and collaborative problem solving. This requires free and open conversation, whiteboards, etc.
- Phone conversations. This includes people in other areas of the company, outside vendors, etc. as well as personal calls to the doctor, bank, vet, etc.
- Quick conversations to ask other developers and subject matter experts questions.
- Recreation. Whether it's the aforementioned Nerf darts and remote controlled tanks or chatting about fantasy sports or Dancing with the Stars, people seek this "off" time in every office I've ever worked in.
The big problem is that in your standard cubicle farm, you've got anywhere from a few to a few hundred people occupying a space containing cubicles, some conference rooms, executive offices and a lunch room. In that configuration, people try to find ways to accommodate all of those modes of working in some way.
Unfortunately, that usually means that much of the collaborative conversations, the quick questions of other developers and the recreation tend to happen in the middle of the cubicles themselves. That typically results in someone who is trying to do some of the deep thinking work they need to do suggesting that the disruptive conversation be moved to a conference room or to the lunch room.
*That's* a problem because what I've seen in nearly every case where that encounter happens is not the group seeking out a more "appropriate" place for the conversation. Instead, it nearly universally just ends it. That means that if the cost of finding a conference room or heading to the lunch room is imposed on the conversation, that cost proves prohibitive and people just skip it altogether.
To me, that bolsters the case for the Agile side of things because I've gotten lots of critical information in those conversations. Without them, I surely would have made more mistakes and worse ones as well along the way. However, it truly *isn't* fair that those conversations come at the expense of those who are trying to get into "flow".
I've been on both sides too many times to count. And, in nearly every office, the same people who complain about my hallway conversations end up driving me nuts with their 5-times-a-day calls from their kids or the daily 30 minute chat about Lost or Desperate Housewives.
In other words, it's mostly a problem of synchronization. It's just statistically impossible to have everyone in a cubicle farm all in the same mode simultaneously (and would probably be pretty creepy if it happened). So, what surprises me is how seldom I've seen anyone take any sort of compromised approach that works.
Given the amount of chatter that goes on in most of these environments, it's clear that the collaboration and recreation already happen without much assistance. A couple of "war" rooms or project rooms quickly take care of the collaborative problem solving spaces.
That generally leaves the heads-down coding and phone needs unaccounted for unless you're a department head or executive with a private office. I'm sure that most developers would love their own office in corporate environments. However, the pragmatist in me sees that offices are signs of status and are used mostly as rewards for climbing the ladder, not given out based on productivity needs.
However, I've been in several places where there are mini, temporary private offices where you can grab your laptop, plug it in to network and electric resources and shut the door. Many of these are much smaller than even your standard cubicle. They're more like a library carrel: just a small desk, just big enough for your laptop and the phone. However, they provide the one thing you need for achieving flow: separation from the distractions.
When they've been available, I've found that I never need one for the entire duration of even a day or week. And, I've never seen anyone who did. That means that you don't need very many of those spaces in order to provide the needed seclusion for deep thought.
With just that one improvement, most cubicle farms would see a jump in productivity without having to spend the money on private offices for everyone or deal with the political fallout of losing the status of private offices. They already often make attempts to provide space for the collaboration and even for the recreation. Yet, most of those places never seem to acknowledge the other need, except to institute draconian policies trying to keep people quiet among the cubicles.
So, corporate America, can I have a little privacy without having to grab a 12-person conference room that happens to be open?