15

The company I work for currently has several groups of programmers working in separate rooms pretty close to each other (3-7 people per office)

Recently there has been an idea floating around that focuses on taking down all the walls between all the programmers and putting them all in the same open space (40+ people). That is supposed to help people work together on solving problems.

I'm pretty skeptical on this as I fear this will only make working conditions worse for programmers.

It would be great if some of you could share experience stories on the different types of working environment (few people per office vs. everyone in open cubicle space).

25

See The Joel Test, #8, Do programmers have quiet working conditions? Essentially:

There are extensively documented productivity gains provided by giving knowledge workers space, quiet, and privacy.

If you have the luxury of semi-private rooms, do whatever is needed to keep it. Quietness and 40+ people in the same room do not coexist.

17

I have worked in private office, 2 persons sharing, 6-12 people sharing and totally open (20+). In my experience, more people in a room leads to more distractions. Distraction comes in several forms; phones ringing, non-developers chit-chatting, developers chit-chatting, people walking by behind your back etc.
The argument that it helps communication is rubbish (IMHO). It sure helps unwanted communication, but when you need to talk to someone about a task at hand, you are likely to feel like you're disturbing everyone and refrain from talking at all.

Another often overlooked drawback with more people sharing physical space is the feeling of non-privacy. At least for me, that is a huge productivity loss. We are not packing fish in a factory, we are trying to concentrate and be creative...

8

Many authors including Joel wrote a lot about the value of concentration, or being in 'the zone' as in "a mode of cramming out code" - which it is rather hard to enter and easy to exit. Quoting Joel - during his work, a programmer has to remember a whole bunch of class, variable and function names, and therefore, context-switching is considered harmful. Context-switching is inevitable in open space, so advocates of this idea recommend private rooms with doors that close.

There are, however, situaitons in which this can be good. Scientists and algorithmists I talked to, often report that they come up with greatest ideas not at the time of concentrations and that random input from peers and thinking about many problems, and switching problems in particular helps them produce better results.

During the time of integration of a large system of many components, human-to-human interaction is key to success, and removing any boundaries is crucial. Sometimes I used to move my whole team to a large room for a "war integration" effort.

Another time when open space can be useful is the initial stage of a new project, when people try to collect as many ideas as possible, before the planning stage. It works like continuous brainstorming, where anybody can pick up and develop thoughts of his teammates.

Some managers might seem open space as a management tool, where they can instantly see what everybody is doing. I believe this problem should rather be addressed by good managers, who maintain the workplan, priorities and time estimates continuously.

My conclusion: 1. It is better to avoid open-space for software teams. It might be tempted, but unlikely helpful in long-term. 2. Provide your employees with good managers, who will let them focus on their tasks.

6

I think the consequences of this planned change will show up in this order:

  1. Productivity will drop
  2. Nervousness of the people will rise
  3. Some people will be leaving => Goto 1
4

This comic has a lot to say about the situation.

For people who didn't already know Dilbert, some strip examples that are about the cubicle/open-space part of the engineering subculture:

1

2

3

4

5

6

4

Big office space doesn't help people to work together on solving problems. For 3-7 people rooms you can afford yourself to care what the peers are talking about and join the discussions if you're interested. For 40+ rooms the discussions happening here and there are just likely to be ignored as background noise.

4

I've only really worked in open office environments. In addition to non-developer chit-chat, prying managers, and lack of privacy, I've found that developers will have loud conversations in order to draw attention and have ego-boosting squabbles.

The greater the separation between developers, the less likely they are to pester one another for trivial questions and break one another's trains of thought. If you need to meet about something, organise a meeting or use a less invasive medium like instant messaging and e-mail.

I've also found that managers and non-developers are more apt to invade your space and provide distractions when they see all the developers sitting around being quiet.

It sounds like your companies open cubicle plan will just lead to circumstances much like I've described above.

4

My workplace is a large, hangar-like office with about 80 people sitting in rows of tables all sharing the same space. From my experience, it not only does not help people, it really makes concentration nearly impossible.

It's bad enough having to get your own stuff done when you have a group of people sitting behind you and discussing stuff totally unrelated to your project, being annoyed by 80+ phones ringing randomly, the odd guy with his headphones too loud, etc. Unless the 40 people are working on the same project, it is highly unlikely that it will bring anything good to your working conditions. I personally see the lack of private spaces as a handicap, not an 'innovative', 'group-oriented' or 'agile' workspace condition.

So my advice is, do NOT do it.

3

There will be tradeoffs. The more people you have in one space, the more distractions there will be. At the same time, there is a higher likelihood that people will wander into the discussions.

Personally, I would prefer working in the smaller setting. It's hard to program with a lot of distractions.

3

With 40+ people in the same room there is a big chance that at least a group of programmers have a discussion about something. Not necessarily work related, but some geek topics. In a small room this would distract only a few people, in a large room, 40 people are effected. Sure, chitchat can be moved to the kitchen area, but serious work usually needs to be done around computers. I think that there will be more loss than gain from this move.

1

I'm working in a single room with 7 developers and if only two others come from another and talk to the other two in the room, the chatter is becoming very annoying. Even a discussion between two developers in the room is very distracting, especially if you're somehow interested in the topic, whatever it may be.

Don't take the walls down. 40 people in a single room will be a disaster for productivity, unless everyone is provided a set of headphones isolating from the noise.

1

You start off in an open space and solve the big picture, and then you go in your corner to write code, but you keep coming back to the open space at least once a week to solve the smaller picture. In between the open-space meetings you keep in touch daily with your teammates and the boss.

1

It really depends on the people and the culture.

I'm used to working with a mix about 20 developers and testers in clusters of 4 in each open area, and so long as you're not in the area with the obnoxiously loud guy who transmits his opinions on random matters to the world at large at frequent intervals, the general background noise is dominated by the sound of computer fans. Good acoustic tiling on the ceiling probably doesn't hurt -- even when the office was completely unfurnished and without partitions, the open floors didn't have much echo.

As a technical lead, I find it definitely better to be within line-of-sight of the whole team, especially the more junior members, so I can monitor their body-language, and be able to provide timely assistance when they are showing signs of distress or frustration -- being shut into an office would be more disruptive to my own work if I have to get up and walk around to achieve the same ends.

1

I prefer a semi-pair-programming setting. Where there's 2 programmers per room.

This way you'll stay focused on work. You'll be able to ask your colleague for help and there will be a somewhat more social environment than if you were just sitting by yourself (which makes it more fun).

But most important of all is that you have colleagues that you enjoy working with, otherwise your environment really doesn't matter...

1

The best thing I can suggest for improving communication amongst your team, and between teams, is to set up some sort of group chat like IRC or Skype, with one chat room per project or system component. The wonder of asynchronous communication is that people can throw out questions and ideas as they come to them, and pay attention or ignore the sessions as appropriate.

Even when people are sitting near each other, they often turn to the electronic forms of communication first: 1. because we are often very antisocial by nature and this is less uncomfortable, and 2. many complicated technical programs are much better expressed in writing (especially when one can paste snippets of code back and forth) than verbally.

As others have said, putting everyone in one large room is going to lead to disaster for concentration and productivity levels. Cherish your privacy; it's hard to come by. Also, buy the pointy-haired bosses a few copies of Peopleware: Productive Projects and Teams. It discusses work environments extensively; it's a must-read for project managers.

1

This (last?) year was the 40th anniversary of the cube farm. It was seen as an improvement over the previous methodology of the open office where everyone was bundled into a single space.

I guess that the old adage about history repeating itself is true.

1

I recommend getting noise canceling headphones if you have to work around other people.

Cubicles and/or shared offices are pretty common with small/growing organizations.

Programmers are usually good at adapting to their work environment.

0

Remind them that taking down the walls costs money and what will they get for that money? Less productivity.

0

I see this topic a lot in web forums. Over here in the UK, the norm seems to be open-plan offices with clusters of desks grouped by dividers. In some cases it can be more distracting, but I find that putting on my headphones solves the problem fairly effectively. You just need some discipline when working to know when to pull out of a conversation and get back to work, and when to merely earwig a conversation or block it out so that you don't get involved.

Also, it is handy sometimes to get involved in technical discussions with members of other teams which probably wouldn't happen as often if separate offices were used (or would result in formal meetings which I find to be very time-consuming).

0

If people aren't working on exactly the same problem, they're better off in their own audio-isolated space. Otherwise, it's a distraction. Three people in a room can be productive. Seven people in a room is probably counterproductive if anyone's noisy. Forty people in a room will have detrimental effects unless everyone is very, very quiet.

0

There exists a very specific category of programmers. They are temperamental and enthusiastic, they write code fast. Somebody already guessed that I'm talking about cholerics. Such programmers often use to think loud and they literally scream during their AHA moments. And they have these AHA moments very often. While such programmers are assets for software companies, when being a part of a big team they distract other programmers with their permanent "Eureka!" screams :-)

If you have such programmers in your team, don't touch those walls, because they serve you well.

0

"People! They're the WORST"!....Seinfeld

0

This can work, but only under this precise condition:

  • No one is in the room except people who are working on the same project.

Even then it'll only work if the project is sufficiently engaging and if the people, for the most part, know what they need to do. A good project manager can ensure this.

I've worked on a project where several developers were in the same open space working on the same project, under an excellent project manager, and it worked out very well indeed.

I've also worked at a company where they moved all the developers into a big room, in tiny cubicles, and then held loud meetings in there twice a day for hours at a time. It did not work out well.

0

I work in open cubes right now and even with headphones the constant coughing, weezing, sniffle, farting, and phone calls make it impossible to concentrate sometimes.

One person with a cold can now disturb 40 people. Thats never smart.

0

As a developer and a frequent reader of JoS I always thought that having a private , quiet space to concentrate would be a requirement for good software developement.

As a team leader working with less experienced people I do not think this is the case anymore. I need to help the guys in my team if that is the case(and it is) and to watch out for their (not so clean) coding practices. Granted I could replace these with training and code reviews but if the deadlines are tight there is no time to do the training or code review and corrections afterward so I need to do it as we develop.
For this scenario we need war-rooms for 3-4 people (or the size of the team) and this is what we have right now. That being said I still need to go to the conference room to think of some difficult issue and/or design because people like to be social ... at any cost.
Unfortunately we are also moving to an open plan office by the end of the month (if not sooner) and we will have a 24+ setting for all teams.

I already try to keep the noise down in our war-room and sometimes I manage , but in an open space layout people will have no incentive to be quiet so I can only imagine the results.

So for good experienced developers (5 years + ) and well organized projects private offices should be key , for less experienced and more "Agile" projects (small) war rooms.
I can't see how a 20 + seats open space layout could help productivity.

0

40 programmers in one room, I wouldn't be surprised if that leads to more competition and tension. If some are finished with their work and start doing something distracting enough while the others are still working then that would not be good - people will get frustrated.