Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

(moved from stackoverflow)

I have found lot of discussions here on about which keyboard, desk, light or colored background is best - but I can't find one addressing the layout of the whole office.

We are a company with about 20 employees moving to a new place, something larger. There are two main development practices going on here with regular combination, the back end people often needing to work with the mobile people to arrange web services. There are about twice as many back end people as mobile people. About half of the back end developers are working on-site at any time and while they are almost never all in the office at once at least 5-10 spaces need to be provided - so most of the time the two groups are about equal.

We have the chance to arrange desks, partitions and possibly even walls to make the space good. There won't be cash for dot-com frills like catering or massages but now's the time to be planning to avoid ending up with a bunch of desks in a long line.

Joel on Software's Bionic Office is an article I've remembered from way back and it has some good ideas but I* (and more importantly the company's owners) are not completely sold on the privacy idea in an environment where we are supposed to be collaborating. This is another great link - The Ultimate Software Development Office Layout - I hadn't even remembered enclosed meeting rooms until reading this.

Does the private office stand in the way of agile development? Is the scrum enough forced contact and if you need to bug someone you should need to get up and knock on their door?

What design layouts can you point to and why would you recommend them?

*I'm not against closed offices at all but would be happy if some other solution can do just as well. If it can't... well, that's what this question is all about.


Two updates - April 2013.

The first move was to an office that was "funky". Basically open but with weird features like one wall carpeted, half the floor carpeted, half the floor polished concrete. Everyone seated on the concrete wanted to be on the carpet. It looked OK but in practise I would recommend not carpeting only half the office, the people who felt the cold really hated it. For standups it was fine - huge whiteboards occupied one wall, plenty of space to talk and break out.

Then I moved to a very crowded place mixed in with another company (same owners) whose function was all about collaboration, design, phone calls, maintenance and installation of physical things. That sucked. Then we moved to new premises and someone decided warehouse/industrial was cool. Hard surfaces everywhere, glass and polished concrete. Developers sharing one big table in the middle of the highest traffic area right next to a kitchenette and dishwasher, not even in an alcove, just out there. Next to the people who spent all day on the phone. It sucked and continued to suck despite bandaids like noise absorbing panels. It sucked for agile because there was no space designed in for the board or for the standup and the acoustic characteristics of the place made hearing any one person above the clatter very difficult - as well as that feeling, during quiet moments, of shouting in a cathedral. Nobody ever listened to the complaints. I quit and so did a few others. Oh, it didn't help that the person who insisted on being "product owner" never bothered to show up.

share|improve this question
1  
Btw, what is the general layout of the place? (How wide, how long?) –  Rook Feb 8 '11 at 21:02
    
Not 100% set - there are a couple of sites under consideration. One is a top floor, L-shaped around a central lift well, glass & balcony around the outside. The other (more likely) is roughly rectangular 1.6 ratio. Area roughly 400m^2, I think 4300 square feet? –  Adam Eberbach Feb 8 '11 at 21:35

4 Answers 4

Joel on Software's Bionic Office is an article I've remembered from way back and it has some good ideas but I (and more importantly the company's owners) are not completely sold on the privacy idea in an environment where we are supposed to be collaborating.

Won't touch the rest of the question, but just this lil' bit. It is important to distinguish privacy and collaboration and the ability to concentrate. A mass of people in one big room will communicate equally well, as people who have their own offices / separate spaces, but will be far less likely be able to concentrate on their own thoughts.

It of course varies from one person to another, but I've always found very difficult to concentrate in a room with a lot of different sounds / where a lot of people are talking.

Most people nowadays know how to use door knobs ;)
Give them separate spaces, no matter how small, as long as they're quiet to do their work in peace. They'll find a way to communicate much more easier than a way to concentrate.

share|improve this answer
    
People won't randomly open doors as doors imply privacy. This is true even in a family setting. Expecting co-workers to behave differently seems to be a bit of a stretch. –  Aaron McIver Feb 8 '11 at 22:41
    
@Aaron - Sorry, I didn't get that. What are you talking about precisely? –  Rook Feb 8 '11 at 23:24
    
@Rook "Most people nowadays know how to use door knobs" Assumed this was around allowing the individuals amongst the team to have a space with a door so they could close it...implying people know how to use the door and will open it as needed....I could have been off base. –  Aaron McIver Feb 8 '11 at 23:54
    
@Aaron - No, no, you are right. I'm still not sure whether we mean the same thing, but what I was trying to say is that "having doors is always better". For example, if a door is open means you can come for whatever reason; door halfopen - come in if you have to (something that can't wait), door closed - don't disturb –  Rook Feb 9 '11 at 0:09
    
unless the building is on fire (and if it is on fire, call the fire department, not me). There are exceptions, but this is a principle which works remarkably well. Walls provide noise dumping (also, which hasn't been considered - walls can be insulated for a LOT better noise dumping - I know a lot on this, and take my word for now, investing in a good isolation can do wonders for the happyness of people working). On the other hand, in an open space, communication is emphasized, –  Rook Feb 9 '11 at 0:09

Closed doors signal something to the mind that the individual can not be interrupted for whatever reason. It's natural based on societies typical use of doors; privacy.

An open floor plan on the other hand tends to lead to an obviously more open approach to communication but can hinder those needing moments of concentration.

What it boils down to is guidelines within your team. No layout will be perfect; nor will any layout realistically help you in developing better software. [I'm certain people will disagree with me here; arguing a given layout will foster better communication that will lead to better software but in working with the same team members in two separate office layouts do to a move did nothing to change the communication tendencies because they are a byproduct of behavior not office layout] The Agile/Scrum approach of addressing issues within the process after each sprint via the retrospective meeting will do more for your team then an office layout ever would.

Provide enough personal space for each team member via cubes, duct tape, coke cans, etc... The personal space should address both visual and physical concerns such as having to look at your neighbor or being cramped in a 3x3 space.

After that start sprinting and realize that the office layout is nothing more then a means to an end and at the end of the day the layout is a piece of the puzzle; not the answer.

share|improve this answer

I had both sides of the story in my carreer, and personally found the landscape thing literally hell. Even the constant movement of other people distracts me, let alone the humming noise of talking, phones that go off, meetings right next to your desk, and the fact that you lack enough daylight and fresh air when sitting in the middle. I like a rather fresh temperature, makes me think better. Not everybody agrees though.

Currently we're three in one office. It's still not perfect, but it does help that my colleague and I can discuss server-related issues while we're working on it. And it saves office space. But honestly, more than three I hope I never have to experience again.

So in summary, I think it's important to look at :

  • modest interruption
  • enough light and air
  • putting closely collaborating people together, but not more than that

YMMV.

share|improve this answer
1  
Happily we have no phones. Mobiles, but people generally don't sit at the desk and have long conversations. –  Adam Eberbach Feb 8 '11 at 21:28

I don't think you need specific seating for agile development per se. The agile part of the office should probably revolve around the communal areas that can be used as necessary. Having good whiteboard and spaces to put up project related information etc.

Another idea is to have some communal "project rooms" where a limited number (up to perhaps 8) of people can work together for a short while while they're dealing with some problem/solution that's highly interdependent. It might be a good idea to schedule some regular communal time in that room just because closeness seems to help disseminate information a lot.

I'm a firm believer that most of the time what programmers really need is an environment where he can concentrate on programming without being interrupted. Sure there are other parts of programming where you want to discuss things with your colleagues etc but for bolts-down hardcore coding it's solitude you want.

Therefore I think developers should have individuals offices. You can try to isolate yourself in an open environment using headphones but that not completaly optimal, and sometimes you need to hear yourself think.

Here's some other ideas I've been thinking about

a) "flow hours" for all developers, 1-3 hours(start out with the number you think you can manage and go from there) hours in the morning and afternoon where it's forbidden to disturb programmers, schedule meetings, IM etc etc. A guideline should also be for programmers to shut down their email, IM, facebook page etc etc during this time. It might seem dictatorial but I think programmers could come to appreciate it.

b) "deep thinking" rooms. One of the benefits from working at home in my experience is when you face a really narly problem you can lie down on the sofa, close your eyes and work it out. At work, no such luck, people will think you're a slacker. Therefore there should be a room, with no insight with a sofa and desk (for plausible deniability that you're not lying on the sofa), with an "occupied" light outside.

When you have to do some really narly coding or think some really deep thought you simply go in there. You can also read programming litterature without feeling guilty :)

c) Fixed "coffebreaks" or lunches, It helps discussions and communal dissemination of information if people have some set times they share with the colleagues. It's not harder than instituting a (non-mandatory) tradition of 15 minutes coffebreak at three o'clock each day.

In general you shouldn't mandate and enforce rules, but direct and facilitate building a good team and working environment. And we all need some direction sometimes.

share|improve this answer
1  
I really don't like the idea of the "fixed" break times. –  FrustratedWithFormsDesigner Feb 8 '11 at 21:34

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.