views:

4229

answers:

47

We will probably be moving within a year, so we have to make some decisions regarding office layout.

At the moment, our company is basically one big office.

When our developers can't bother to be disturbed at all, we all have our own headphones to mute the outside world.

Still, it seems a lot of people feel that private offices are no doubt the way to go.

From Joel's article Private Offices Redux:

Not every programmer in the world wants to work in a private office. In fact quite a few would tell you unequivocally that they prefer the camaradarie and easy information sharing of an open space.

Don't fall for it. They also want M&Ms for breakfast and a pony. Open space is fun but not productive.

Even though I can understand the benefit on productivity, does having a private office really result in more net productivity?

There seem to be plenty of companies that create wide open spaces and still maintain good productivity. Or so it seems. (I should mention many of them use cubicles, though)

What is your opinion on this? What does your company do? Is there some middle ground in this?

Some more related information on this matter:

+25  A: 

PeopleWare - Bring back the door!

Chris Ballance
Specifically, Peopleware by de Marco and Lister. An excellent book. (Why is there so much bad management, when anybody can buy good books like this?)
David Thornley
Peopleware is my "bible" :)
sonstabo
+49  A: 

Junior engineers (<2 years out of college) should probably share a space with a more senior engineer, simply because they require more supervision than privacy. But once an engineer gets to the point of working independently, silence is golden.

You have to strike the balance between so much isolation that important communication is hampered, and enough silence that concentration can happen. I'd also submit that each engineer requires a space to stake out as his own - I once had only seven feet of linear desk and that was awful (think computer lab).

amo
juniors and seniors getting different treatment? i think that is a mistake.
Tim
By junior I mean the first two years of one's career, in which a lot of supervision and mentoring is required.
amo
I agree with Tim. Treat everyone the same. Communication should never be hampered in this day and age. Email, chat, phone, etc make for better communication.
AboutDev
The only problem I see is, if juniors share a space, but the others are in offices then they are still cut off from their mentors in that way. Otherwise I agree
Simucal
@Simucal - Pairing juniors in an office with a related senior engineer is one solution, presuming there are far fewer juniors (again - 1st and 2nd year graduates) than regular/senior engineers.
amo
I definitely agree with making sure there are open lines of communication. I am a "junior" developer and I am in the same room as a much more experienced guy. I stays quiet since its only us two, and he is always there to consult with.
patricksweeney
Right little gaolers pet you are - 7 feet of linear desk, what I wouldn't bloody give for 7 feet of bloody linear desk . . . they only hung me the right way up yesterday . . . (seriously, I have 5' 6", yes I just measured it)
Binary Worrier
Putting a bunch of chatty junior devs in a room together is one way to guarantee that little will get done.
1800 INFORMATION
+10  A: 

It depends on the individuals, of course. Some people are able to focus better when they have quiet and privacy. Other individuals will be tempted to goof off, and they'll do better when someone can see them surfing the net.

But this is kind of a moot question, because virtually no software companies provide offices for developers any more. Even Joel Spolsky admits that his years of advocating for offices have had little impact.

The last company I worked at where developers had offices was Borland. But their fantastic $120 million headquarters building was far too expensive for the company to maintain. They had to sell it in 2000, and adopt more mainstream accommodations.

Bill Karwin
Absolutely. Developers should get free Range Rovers too, but nobody gives them out anymore either.
Genericrich
During the dot-com heyday, companies like Interwoven *did* give a BMW Z3 convertible as a hiring bonus for some top-level technical talent.
Bill Karwin
+2  A: 

I think it largely depend on the type of work they need to do. I think that for some work it makes very little difference. Sometimes it can be helpful to have open space, with very creative heavy type of work... too much quiet can actually make it harder b/c you can't force creativity. Also if you have a coder working with a new library he may have a lot of very quick questions ("so just what is the name of our dot product function?")

If it's something that requires concentration, such as say coding a physics simulation, or other sort of heavy math, you can bet that any distractions will have a huge cost, not just in longer time to code, but in bug fixing later on.

Now for the subjective part of my answer: I think small coding rooms, with 3 or so programmers to a room work best for you average case. It's a good compromise of not too noisy but still have people nearby to ask quick questions, have occasional interactions, etc.

David Frenkel
For quick questions, there's the company IM chat room, which is less intrusive than a verbal question (if you're in the middle of something, you can easily ignore a chat room). It's those "quick questions" that screw up productivity so often, and they should be discouraged except when mentoring.
womble
+21  A: 

Having been moved from an office into cubicles recently, I can say I prefer the 'open door' office. It worked well for me for five or more years. I could close the door if I needed privacy, or to avoid disturbing neighbours because I was on a con-call (that's a danger in my job, with development offices in 3 US states plus India, though the calls to India are usually taken at home because of the time difference). Here in cubicle land, there are privacy rooms (I'm in one now - about to leave), but it is a nuisance to have to go find them. I definitely prefer the office.

Jonathan Leffler
+32  A: 

Yes, yes, a thousand times yes! Good programming is all about getting into a focused, flowing state of mind and it takes about 15 minutes to get into that state. Distractions are a huge time-waster for something like this and so anything that can be done to remove distractions is a must for programmer productivity.

From the other side of things, I once worked for a startup that had the "progressive" idea of having a completely open-air office, no cubes, no walls, just desks. It was the most difficult environment I've ever been in. At least once an hour there would be a loud conversation, sales pitch (from the sales dept who were across the aisle), or some such thing that would take me completely out of my groove.

The only exception to this is in the case of "extreme programming". I've been able to get a lot done if there are a couple of people over my shoulder commenting and correcting as I go or the other way around. In this case, the communal environment helps to create focus, but this is something that's hard to keep up and is best used when there's a "hard" problem that's going to require multiple eyes and brains running to get through it.

notnot
re: "Extreme" or pair programming: your office should be big enough to allow that, and in cubeland if someone's commenting on your neighbours code, it's distracting you from doing what you should be doing.
womble
I should probably say "group programming" then. I've had success with what are effectively coding brainstorming/headcrunching sessions where multiple people gather around one machine. It's not an everyday occurrence, but it's an example of focus coming out of a group instead of "too many cooks".
notnot
See, currently my office is like this, but because of the department of the company I work in, there is at most 2-3 people in the office at a time (we need 24/7 coverage since Dev is technically only part of my job) But by seperating sales and the CEO to other places we tend to be fairly quiet on our own, so I can concentrate.
Sector Corrupt
+71  A: 

Headphones don't always work as a means of "muting" distractions, so write that off.

There's plenty of research out there (PeopleWare, f.ex., as Chris mentioned) that indicates that private offices help productivity. I also like them as something of a status symbol -- Joel doesn't just talk about the productivity aspects, there's also the hiring advantages of being able to say "and you'll get this private office over here to do your stuff" to prospective hires. This may not seem like such a big thing in the current economic climate, but top developers are always in demand, and productivity differences are larger between top and "average" developers than between cube farm / open plan and offices.

Don't discount the benefits of privacy on mental comfort and well-being. Plenty of people (myself included) get a bit twitchy about being "on display" all day, every day, and that's got to have an effect in lots of little, hard-to-measure ways.

womble
"There's plenty of research out there" - do you have any other sources? It seems people are aware only of Joel and Peopleware.
ya23
If you have a team doing any sort of Agile development, I don't really see how that could work (well) with private offices. Communication threshold should be kept as low as possible. I'm not saying everyone should share an open office (sales people etc); only developers working on the same project.
Jonik
@ya23 I think Fred Brooks talks about it; I'd have to rescan my pile o' literature to find the full list of references.
womble
@Jonik: When people need to communicate, they can IM or get off their arses and walk down the hallway instead of shouting out across the room. There are costs to lowering the barriers to communication, just as there are benefits, and programming doesn't work well with constant interruption.
womble
@womble, too true. I currently have an open office, with my back to everyone, and it's annoying. Not only do people see me on Google (or Slashdot or SO occasionally) and think that I'm not working, but they also feel free to come over and interrupt your 6-levels-deep train of thought! It's a killer!
Pat
A solo, private office may be overkill, but there needs to be a door that closes to cut out noise. Headphones aren't 100%, and music can be just as distracting. I share an office with 2 others, and it strikes a good balance between social and silence. We close the door when it gets too loud.
Richard Levasseur
Seeing offices as a status symbol is precisely the problem. Most companies don't assign offices with regard to whose work will benefit the most from having them.
Kyralessa
+34  A: 

No, IMO. I'm a fan of the 'bullpen' approach, where small teams of up to 6 are given their own large rooms.

These rooms should still have a door that closes and each programmer should have his own partitioned space along the edge of the room that's about as large and private as a traditional cubicle. There would also be space in the middle for team brainstorming sessions. This encourages information sharing but should still limit unnecessary or off-topic interruptions.

Joel Coehoorn
It's also worth mentioning that the usual ultra-productive grad student offices in universities are organized that way.
mdorseif
In the absence of fully private offices, this is the best alternative. IMO. +1
WildJoe
Good point, so long as your room has a door and customers and managers are kept out.
Chris Ballance
The thing I miss in this approach is the ability to use normal speakers to listen to music. Otherwise it's a good compromise, especially when politics get involved from other workers complaining that programmers get offices, why can't they have one too?
Joel Coehoorn
Occasionally me and a few other developers on my team will book a conference room for the day and take laptops in there to work. It really does help to have a door that closes.
Ryan Thames
+14  A: 

You don't even need a measurable net increase in productivity for an office to be useful. If offices make your developers happy, they're more likely to stay (since hardly any companies offer offices anymore) and that's another win for you. The ability to close the door and eliminate not only distractions but people actively competing for your attention, not to mention being able to play your favorite music without having to wear headphones are two big advantages to offices, at least in my opinion.

Kyle Cronin
+1 - working in a poorly designed space has really given me an appreciation for this, not to mention envy.
Steve B.
Yes. A happy developer is a productive developer is a developer who stays with you is a developer you don't have to retrain every year and really learns the nuances of your codebase and your business. And tells all her friends when you have openings -- good developers know other good developers.
Mike Kale
+11  A: 

I'm currently working for a company that recently remodeled their offices, but apparently gave no thought to the layout other than "box, people, done". I sit in the middle of a pod of (loud) salespeople. Probably cuts my productivity by a third or half.

Fully private offices might be a bit of overkill, when I've been in semi-private offices it's been fine. But QUIET is very important.

Steve B.
Sales people are the worst people in the world to sit next to for programmers! There's nothing quite like constant chatter from 5 feet away to break your concentration. I worked for 6 months in a place like that before I just had to leave.
notnot
absolutely right! in the rare cases that somebody asked me about ideal workspaces i always answer "anywhere i can't hear salespeople!". at least twice they heard me, but in both cases it didn't last more than a couple months
Javier
Hell keep us away from support desks as well!
Chris Needham
+3  A: 

Open offices can work very well so long as some effort is invested in establishing a good open office culture - keep your voice down, keep your music to yourself, choose a discreet ring tone, never leave your phone alone on your desk, keep a tidy desk...

If not done property, open offices can be hell. And I don't think cubicles help at all.

Personally, I suspect separate offices require more self discipline than many developers actually possess. I mean, let's be honest - it's far too easy to waste hours on stackoverflow, youtube or suchlike when no-one can see your screen. Spending some time on stackoverflow is good, of course, but all within reason.

I have tons of respect for Joel Spolsky, but beg to differ in this case.

Tor Haugen
i think i'll write a sign warning: "if your phone rings unattended, i'll drop it into a water bucket"
Javier
@Javier: I had that sign. And I used it. @Tor: You can goof off just as easily in open-plan. Proof: this comment. (grin)
womble
+5  A: 

It depends on the team and the culture. I've worked in both places, and in both places I've been highly productive, but it was dependent on the team. With all due props to Spolsky, he's telling you what he's found works in their environment.

But the private office thing is usually about reducing distractions for those who should be heads down. If your office operates in a disturb-as-needed fashion on a day-to-day basis, and your team really needs to not be disturbed in order to be productive, then physical walls are not your issue. It's your culture.

In the end though, if it makes your team productive and happy, do it.

jro
+5  A: 

Bah, it's hard to say, and even harder to measure. My current office is a (very small) bullpen, which can be a bit irritating some times. Normally I think it's better to work in close proximity to your teammates, but it's very hard to concentrate when phone calls and other stuff are going on. In the worst case, there have been up to three simultaneous phone conversations going in three languages. Talk about cross-chatter...

The problem I have with bullpens isn't that, though... with the right office, you can send such people elsewhere to go chat and let everybody else keep working. My problem is that bullpens inevitably lead to a bunch of guys sitting in a circle with headphones on, which always strikes me as being a bit asocial. Granted, you can always get your colleague's attention with a quick shout or wave, but it's still a bit strange from a strictly social perspective. I guess the alternative is that headphones in such situations could be outlawed, but personally, that would drive me nuts even faster than listening to three different languages being spoken at once.

At my last job we all had private offices, which wasn't so bad but certainly puts a bit more distance between colleagues. However, I feel much more focused in my current work environment, which I think is a feel of the "team spirit" kicking in. :) Mock me if you must, but I think that being around other people working is a subconscious motivator to step up one's own game.

Nik Reiman
+2  A: 

I work closely with another developer and we share an office. It's much better than when I worked in a cubicle, since I don't get sucked into other people's conversations as much. We have lots of little meetings as people come in to get some help on a problem. I can hear and see what the other guy is up to easily and he can keep track of what I'm doing.

But it does have downsides. We either have to have private conversations a few feet from the other person or go out to the hallway. If someone stops by for a social visit, the other guy has a harder time ignoring it. Every annoying personal habit is on full display to the other guy. So it would be nice to have the office to myself.

Realistically, it isn't going to happen though because of politics and money. Every site needs to come up with its own compromise between privacy and accessibility. No one answer could possibly fit all situations.

Jon Ericson
+2  A: 

the best job I've ever had was open office - everyone in the company had an open desk, including the founders. I thought I would hate it but it was actually not a bad atmosphere.

That being said, I would still prefer a private office if possible.

Jason
+3  A: 

I have always worked in open spaces, I confess I love it. Ok, some time the noise it a problem, and some time we really need to concentrate because … a lot of reason, we all know them.

So if I were to create a new office I would still create a big open space, with a lot of windows and several, as much as possible, small working cubicles for individual and small groups. It’s good for work and meetings.

I think its import for all the employees in a company to flow around the office and talk to each other. It creates a strong group of people. And also people fell that there are no secrets, no close doors

Jlouro
+7  A: 

Everything else has been said. I think the bullpen approach is horrible. Most people can't concentrate when they hear everyone elses phone calls, farts, coughs, music, and have to smell what the other person is eating for lunch everyday.

I'm the type of person that needs my space to work and communication is handled by walking around the corner, emailing, calling, or having a meeting. Turning over your shoulder and interrupting me (or my type) when we are 90 lines deep into some insane segment of code is enough to get you bit.

Syntax
Perhaps if you programmers at your place of work were interrupted more often they wouldn't with 90 lines-deep insane code.
Tom Hawtin - tackline
+1  A: 

I have worked in several teams in which close proximity and constant communication were considered essential to the success of the project. In my experience teams who can thrive in such an environment are more productive than those who work apart. Of course it is not something that should be proscribed - the team should be free to define their environment as far as possible - but communication should be fostered, not discouraged. If such communication is not useful to your team then you have bigger problems than office furniture.

Jim Arnold
+7  A: 

Why settle for one or the other? If you have the space and resources I think a "Caves and Commons" approach is ideal. You spend the majority of your time developing out in the commons where the whole team can easily collaborate on the tasks at hand, but there are "caves" available when you need to segregate yourself from the group for one reason or another.

You can read Cockburn's description of team communication patterns and how different office layouts leverage (or ignore) them. http://alistair.cockburn.us/ASD+book+extract:+%22Communicating,+cooperating+teams%22

Mike Deck
+1  A: 

+1 for reading peopleware. The relative difference in cost is tiny. The payoff is HUGE. The benefits are:

  • improved productivity
  • lower turnover
  • more attractive to potential recruits/hires

As an example, the difference for space between a cube and an office is maybe $5000 per year. (in an expensive market) That is a tiny fraction of the developer's cost.

Buildout is also a small fraction based on amortization over the useful life of the office space.

The economic arguments against private offices are false.

Tim
A: 

I think it depends on the type of work the person is doing as well as on the personality.

For example, if I'm fixing small bugs or writing some stuff like a user manual I don't care about the environment. If I'm creating a small application where you press the button and get a few rows from the database, I don't care again. Anyone can come up and start chatting to me or to the person who sits next to me and I will be just fine, assigning parameters to a stored procedure call etc. - doing routine work basically.

It is when the task I'm working on becomes complex enough to require my total attention, that's when I start noticing that little destructions distractions (ugh) and they become annoying. So, I think my understanding is: private offices for those who are working on complex tasks, but not so necessary to those who are doing "grunt" work.

Evgeny
+1  A: 

I am an advocate for Offices for a few reasons

  • Quiet work = fewer errors
  • Communication (cell, verbal) can be distracting and counter productive when you are in flow
  • Worker health is less impacted (http://www.joelonsoftware.com/items/2009/01/13.html)
  • Giving everyone an office makes them feel their company cares about them.
  • Lockable doors allows me to bring in expensive toys to jazz up my workspace unlike a cubicle.

As far as productivity is concerned, I feel I am far more productive when people aren't interrupting me every two minutes or when I don't have to hear the sales guys screaming. :-)

AboutDev
+2  A: 

This isn't simply a matter of opinion, there has been research:

"Programmer performance and the effects of the workplace" by Tom DeMarco and Tim Lister

Wedge
A: 

My 2 cents
If you talk about small team, and other place where people can make a cellphone chat.
Then yes open space can help to productivity.

Avram
A: 

I've found that I hate noise and distraction from other people; and I really like privacy. On the other hand, I like talking to people while breaking out of an unproductive "rut". So whatever situation that gives me both of those things, I think I'll like. :)

Paul Nathan
+2  A: 

Open space is the first thing I hate about my job. It reduces the number of my productive hours from potentially eight to two tops. I'm seriously considering going somewhere else just to be able to work without disturbance.

You can try to use either closed headphones or headphones with active noise cancellation. In both cases only lower frequencies (usually below 1 KHz) will be cut out, but talking is in the range 3-8 KHz which headphones happily let through.

So, yes, developers should have private offices, home offices or at least decent working environment not of the kindergarten type if the they are expected to produce quality results. I suppose only recent grads can work in a noisy environment since they are often responsible for the turning of a working environment into a mess.

User
A: 

A local paper here has an article entitled, "Open offices not for everyone," that does say a lot of negatives about the open office idea.

My opinion is that the usefulness of private offices or cubicles depends a little on the energy and attitudes of the co-workers from my view. Sometimes it can be nice to have that conversation that stumbles through some requirements to a nice outcome because one knew the requirements well enough to clarify some points and another did an initial implementation that wasn't so good but did say what would be much better.

Right now, I'm in cubeville though there are some walls coming in as the building gets finished being built that was started a few years ago now. There will be "private rooms" in addition to ad hoc meeting rooms and a variety of different sizes of meeting room that should be quite nice in the end I think. Course we also have a cafeteria that only seats about a third of the employees at any one time so there has to be some variety to when folks take lunch if they brought something from home.

There is some middle ground as one could have an office area of a few cubicles that are sealed off from the rest so that distractions and noises don't travel from one area to another. However, I'm not sure how many places would put something like that in their buildings.

JB King
+2  A: 

I'm working on a 'big bench' at the moment in a totally open-plan office, and to tell the truth it sucks from a productivity standpoint. I'm working at home today just so I can get a critical chunk of work finished without distraction.

Headphones don't completely drown out the noise of phones and chatter (unless you turn them up to hearing loss levels).

Being open I can see all the movement in the office. There's nothing more distracting than seeing movement in your peripheral vision. Humans are designed to notice that and instinctively look (defence mechanism I guess). Fighting that reflex action is just as detrimental as looking away from your work.

Every time someone comes to visit people at the desks near me I have to see and hear them chatter. That can be very annoying, and when they're looking straight at you and their mouth is moving you tend to take off the headphones just to make sure they aren't talking to you. Very distracting.

I'm a very 'private' type of person. I want to know my space is mine. I want to be able to leave stuff on my desk, have my own mug, walls to pin up a few notes and posters and personalise a bit. When you're in a bullpen-type environment you simply can't do that. I don't want to know that when I'm not in the office someone else is sitting at my desk or using my kit; it took a long time to lay out the desk and adjust tweak the chair to be just right for those long sessions and I don't want to have to do it again because someone else messed it up.

In short, developers should have private offices and company policy should be that only that dev is allowed to use that office, period.

Adam Hawes
+2  A: 

The problem with citing Gmail's open office is that Google doesn't offer private offices; we don't know if Gmail actually is more or less productive than they would be with private offices; and finally, if they advertise their open office, they will tend to attract the types of engineers who prefer open offices.

Gmail (or Google) has never actually compared productivity in open versus private offices (using some sort of randomized trial) so they don't actually know which is better. Is the Gmail team productive? Maybe. But who knows how productive they might be if they had private offices? I worked at Google for a good while, and a lot of people complained mightily about having to work in bullpens and about how distracting it is to work in an open environment. People would work from home saying "I actually need to get work done, so I'm staying at home today."

Individuals' preferences also probably have a big role in whether open / private offices work. If you get what makes you happy, you're more likely to be able to put yourself in the zone.

Why not provide both offices and bullpens, and let people self-sort?

Ellen B
A: 

I think caves and commons is ideal, as sometimes you do need to shut out the world and really focus on something.

However a lot of the time we don't need to be that focused and the benefits of sitting near your team mates are very strong. It is easy to get sucked into discussions about all sorts of things which builds comradely and keeps you in the loop. I really think the communication gain from sharing space far outweighs the loss in focus that you get for the majority of the time.

Also in this day an age, with email, IM, irc, voip as well as old fashioned phone calls having a door is not really a barrier to interruption.

Finally if you really do manage to get your own door and shut out the interruptions you have to be very careful about slipping into a silo mentality

Jeremy French
+7  A: 

Open environment vs. Private office? Its opinionated, and varies from developer to developer, but I can generally work in either for the most part.

I'm one of those people who like to have some noise, of the good sort. Maybe a fan blowing, or birds chirping. If its dead silent I go into "wtf mode" for some reason.

When I was a student technician repairing computers at my old high school, it was a very noisy environment, and sometimes it was frustrating listening to everyone talk about World of Warcraft all the time. However, over time you build a tolerance to the noise, and you just have to suck it up and get your work done. It is a different scenario than programming though, as it doesn't take as much concentration.

I have never worked in an office programming before, only from home. What I can tell you is that I would much rather work in an open environment where there are "movements in my peripheral", than have to deal with my 22 year old sister who feels the need to constantly rush into my room and hug me or talk to me every hour, off and on, without any consideration that I was "doing anything important".

Afterall, to some people, its just programming which doesn't require any concentration at all. /sarcasm

Now instant messengers is something I can deal with. Because: you can turn of all notifications and sounds using a feature called 'settings'. I actually find it useful to sometimes break away and help someone with a question they have as it can sometimes help me think of solutions for my own problem. Sometimes to solve something you need to think of something else, or relax a bit. And personally, I have no issues with someone asking me questions constantly, because I was the one asking the questions once, and I still am.

If programmers aren't willing to share information and help other programmers be better programmers (teamwork? technology growth due to shared information?), then I don't think they should be programmers. If programmers don't share information with each other, and there are fewer and fewer knowledgeable programmers out there, we're not the knowledgeable group anymore, we're just a bunch of folks typing on keyboards with a few bright light bulbs here and there.

Now if you work with colleagues who sneak up behind you and try to scare you, or constantly poke you for the heck of it, or hang around your area and do nothing but chat about irrelevant things all the time.. well, that's a different story. I'm all for the 'brute force' effect of rough words get the hell back to work so we can meet our deadline and not lose our jobs.

David Anderson
A: 

Until some months ago we used to sit in offices that we shared with 2 - 3 colleagues. We had an open door policy, and although there is less social control which makes it easier to do non-job related things (like surfing stackoverflow) most of us got a lot of work done, especially when one had to concentrate.

Now we are in a large open space since 4 months, and productivity dropped drastically. There are alway some people having fun, and other getting frustrated because the noise is keeping them from their work, leading to more stress because in the end you didn't get as far as expected. Also some people don't have the discipline to go and meet or have conference calls in the reserved rooms leading to frictions between them and the others who tell them to go take it some place else.

I already know now that if I ever apply for another job it won't be with a firm that has an open space, because it simply doesn't work.

+2  A: 

As a recent graduate I cannot agree more with amo. I am currently based in an open plan office and the benefits for me, and I'm sure other graduates, are fantastic. To have that much experience and expertise around me gives great confidence. I think this is a question that will derive many individual preferences but not many group preferences.

Ellen B makes a good point in giving people the choice of what they want but this may not always be an option.

Whatever decision your company comes to there will be winners and losers.

damien535
+2  A: 

The best arrangement I was ever in was 4 to 5 private offices around an open area with a white board and comfortable chairs. When group discussions were needed we gathered at the white board. But when we were coding we were in our own offices. To me it was the best of both worlds. We had an open space to foster group discussions/learning/problem solving and we had a private office to block out all the unnecessary distractions.

That, to me, is the perfect workspace for a team.
unforgiven3
A: 

Yes, they should.

unforgiven3
+1  A: 

My previous job: cubicle with back wall and salesmen everywhere, making pitches. Headphones? Not helping. The kind of easy coding that I can do with music, I can also do with Youtube in the background, salesmen pitching, dogs barking, birds crapping on my head, and other noisy components of a typical office environment. It's the hard concentration which decides between minutes or days spent on a task -- there I need a separate room.

Also, having a back open where people can watch you from behind without you knowing it -- not helping.

To sum it up, don't wake up the fucking programmer!! Surely, I can sleep while standing up, with a lot of noise and distraction, and with people waking me up every two minutes. But it's not a good sleep.

I am now working from home and it's about 2-3x faster to create a feature on an average, in worst cases I can create stuff that would took me weeks in a couple of nights.

mannicken
A: 

I've worked in both. I prefer the office, but there have been times when a group solution worked better. It depends on the team, and it depends on the corporate culture.

Sadly, most upper management views offices as 'status symbols', and lowly programmers shouldn't be given such things. If your company can afford, and is willing to give you offices, you should seriously consider it, especially since it sounds like your developers already try to create their own "virtual" private offices by using headphones to drown people out, and are not overtly social.

Microsoft Patterns and Practices did an interesting bit a while back. They created bull pens with sliding partitions so they could be reconfigured on demand, the walls were essentially white boards that could be written on, and private offices were available on demand. Essentially, two developers were assigned to an "office" where either could go when they wanted privacy, but they were expected to largely work in the bull pen most of the time. There were also "privacy pods" where people could go to isolate themselves from everyone.

Not sure how it all turned out, but it was VERY cool... i would have loved to have worked there.

Mystere Man
+1  A: 

I worked for a company once that moved from 2/3 programmers pr office to an open environment. Productivity dropped around 25 % (not a scientific measurement, but my observation as their boss). Feedback from the team reflected this, and we wanted to go back to a similar setup as we had earlier.

When I approached the CFO to get things happening the response was "it would not look good". I have read about "the furniture police" in Peopleware, but I never thought I would live to see it :)

Moving to a new position I met the same conditions. In addition the team was stuck at three different locations. My new CEO said "do it" when I asked for funds to move the team to one location, and provide them with single offices, "mingle-space" and new coffee machine :) The team flourished in the new spaces and started to deliver their projects on time :)

sonstabo
A: 

All things being equal, I'd rather have an office. If you are around other serious programmers, there shouldn't be too many distractions. I'd rather be in a cube than in an office with constant user questions and/or meetings.

I don't have an office, but my boss is aware of the drawbacks to interuptions. He usually prefaces a request to meet with, "When you get to a place where you can stop."

Jeff O
+3  A: 

My company has completely open-plan working areas: nobody, even the CEO, has an office. Desks are grouped into pods.

This is great for working on things as a team — deployments, joking around, asking for help. It's not great for coding: there are distractions that even in-ear headphones can't cancel out. (I'm talking about you, horse-laugh woman.)

I've managed just fine for four years, but I can see the downsides as well as the upsides.

I'm fortunate that I can simply go home whenever I want… but there are times I'd love a private office to avoid home distractions as well as workplace distractions.

The best scenario I can imagine would be a team-specific part of the building, with a shared space, shared kitchen, and adjoining private offices. Working on something on your own that needs concentration? Close your door. Not too much concentration needed? Open door. Just waiting for a content push? Take your laptop into the shared space.

This might be costly, but I can dream, can't I? :)

Rich
+1 for horse-laugh woman - think she works with me now.
Ed Schembor
A: 

I've been in office situations, open situations, and multiple programmer per office situations. I like 2 or 3 in a big office best, if you get along with others.

I've seen all kinds of unexpected things happen with different layouts. I've seen team spirit and productivity drop when people left an open area and got their offices.

If I had to guess at what works where, I'd say startups with 5-15 coders should have programmers out in the open. Large, mature companies should put programmers in their own offices.

Nosredna
A: 

I found the chief interruptions in my former role were from "information sharing" - interesting, but not really related to what I was doing at the time, and with a high probability of devolving into talk about Little Big Planet.

I did get a lot out of having a senior engineer right next to me, but if we're talking about developers who know what they're doing, and ideally have access to VMs so that they're not tied to the hardware they're using at the time, might as well give them private offices, and you can get the pair programming/mentoring productivity improvements by scheduling other developers to visit with their laptop.

Merus
+2  A: 

Telecommuting is the way to go. You save a bunch on office space and developers don't waste time commuting. Some people (managers mostly) worry that people won't do enough work unless someone can make sure they are at their desk enough hours per day, but developers should be judged by how much work they get done not by how long the spend doing it. Personally, I work better by getting up and doing something else for a while when I feel my concentration slipping. If I'm at home, I'll get up, watch some TV, go out and hit a few golf balls in the yard, play some music, or whatever. And I get plenty done because I don't mind working from early morning to evening since I don't feel confined to an office all day.

Telecommuting works great, as long as you don't have kids or a wife that require constant attention. It worked well for me earlier in life, but I can't even contemplate it today.
Mark Ransom
@Mark Ransom is right. Unless you have a private space in your house where you can shut the door, you cannot telecommute. And if you don't live alone, unless your private space includes the yard and the television, you might as well be at a corporate office. Personally, I live alone, and half the reason is so that I can do development at home.
Yar
A: 

I once had a nice large cubicle space that I shared with 3 other developers that I got along well with and were mostly quiet. Even so, when I found myself up against a tough problem, I would need to seek out a quiet space to do some heavy thinking.

Mark Ransom
A: 

Yep, I think developers MUST have private offices.

A: 

Interruption is the enemy of productivity, so yes.

Clear thinking is the friend of breakthroughs to make things many degrees simpler.

Productivity + Clear thinking = why didn't we do it that way?

Jas Panesar
A: 

First off, it is the poor workman who blames his tools. Don't ever design a broader policy around the genius who has specific requirements.

Then, you generally design your space to be a compromise between your current employees wants and those of prospective hires who are more senior. Never has a space been perfect for everyone. Anyone who cannot accept where you are and where you're headed is a bad fit socially.

And if that rare gem of an ultra-senior programmer evaluates your space and determines that it doesn't work for him, then you should a) trust him and thank him for his wisdom as you both agree that your company isn't his future home, and b) continue to look for good people who do actually fit your company culture and facilities. There is no shame is disagreeing; shame lies in failing to clarify the agreement adequately in the first place.

pcorcoran