I don't quite know why I am writing this, but maybe it's because I spent most of 1997 working in a cubicle. In my current (new) job, I work in an office with natural light, comfortable chairs and music. I am experiencing new levels of productivity.
Programming is a combination of art and science. However, some companies stick their programmers into cubicles. Cubicles lack privacy, are usually subjected to shared
(and harsh) lighting, provide cramped working areas and generate an overwhelming OfficeDrone
Programming is an intense activity that requires extended periods of quietness and concentration. Cubicle environments are noisy and distracting.
Programming often involves brainstorming (whiteboards are historically one of the tools of choice). Cubicles do not support large whiteboards. Going from a remotely placed whiteboard to the cubicle workstation requires copying the contents of the whiteboard onto paper. This is time consuming.
Programming often involves reading books. Books are best read with directed and controlled lighting (reading lamp, natural light over the shoulder, etc). Cubicles offer overhead indirect lighting shared by all. Books are also best read in comfortable chairs. Cubicle chairs are ergonomically designed for workstations (typing on a keyboard and looking at a monitor).
Programming in cubes hinders creativity and productivity.
Take your programmers out of cube environments! Give them offices, or better yet, give them environments
conducive to creativity. Ask them what their ideal environment would be. Feed them natural light (or if they want to be cultivated like mushrooms, give them a shadowy area). If the business sells software or the bottom line is directly affected by software, it is in their best interest to do everything to make sure that the producer of the software is given an adequate environment in which to produce.
Artists do not work in cubicles, they work in studios. They need space; they need natural light. They need a muse.
Scientists do not work in cubicles, they work in labs. They need equipment; they need whiteboards. They need inspiration.
Actually, many will rabidly demand real (green) blackboards. Possibly ones hung in pairs from chains for swapping to make use of more vertical space.
Programmers should not work in cubicles...
This rant is brought to you by the letter "P".
Also See the LordOfTheFlies.
The C3 team works in a single room, maybe 24x48. We have 15 glaring fluorescent lights, no carpet, no windows. We get air on Tuesdays and Fridays. We have four tables with three computers each. Every edge of table is wide enough for two developers to sit there. We have a conference table and about 40 linear feet of whiteboard.
When I designed programmer space for Comshare and Oak Tree, I had single-person offices with big windows and glass facing the hall. And doors.
My computing space at home is an Anthro desk overlooking a view of the lake. Carpet, soft lighting, music at the touch of a button.
With one programming pair, I think we'd be more productive at home than here. With a dozen people ... God love us, I think we're better in this big room. Now, a big room with a window? I could go with that. -- RonJeffries
Hmm... Twice during the past few years I've worked on HIGHLY productive teams. In both cases we all worked together in a very large room, with a very large window (that in both cases looked out onto nice views of the beautiful North Carolina piedmont). Sounds like you have something there, Ron...
On a related note... It used to be that ProgrammingIsForNighttime
, but unfortunately it isn't any more. -- ToddCoram
Re whiteboards and copying from them when they are not in your workspace... I want a whiteboard with a URL. -- MichaelFeathers
Probably something like <http://www.m-media.com/softboard/
> or <http://www.teamboard.com
>, hooked up to
a Wiki? (Do an web search for "Electronic Whiteboard" to find other links.)
Someone (I forget who) said, "We put our people in cubicles and then tell them to think outside the box." (sounds like Dilbert to me. -- KatyMulvey
) I'm with you all the way in this, Todd. Years ago in another job in another life, I was sent on missions to an affiliate in the Netherlands. I loved going there. Their offices had large windows and were furnished with real furniture, the likes of which you'd love to have in your home. At the home office in the States, we lived in windowless boxes with bad panelling on the walls. I wondered, why is this so? What my Dutch colleagues told me was that there were regulations that mandated a certain area of window space for each office worker. In other words, just as OSHA protects manufacturing and other workers in their workplaces, so did work regulations extend to office environments. One more reason to admire this small and dynamic nation, in my book. Of course, as I sit typing this, I am inside of a cube, sans natural light, sans any resemblance to the natural world. Quite frankly, it sucks big. I can only hope that whoever designs these spaces is confined to them in eternity. -- DonOlson
We put our people in cubicles and then tell them to think outside the box.
Hmm, cubes are boxes, so that essentially means:
We put our people in boxes and then tell them to think outside the box.
OK, that makes more sense, so we have a box, but we are supposed to leave it to think. Cool. I'll be in the park for the next few hours.
Uhm, if you leave before your shift is up, you're fired.
So, I supposed to think outside the box for this job, but I'm not allowed to leave the box to think. How am I supposed to think outside the box.
Damn it, that what your off time is for.
But my off time is supposed to be for me to do my own thing.
Officer, arrest this bourgeois bastard. He is being unconventional. Thinks he's better than the rest of us.
Now, on which side of the box do I think that..?
In the book, TheSoulOfaNewMachine
(a very cool documentary the engineering milieu, BTW, although it is hardware rather than software) the founder of DataGeneral
corporation is said to have bragged that he could rip all the cubicles out of a large room and turn the place into a manufacturing floor in a week. A Cube makes you feel like a CogInTheWheel?
. -- MichaelFeathers
It sounds like there's a lot of variation. I don't like natural light. I'm sitting here beside a window with the curtain drawn and the electric light on, because I don't like the glare. Microsoft apparently give every programmer his or her own office so that they can work without interruptions, while other people here prefer large, open-plan offices. (Cubicles would be the worst of both worlds?)
I find a handful of things really distracting - a radio is fine, as long as its music rather than dialogue. Static on the radio is intolerable, as is someone else with a walkman. -- DaveHarris
Right now, the air vent above my cube is driving me nuts; it's too loud. I left my headphones at home, so I can't listen to music on the radio or on a CD.
A related book: PeopleWare
From the cartoon called Bizarro
by Dan Piraro, an episode entitled, "Eric Experiences a Disturbing Vision of Veal": A veal calf is looking in on a fellow sitting at a workstation in a cubicle. He says, "We have more in common than you think, Mr. Davis.We both spend our time confined in a little box and sacrifice our lives for the financial gain of others."
A little extreme, perhaps, since no one is holding a gun to my head to do this job (save for economic necessity), but it does strike a nerve, eh? Hence the near-appropriate term for cubes as VealFatteningPens
. -- DonOlson
Can't help but contribute here (maybe this belongs under LordOfTheFlies
I worked at Trilogy development group in the summer of 1998, and for a brief and horrible period I was taken away from my large office with two glass walls overlooking the Austin river valley and put into a strange gymnasium-sized room in our new building, filled with Hayworth cubicles, along with some fellow interns. Unfortunately for our managers, interns tend to play in the office on weekends a bit more than normal employees, and so it happened that we discovered a whole utility closet full of un-mounted white boards. Within a couple of hours we had constructed "forts" around our cubicles by leaning the boards against the openings in the cube walls, and setting boards on top of the cubes. We had also stolen most of the white board markers from other peoples offices. No-one at the company was confrontational enough to tell us to take them down, nor were they passive-aggressive enough to disassemble the forts while we were gone.
We were moved back to our offices about a week later.
This is what I did in 1997:
I stood on my desk and "unscrewed" the fluorescent rods directly above my desk. I then brought in a nice bankers desk lamp, a portable stereo and some really nice headphones. Other developers did the same. We got 1 complaint from a technical writer who shared overhead lighting with a developer cube - it was too dark and depressing for her - we offered to buy her a lamp. I also brought in a notebook computer with an Ethernet card. Whenever the cube got the best of me, I headed for an often empty conference room (with headphones and notebook computer in tow). On one side of the conference room was a huge window looking out toward a patch of trees.
The point of this story is that you can be creative in how you survive in a cube environment. If management complains, well... you have to wonder whether they have best interests (supporting you so you can be productive) in mind.
Even more important than cubicles or large rooms or whatever is, IMHO, diversity. Sometimes, I want to read a book (alone, preferably on a sofa or something like it). Sometimes, I want to work alone (ergonomic workstation, separated). Often, I want to do PairProgramming
(table with lots of space for two persons). A desk and a chair and a desktop simply don't fit that pattern.
For a nice description of how a really productive environment could look like, see LeapingTheAbyss
(Hi Todd, how's life?)
I went from having my own office (with nice desks, chairs, and lots of glass) to programming in a true "studio" environment.
There are walls, but the space is quite open and laid out in a sprawling irregular fashion. There are lots of windows, and they all open
. Most everyone on my team is in talking earshot. The lighting is mostly natural, but partly indirect track lighting. And everyone has headphones for concentration time.
Overall its the best environment for developing that I can imagine. I've been more productive here than anywhere else. And it certainly doesn't hurt to have the Pacific ocean right outside =).
Offices and cubes stifle productivity... offices may promote privacy and concentration, but they have the same negative effect on communication and "synergy" that cubicles do, and I believe that cancels out any privacy benefit. After all, chances are that if your project is progressing nicely, you are working on a close knit team with whom you must be in constant communication..
One interesting thing that we have here at Lucent is a 802.11b wireless LAN deployed throughout the entire facility. Because all the developers have laptops we can roam around (in pairs) and work just about anywhere. I suppose we could even go outside. Very nice if we need to escape from the noisy (open) office space and find a quiet area to write code.
Some years ago we had a programmer who liked to go outside and sit on the grass while reading technical manuals.
(This was in the Los Angeles area, where it's beautiful outside nearly all the time. ;-)
The people in the office across the street called the police.
What did those people think the reader was doing? Sounds like some seriously conformist people out there.
They probably thought he was homeless (non-programmers can't read the subtle cues that differentiate the two groups' appearance). The homeless are a big problem in Los Angeles: because of the nice weather, they don't die off every winter like they do in the Northeast. The people across the street were scared to death he'd follow them home and try to live with them, or something.
As I understand, it is much more encouraged to work in the same space, a big office for the whole team, in XP and PairProgramming
; it serves the affordance for communication and sharing. OTOH, according to SteveMcConnell
, workers who occupy quiet, private
offices tend to perform significantly better than workers who occupy noisy, crowded work bays or cubicles. Isn't this a dilemma?
I suppose that for PairProgramming it would be possible to allow two developers to share an office. Although, the wireless LAN cited above sounds a lot better.
One more thing: If the writers on this page work in cubes, and they don't like it, then why not leave? We all have that prerogative, we are not slaves, and even in the wake of the NasdaqRecorrection? the market is still buoyant enough to support another contractor. -- BryanDollery
I'm lucky enough to work for a company that believes that engineers need offices to really work. The informal policy is to leave doors open to reduce the feeling of isolation and allow for spontaneous conversation from people passing in the hallway, but if you close the door it is a sign that you are trying to concentrate and, unless it's important, no one will disturb you.
However, there are still things that interrupt my flow. The telephone is one of them. I wish I had the 'do not disturb' button to divert calls that was described on RingerTape
. Another is the temperature. While most people are dressed in jeans and a t-shirt and are quite comfortable, some people are feeling warm enough to walk around in shorts and I am freezing to the point that I usually wear additional layers to feel warm. But still by the end of the day, my unprotected hands (wrist-down) are freezing too much for me to concentrate on the code I'm trying to type. I tried gloves, but while you can type with them, you can't achieve the speed you need when you're in the MentalStateCalledFlow
and that's frustrating enough to break the flow.
<rant> An issue that I find particularly irritating is people who insist on taking up window offices and leaving the blinds down all the time. Prestige is not sufficient justification for this (especially as most of these are my peers and it doesn't add prestige in our company's work culture) and I find it quite inconsiderate. Why can't people who prefer to work like owls or moles take the inner offices and leave the window offices to us plants who need natural light to thrive? (I leave corner offices and executive type people out of this as those are a tad more justifiable.) Alas, this is a "personal choice" issue that the managers here cannot or will not tackle for now. </rant>
Awhile back someone with a window cubicle (one of only 2 windows in the programming department) quit and we were hiring someone new. A few people in management were very nice to insist that the senior programmers should be given the window cubicle instead of the new hire, and that the option had to go in order of seniority. But none of us wanted it. Neither did the new hire. That cubicle's still open...
I did also spend some time in a cubicle while the company was acquiring and refurnishing the new building that we've now moved into, so I can relate to a lot of what's been said earlier regarding the cubicle experience. That truly is the worst of both worlds.
I'll attempt to summarize what other people have alluded to above; IMHO, this comes down to two things:
1. Variety or Diversity as CeesDeGroot
says above. This includes the fact that we all have work we need to do in isolation, like email, administrivia, individual coding and design (if any), and so on, which require an office. And we also have work we need to do in groups (or pairs) which require other settings. Both types of work would surely come up even if everyone was PairProgramming
- after all, CodingIsNotOurOnlyJob?
. Hence additional types of environments like areas for BrainStorming
and discussion, FreeWheeledThinking?
, reading, and so on are required and have varying requirements.
2. Customizability. The fact that different people like or dislike different things (as DaveHarris
pointed out earlier, and which many of my experiences confirm), leads us to desire more customizability in our immediate environment. At home you automatically have this customizability, which is probably also why RonJeffries
felt he'd be most productive pair-programming in his home office. Diversity, as I mentioned first, can help partially alleviate this. If there are public office areas that fit my ideal reading or discussion environment, then those custom requirements are met.
But there are usually other requirements that diversity alone cannot tackle. These require a change in the way we design offices. To take my example of temperature above, it would be really nice to have individual temperature controls in each office. I know that part of the problem is that centralized heating and cooling are more cost-efficient, but there are many arguments against that, as well as ways to reduce the impact of that. Lighting is the classic example of something that is automatically customizable if you have individual offices. People here who don't like the overheads get their own torchieres or other lighting and leave the overheads turned off.
Is that a reasonable summary?
Something I want to do someday: Grab 5 - 10 laptops and a wireless hub, and take the team down to the local (or not-so-local) park.
Anyone game in Saskatchewan?
One of the most productive environments I've ever worked in happened by accident. I was working for a startup company located in a hi-tech "incubator" facility at a local technical university. As the company grew, we needed to expand into another office suite, but the adjacent ones were not available. We developers ended up in a separate suite nearby.
The salient features of the environment were:
- Each developer had a RealOffice
- There was plenty of shelf room for books and enough horizontal workspace to spread things out if necessary
- Developers with related tasks were physically near each other
- Developers were physically isolated from management and from other distractions
- Offices were very close to each other [note 1]
- The hallways themselves were isolatable
- Hallways were lined with whiteboards and were usable as meeting space.
The acoustics were such that we could easily leave our office doors open and converse room-to-room with those nearby without having to raise our voices too much. Shutting one's office door was entirely sufficient to shut out nearby conversations and surrounding sound. It became solid unwritten protocol never to interrupt someone whose door was closed unless someone's life depended on it.
I have to say that in my ten-some years as a professional developer, I have never been as comfortable programming than just recently, when I moved in to a quiet little shared flat, and did up my room with a clean corner desk made of glass and a view of the surrounding area. Beauty.
It seems that the people posting here who prefer open environments have a large team of developers working on the same project at the same time. That isn't typical of the way most software development is done, at least not in my experience.
I've done software development at a number of companies, and it has almost always been me alone working on a project while other developers are working on completely different projects with different deliverable dates. I currently work in a sea of cubicles, with each cubicle occupied by a developer working on his or her own project. There are constant interruptions from conversations in other cubicles, or from the non-programmer office dwellers who seem to think their conversations bother nobody as they walk down the hallways between cubicles, or make impromptu meeting rooms out of hallway intersections. The thing that is maddening to me is that people right out of college (or with no college at all) who are in non-development positions are given offices while I sit here with a Master's degree, 20 years of software development experience, and am expected to be just happy as a clam and productive in my 6x8 cubicle. I start work at 6am so that I have at least a couple of hours of uninterrupted concentration time before having to listen to some office dweller's conversation with others about the restaurant she went to last night, then 10 minutes later she decides to go back to her office and shut her door. And that is only the first of many interruptions to the day.