Best Seating Arrangement For a Team of Developers?
TekNullOG writes "I was given the job to prepare the logistics involved with moving our office. At the same time my bosses asked me to look into buying new desks for a small team of four developers and to consider if it could benefit the team to sit at a round table. In many offices and departments it increases productivity and makes collaboration easy. However, I am concerned that putting developers around a table could potentially be distracting consequently diminishing productivity by increasing coding errors. What are your thoughts?"
can we tag the article flamebait ?
Where I worked, a lot of groups camped out in conference rooms, but they always needed their own space when they were doing something especially tedious/frustrating.
ask them, what they feel like would work for them?
I bet your programmers would be most efficient with a laptop on the beach, I bet they would even volunteer to work late.
All desks pointing to the wall. No cubicles, no pointy-haired bosses watching you every movement.
And remember: A happy coder is an efficient coder!
It's extremely helpful when programming to ask a colleague to borrow their eyes from time to time, or to help work out a tech design on a nearby whiteboard. Around a circular table keeps the side-by-side, where they can easily wheel over to a neighbor's station to help out.
Jhyrryl
The best arrangement is to lay them out as a fractal a la Sierpinski carpet. Produces a decent tight packing and ensures that you are able to maximize your space. Other options that came to mind are if you have curved desks you could arrange them in a 69 fashion. Or get desks of different dimensions... some square, some straight, a few L-shaped ones. Then you could make the developers arrange their desks daily in a game of office Tetris.
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
This is an awful idea. I've been in that situation, not quite a round table, but 5 guys in the same room. It's a great way to not get shit done, and have a lot of conversations about the latest MMO. At that time it was Everquest. I guess it'd be Starcraft now.
In addition, the foul odors emitted in that room were quite offensive. The farting, sweating, lack of showering...etc.... The best configuration for programmers is individual offices.
...and if you don't code >X lines/day you're lower man on burrito madness day
[insert "3rd world impoverished country willing to do the work for 1/5th the price" of your choice here]?
There are scientific studies that show significantly increased productivity by giving each developer their own office with a door they can close. Interruptions and distractions can torpedo productivity. These are mentioned, for example, in Steve McConnell's book, Rapid Development.
The agile crowd claims that having all the developers together increases productivity because you might overhear a conversation and be able to contribute something of use. In support of this they cite only personal impressions and anecdotal evidence. I know of not a single scientific study that supports their claim.
4 windowless offices with 4 closed doors, all adjacent to each other. If they need to discuss, they can email or walk next door. Most of the "eXtreme Programming" techniques are things that good developers have been doing forever (like refactoring), but team programing is bullshit -- and if you really need to do that, you have a guest chair in every office.
I've abandoned my search for truth; now I'm just looking for some useful delusions.
Imagine you're writing some code and I come in to ask a "real quick" question. "hey may, where the API key for project X stored?" Off the top of your head you might have an answer - but in that 3 second response you've stopped focusing on your project, I've broken your flow, etc. etc. etc.
In a scenario where I can just look up and shout I'm farm more likely to interrupt you than I am to try a quick search through my inbox: you're right there so it's easy.
If you're sitting 2 cubicles over then I have to get up and walk: the whole process might take me 15 seconds which puts the cost slightly higher than doing the search myself.
If I'm in an office now you've got to get up, walk over, knock on the door, maybe two or three times (because I've got headphones on trying not to be disturbed).
For your typical programmer type in a shared work space the giant DJ-style headphones often serve as a polite "do not disturb" sign but there are many who simply don't get the message (management, secretaries, project managers, clients touring the office, etc).
You don't want to increase face-to-face communication between your developers all the time because programming is a solitary activity. You want to minimize the contact your developers have with the outside world when they don't want it, and make it as easy as possible for them to interact with one-another when they absolutely need it.
Fuck your bosses. People do code better in teams-- they just plain think better in teams. But you're going to burn them out if you force them to sit in circles.
My suggestion is: encourage people to work in a central common area. Put a conference table there. Whiteboard. Snacks. Some stupid toy from ThinkGeek. But also give them a "home base" where they can check their email, make phone calls, have a little privacy. They need a place to recharge.
"Coding errors" are not the problem-- those are easy to fix, because they're mostly typos. "Thinking errors" are the real problem. So make sure that their thinking environment is conducive to correct thinking. Shit-- if more developers used their brains before they touched a keyboard, the world would be a better place. When they're done thinking, they can go back to their desks and hammer out the code, because that's what coding should be: brainless hammering.
Had this exact situation. Use a square bull pen arrangement with work surfaces around the inside of the square. Put a single round table in the middle for collaborative meeting/discussions. Put the workstations in the 4 corners of the square facing outwards. The programmers get their privacy but are still working in a group. (entrance to the area is through an opening in one side of the square.)
Seriously.. a well designed cube farm is pretty nice..
Monitors should be positioned such that someone walking by can't see what's on the screen..
As a programmer.. I hate all this "open concept" stuff. If I want to talk to someone.. I can get up and go visit them. Little pow wows around someones cubicle are insanely common where I work.. and very effective. Anything bigger than 3 or 4 people.. go find an empty room somewhere...
I've been working at this place programming exclusively for a few years now, and I don't like the open floorplan.
The computer builders across the room dropping a case, asking about overclock settings don't bother me. The tech support talking, loosely separated by short cube walls, doesn't bother me. But my obnoxious coworker that drums on the desk, his earphones that are so loud I can make out everything he listens to, his extended and loud complaining when something doesn't go quite right, all constantly break my concentration. Add onto that the openness feeling and I don't have a cozy spot to call just my own.
Combine that with the _too_ casual, cooperative stance and he asks me questions on stupid syntax errors he could fix in a few seconds and what I think about how he's doing something. While good, they're excessive, and having cube walls to walk around as opposed to talking at his monitor seeking my attention might prevent some of the more menial stuff. Though maybe some of the less menial stuff, too.
In general, I find it _very_ hard to work without my own cube, and my "zone time" is drastically reduced compared to my internship years ago where I had my own cubicle.
Open floor plan for those that need to concentrate deeply is a NO GO for me. The round table is out. What happens when someone needs to talk to someone two people over? Will they get up? or will the two people talk into alternating ears of the poor sob in between them? That wreaks hell on my brain.
Personal space, too. I use about half arm's reach -- cups, chips, box of dry cereal, cell phones, netbook, books, tea set, hard drives, barcode scanner, switches, KVM, .... how much room are you going to allow to sprawl out? Is absolutely everyone able to control, or OK with, encroachment?
...on the people in question. My favorite setup is individual offices for day to day work, but with space for collaboration when the situation calls for it. (For example, we had a push to get a bunch of items fixed before a big release, so 3 of us got together in one big office and worked down the list.) Good, dedicated coders will do the job anywhere, but having an arrangement that facilitates communication can help. For it to work, though, you need guys (or ladies) who can get along well together and will focus on work, rather than random chat. That same arrangement makes it easier to goof off, too, and you could well find that instead of sharing code, they're sharing the latest YouTube videos. It also eliminates privacy, so if any of them have to take phone calls on a regular basis, you need to consider equipping them with laptops and making a "break-in" room available for calls and teleconferences. It can also be rough on concentration, since some people can't tolerate chatter when trying to focus. Whatever you do, don't create an environment where the boss is constantly looking over everyone's shoulder. That just raises the stress level, which will definitely increase errors.
Offices with doors that close. Big whiteboard in each office. Couple of guest chairs. Two developers to each office. Desks on opposite sides of room so they aren't stuck elbow to elbow, but still can swivel and wheel over to the other.
I worked at one company that did this in their LA branch office. I was in NYC but flew out there a few times a year. Most productive setup I've seen. Physical layout offers quiet, respect for technologists, room for collaboration whether pair programming, "other set of eyes", or effective (as in small =5 people) meetings, prevention of "mismanagement by walking around".
Nobody will do it nowadays. Those offices are given to clueless middle managers instead.
as in, not placing people's backs facing empty spaces, doors, windows etc. these all disturb the psyche in a subconscious level because they will feel unsafe little by little, even if they dont feel it. (ie remnant of human species' instincts while we were living in wild - defense against predators)
facing someone else, seeing someone else's face also distracts. leave aside the potential annoyance they can create with their movements, mimics, music and whatnot.
you should pick the most comfortable and ergonomic chairs and monitor-desk setup, so that they can work longer without getting tired. research on computer usage ergonomy a bit on the net.
there is no need for 'face to face' collaboration. you will have either instant messengers, or some kind of intranet messenger already handy. or a chat environment. its easier to attend a chat conference than having to listen to other people. while 3 people is doing a live conference, 1 talks, the rest listen, not able to do anything else. but with chat or im, all can drop their opinion, respond to others' and multitask their work in the meantime. you do not need to wait someone else to vocalize a thought by long sentences.
blah blah blah.
Yes the fad are Agile teams that all sit next to one another... but people tend to forget you will be down 1 FTE regularly because you all sneeze and cough on each other. Sickness runs rampant in those rooms... particularly if you have someone who is not hygienic in the group.
Jesus God stop trying stupid shit just leave me in peace you fucks.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
Sitting everyone round a table sounds like it could get a bit cramped. Development tends to generate loads of notebooks, post-its, design scribbles etc. Put those on a round table and you're going to get people running into each others mess.
Personally, I like to be in an open-ish (not too big, definitely not a cube) space with an area that's clearly identifiable as my desk. A nice cask nearby also helps but I havent been able to sell the idea to management.
"Welcome to our world. We are the wasted youth. And we are the future too." Yes, I know these are stupid lyrics.
Four L-shaped desks arranged to form a cross with modest height dividers (about eye level when seated) that can double as pinboards along the joins. The height of the dividers needs to be tall enough that someone can get their head down and not be distracted when they need to, but low enough so they can look over to talk without having to stand up. Optionally provide a shelf that clips onto the dividers for additional surface space and/or a small magnetic whiteboard that will also hang from the dividers on a person by person basis.
UNIX? They're not even circumcised! Savages!
Not quite related to layout, but this is rather about the desk setup: do everyone a favor and get adjustable height desks that allow you to use traditionally (seated), or raise up and use standing up. Developers sit all day, and as a result, their glutes sustain a lot of damage and atrophy. Basically they're in a static stretch all day long, which is not good. Standing workstations are great, but sometimes people will want to sit, so I think adjustable height is the way to go. Better for your backs, and you'll save your asses. Literally.
I never understood why developers, which mostly do a job that requires a great deal of concentration, are usually stuck in the most distracting locations. While the excel/outlook jockey's are in offices.
Arthurian setup would suck for high functioning autistics. Sounds like a job for Temple Grandin.
I once worked in a somewhat similar arrangement. We had L-shaped desks in a cross arrangement. Each person sat in one of the inside corners of the cross.
Pros:
- It was easy to talk to each other.
Cons:
- It was harder to look at the person across from you over the monitors
- If you ever wanted to show each other your code, one of you had to walk around the desk or roll around it in your chair.
That last one was the dealbreaker. It might be easier on a round table (but then each would have very little room for their stuff), but you'd have the same problem to talk to someone who is not right next to you: you'd still have to walk around your neighbors.
I'm currently working in another department with the same desks, but arranged as the outside of the square. Takes up about the same space but it is much easier to roll over to someone's desk and work with them. You can take your laptop if you want (and wifi permitting).
And let's face it, it's just as easy to turn around to talk to someone behind you as to someone next to you. And if they are wearing headphones they won't hear you either way. Add rolling chairs and anything but carpet and it's just as easy to take something to show them too. Even without the corner desks, you can set them up in two rows back to back and it still works.
You could add a small central table for quick meetings, but I prefer the back to back arrangement any day.
(And people tend not to slack off as much because someone might be looking over their shoulder :) )
in their own offices. or if you don't have the resources for individual offices, individual cubicles with some "large"* informal meeting are nearby.
*big enough to hold the entire team, plus anyone they might be pulling in on something.
and for the love of god[des[es]|s] please give them a quality keyboard to type on, with quality being defined as whatever they want.
Snowden and Manning are heroes.
The best arrangement I've been in is with 4 devs in a group, but each dev has 3 tables. Front, left, and right. Cube wall blocks in group of four with back to each other, but it's easy to turn around and convers, plus we had a hell of a lot of room to spread our work out on. I suppose a desktop software developer could get by with less room, since having bench equipment (oscopes, signal generators, etc) at hand aren't really helpful, but I'm sure you could find a use for the space...
And having our backs to each other had the added effect of keeping us honest... you don't want your co-workers to see you're always on slashdot...
There is a whole book, "Peopleware" by Tom DeMarco and some other guy, about shit like this. The most important thing developers need is peace and quiet.
This comment gives the answer pretty well. Put two people in each office. Not more. Not less. Any more than two in an office and the conversation and distractions kill productivity. One person in office = thumb twiddling and pr0n surfing. Zero people in office = empty room, nothing happens. You want exactly two. Heaven.
Means that when I want to look at the screen of my coworker across from me, I have to run around half the table to see it... Sitting in your typical square cubicle-type style means I can seem me peer's screen easily reducing potential wasted time. Plus it makes them less likely to surf for porn knowing there's potentially 3 people looking over their back =)
Bye!
There were some studies years ago about round rooms and employees going psychotic. Humans seem to need corners and barriers. I would suggest a large square or rectangular table. Also when you use a round table over weight employees tend to be pushed back as the position causes them to be stabbed in the gut. Perhaps a square with an opening in the center for cables to drop down and lines to feed in might be best.
I am a developer, and I work under these exact conditions. We have two banks of desks grouped together in the middle of a open room. It is very conducive to collaboration, and it can get noisy when people get going. There is some group goofing off that occurs, but no more so than any other work arrangement I have seen. Most of us have some headphones, and so getting some quiet to focus inst really a problem.
HA! I just wasted some of your bandwidth with a frivolous sig!
If possible, why not test a few temporary configurations in your current space and see what they like best?
I resisted switching to a different desk for a while because I couldn't see how it would be any different, but after trying it, I realized it opened up a whole world of communication opportunities I was missing.
Four fully enclosed offices with doors which open to a central conference area (just a 3x8 table and half a dozen chairs), which in turn opens onto the corridor accessing the rest of the office. Bonus points if you can parley a space for a sink, a mini-fridge, and a coffee machine on a small kitchenette at one end of the common area.
You should always be close, but there are times when you need to collaborate and times when you need to close the door and concentrate on what you're doing without distraction (coding, of course).
I have actually worked in an environment like this and it is pretty darned productive. We had 6 offices that opened onto a common area. No coffee mess, but life isn't perfect. I think we were much more in sync as a team than the folks who were lined up in offices along a corridor, and much less distracted than being in a cube farm (I've been in both of those environments, too).
Is it just my observation, or are there way too many stupid people in the world?
Ugh. I've been in various flavors of multi-developer work areas, and they've all been unmitigated disasters. The only thing that works is to have private offices. They don't need to be big or have views, just walls that go to the ceiling and a door to close when you need to work without distractions. It's tough to imagine an environmnet worse than sitting at a big round table with 3 other devlopers. Obviously the person that suggested it has never actually tried to write code.
Yes, the best reasonably priced desks weren't discontinued...they just have a much more boring name now, Fredrik: http://www.ikea.com/us/en/catalog/categories/series/10216/
One that hath name thou can not otter
Hold virtual meetings. Everyone picks their own theme and avatars for their co-workers.
Zippy the Pinhead seems to be a pretty popular choice for the boss.
Have gnu, will travel.
If you want them to get code written, don't treat them like cattle.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
The famous Peopleware (by Demarco and Lister) has a chapter on this. It brings up a lot of good considerations. The gist of it is that they recommend asking the developers. That's a great place to start, but I've found that a lot of the developers I've worked with are either too young to have much of an opinion about this or too old to think of any solution other than the solutions they've seen in the past. Whenever I've done this in the past (for groups of 2 to 20 people, most of whom were usually developers), I've tried to give everybody his or her own desk but keep people's backs to the wall. I've found that, if nobody can sneak up on you or see your monitor, your working space feels more private. That sense of privacy helps folks concentrate a bit better. Also, if everybody's back is against the wall, it means that everybody's facing the middle of the room, which helps a bit with impromptu discussions. The downside of the backs-to-walls approach is that there's a lot less open space. You probably need about 100 square feet per developer to make it work well.
I'm with Joel Spolsky on this one. Private offices. If you can't swing that, *please* do not do the round table. Programmers need to concentrate! Some here here.
Private offices are far less expensive than the cost to productivity from open office environments.
1. IBM Research studied the problem, and found that engineers are 40% more productive in quiet private offices than open environments. At a fully burdened annual cost of $100-$200K per engineer open seating could cost you $120,000-$240,000 a year.
2. It can take fifteen minutes to enter a mental 'flow' state. Once you get a high enough interrupt rate it's difficult to get anything done until people go home for the day.
3. Open offices encourage unnecessary communication. Where people might find answers themselves they ask their co-workers because it's easy thus saving minutes for themselves at the cost of up to fifteen minutes from their co-workers.
The NORAD Command Center in "War Games" was always a favorite of mine, but Starfleet(tm) Bridge or Engineering could be fun too. Folks could have uniforms of differently colored company polo shirts.
A generic command post with visitor theater above it might be intriguing.
Replicating part of the cubical farm in The Matrix could just be an interesting "after-work" team-building project.
Whee!
Plus ca change, plus c'est les memes choses.
What works for one may not work for others. Do they all work on the same projects, do their personalities mesh, do they work on independent projects, and how much of the time, does the company enforce strict working hours? You kind of get the point. Some companies value the creative aspects of developers, some bury that and just want coders. What is you have?
... So, to recap. Provide privacy so they can think. Provide space for them to collaborate ... Contrary to some people's thoughts there are people and there are tasks where one person is the better solution.
Given unlimited space and budget I'd create a warren for them four or five offices with closable doors surrounding a conference table that is used solely for the developers, not shared to other tasks, put up a white board or better technology that captures the scrawls too, and make sure the conference table area support the local variety of network, not a problem if WiFi is permitted, but security concerns may require a post of hardwired ethernet connections. There should be plenty of space around the conference table so developers not involved can easily exit and enter their offices. This gives space to collaborate with team members and privacy when the developers need it to be distraction free. Visually think of lining a room with the offices and having say 20 feet of clear space in the middle to place a small conference table in. Want the developers to work through lunch or late nights during crunch time, make space for a small refrigerator. Put a microwave on top and include a water cooler (with hot water as well) and keep a spare bottle of water next to it. If the company really supports developers with small perks include an honor snack box and free coffee and tea
And anyone looking for a CTO or looking to invest in a startup, let me know! I know how to get development done.
- Tjp
I am in wallow with my inner money grubbing capitalistic pig. ... Oink!
1 - office w/door, see joel on software for an example
2 - cubicles w/entries facing a common area
3 - bullpen, desks in middle of room
Above all, have the team and management agree on a daily 2 to 3hr 'core time' when there are no conversations, pages, phones, meetings, or other distractions.
If everybody buys into core time, the cubes vs. offices, etc. will become a non-issue.
To put a witty saying into 120 characters, jst rmv ll th vwls.
Pair coding can be surprisingly effective - it sounds a ridiculous idea, have one person code, and another just sit there and watch. But it works pretty well - the second person acts a check on the first, and the error rate drops. There will be interaction, humans are like that, and it's all to the good.
Also, you will have two people familiar with the code, not just one, so some pressure is reduced - holidays become easier to organise, for example.
I have worked in an office (now), a cube farm, a shared room, and from home. Each has advantages and disadvantages. (I like the sound of the laptop and the beach, but I'd definitely miss my second screen).
One thing that does definitely work is to have a "quiet room". You have a limited number of desks/computers there. If you choose to work there for a bit there are no phones, emails, nor conversation. Can be great for a good straightforward bit of code bashing. But not all the time.
Oh yes, and a second screen is a proven, cheap, productivity improver. Big screens are pretty cheap. Do it!
Simon (yeah, I've been doing this a long time. First line of code must have been, oh, 1970 in Fortran IV I think, and I'm still at it. Damn, where's my Ferrari?)
"Cats like plain crisps"
a cul-de-sac of offices with doors facing inwards and an open wide hallway down the center with a common workspace and large conference room style table for teamwork. each dev can go into their offices and close the door for heads down or pair programming. leave it open to passively participate as a group, work at the group table for team exercises.
at the ends of the cul-de-sac place bookshelves, white boards and a video screen for demo/group presentations. use rolling whiteboards, flip charts/postit charts.
add a remote video cam with audio and you can include folks from offsite.
put a conference phone in the center of the table.
comment directly in my journal
Do you want productivity? Let each coder have his own office, with a door. Joel on Software have more. I so totally subscribe to this view. What happens in any other environment is that people have to use load music on their earphones to block out the sound, to get into the "flow". You seriously want your coders in flow.
Put the desks facing each other, but with a wall at 5 to 6 feet high between each. They can have the privacy they may want, and to ask others opinions, they can call out or stand up.
Or ask them, but be prepared for 1 to say "Open" and another to say "Closed" and 2 to not care.
This doesn't have to do with management or efficiency due to social interaction, but do NOT use a round table like you mentioned in the article. Have you ever worked at a table that's round? Try it. There's a reason desks are RECTANGULAR. Your arms can't be supported on a circular table because the section under your elbows is missing due to the geometry of a circle. It sucks and causes massive arm pain. I don't care how efficient it makes your developers, your productivity will drop like a fucking stone if they're constantly bothered by pain in their arms.
Use a RECTANGULAR table if you want to fit 4 or more people around a desk.
-1 disagree is not a modifier for a reason. -1 troll, flaimbait, redundant, overrated are NOT acceptable substitutes.
Alphabetically by height.
load "$",8,1
The bosses should try the roundtable arrangement. They do nothing but BS all day anyway, might as well choose a layout that's conducive to what they do.
Developers MUST have a door which they can close when they need to concentrate. Anything else is torture and a waste of perfectly good brains.
It would totally stress me out. Just the thought that my blank stares when thinking about a problem would not hit an empty wall or a window, but someone's face... horror.
My favorite seating arrangement was in a room where each developer had a small partition to himself, facing the wall, with no "back" - so nothing blocking the view to the center of the room. The partitions on each side of a developer were just big enough to be like "blinders", where you couldn't see other people when working, but one could easily roll the chair back a few feet and have a view of everyone. The center of the room had several small tables that could be pushed together for a large conference, and one of the walls had several large whiteboards. Putting on some decent headphones made for good zoning in your own workspace, but you could still see and hear everything else if you wanted to.
As for productivity, it was quite high since all the monitors faced the center of the room, and so could be easily seen. People could easily show their screen off to get help, and couldn't easily hide their idle deeds from coworkers. Peer pressure is a good motivator.
SlamDunk
you can shut out noise and distractions. if this round table idea is some management idea to stop goofing off, then forget it. something some managers just can't get, is that you CAN NOT stop people goofing off if they want to.
if own offices isn't possible go with cubicals, a round table in a meeting room, and buy them noise canceling headphones.
why the headphones you ask? firstly because it'll allow them to escape the guy beside them blowing his nose or whistling some annoying tune, but it'll also instill a sense in them that you actually care about their output, and when people feel that they'll work harder and not feel like your just milking them. for $500 it'd be a sound investment.
If you mod me down, I will become more powerful than you can imagine....
I worked on a couple of different teams for one company, in different office situations.
In one, 8 of us were in one common room, and we worked well together. Originally, we were all facing the walls, but we all agreed and moved the desks so we were facing one another. It was great; close group, close spacing, got along, worked well together.
Later, in the same company, in a different group, just three of us in a larger room. One of the guys snagged a conference room for a week just to get some work done. One member of our group was a "social butterfly." Loud conversations, all day long. Impossible to concentrate. Very limited knowledge of technology, always undoing the good work done by others.
I work now with some folks who are productive later in the day; in the morning they socialize, loudly. I work best early. It's unbelievably difficult to concentrate sometimes. Sometimes people need closeness, other times they need space. Particularly if work and personal styles don't mesh.
It's not the "most productive arrangement" that matters. It's the most productive team. What's best for the individuals that make up your group? Talk to -them-.
The idea that the seating arrangement matters much smells to me like Management Fad.
You say "In many offices and departments it increases productivity and makes collaboration easy." Is there a shred of data to back that up?
In Peopleware, DeMarco and Lister concluded that there was only one variable that correlated with programmer productivity: number of square feet of office space per programmer. If so, then to the extent that seating people around a round table puts them closer together, it will reduce productivity.
"How to Do Nothing," kids activities, back in print!
If you want to be productive, buy and read the book. Better buy two copies and give one to your manager to read.
If you only have one room available for them (as I suspect is the case) sit them in the corners or along the sides. Make sure they have (at least) two good sized monitors each; one to code and one for documents/emails/web. A central table is not workable for us as the stuff we use to do our jobs (profusion of monitors laptops etc) will just mean we can't see each other without standing up or that the monitors are so stupidly small we can't do the job easily.
Code development requires some periods of what I would call deep focus. Between these periods of focus there will often be break out moments of chat and banter to unwind that focus a little. There will also be discussions on methods of approach and some hey Bob can you take a look over my shoulder at this? parts where someone has missed a semicolon somewhere or some such obvious to other guy type thing. A round table hinders slows and discourages all of this teamwork. Bob is no longer able to scoot his wheeled chair 3 feet left to point out the syntax error, he probably has to get up from his side and walk around or he has to lean over uncomfortably (so he doesn't want to do it which annoys the other Dev and breaks down team spirit).
The main thing that programmers do is on the computer screens, if you want them to work directly with each other as a team (this is not always the best approach with developers) they need to be able to see each others screens quickly and easily.
Oh - coffee, nearly forgot, they will need quick and easy access to coffee as close at hand as you can make it.
As long as you don't really use round desks. If I hate anything it is having anything other than a smoothed down, straight desk to rest my paws on. Although at work I have a lowered desk and a natural 4000 ergonomic keyboard, which makes this point slightly moot since I use the rubbery wrist rest. Most devs use normal flatter keyboards, so they will want straight lines.
Currently I'm in a very very noisy room with about 20 people and a constant temperature of 24 degrees. As long as you don't have that it's probably for the good. I would hate a completely separate room though. I'll be leaving for a room where 4-6 people will be on desks facing each other (we put people that mainly do a single project together). As long as you use rectangular desks, you can do anything you want with them. A quarter round desk basically takes too much room unless it is used to put as a round table.
Personally I would use rectangular desks in a square where 2 persons sit next to each other, facing the other two. And I would have a small table with 4 normal chairs and a white-board for meets right next to that. Oh, and some plants and other stuff that make it look less like a clean room. A cookie jar and a good coffee machine spring to mind, and some space to put books in (books should be visible, otherwise they will just gather dust).
Rather than having all developers at a round table facing toward each other I would surround them with desks and have them facing out from each other. That way collaboration is as easy as scooting your chair to an adjacent developer but you're looking away from each other when you're each trying to concentrate on your own thing. A few weeks ago I spent some time in a workroom with a couple other developers and hated it. For some people that might help but to me it was distracting.
We have a series of desks in a pinwheel arrangement. Peoples' monitors (we all have dual-monitor setups, or more) keep them from seeing too much of the guy the next desk over, but you're really close to each other. You can just toss a bunch of these clusters all over the place, too.
|
o |o
-----|
|-----
o| o
|
We have a power/ethernet drop from the ceiling in the middle of each cluster, which works out nicely.
The World Wide Web is dying. Soon, we shall have only the Internet.
Real developers don't have seating arrangements -- they stand.
Alone. Everyone knows that quality developers work best alone, in a quiet or otherwise musically suitable environment. It is convenient to have other developers close if you need some actual conversation or questioning, but sitting at a round table sounds like bad news to me.
that's my word, holla...
If you're thinking about the coding stage, you've already guaranteed a sub-optimal setup. The absolute worst errors, the ones that'll cost you the most to correct (if you can correct them at all), are the planning errors. Good software starts with a good architecture and overall design, and that requires clear thinking about what exactly you're trying to do. Most often it requires privacy: one person working out a really good design, or two or three people hashing out ideas where their bozo moments and utterly brain-dead thoughts won't be a public embarrassment. Set your environment up for that, and the coding will take care of itself.
Generally I prefer offices off a common area. Put a big table, whiteboards and such in the common area so people can congregate when you really need everyone together (eg. meetings or troubleshooting sessions). Make the offices reasonably soundproof (so if eg. someone works better with music playing they can do that without bothering anyone else) and with doors that can be but don't have to be closed (so the developer can decide which it'll be now).
It depends on how many of them like to chew with their mouths open at their desks. Seriously, some people just do not understand how obnoxious this can be.
You boss is absolutely right that a more collaborative seating arrangement would increase your productivity ...AND...
You are absolutely right that your lack of focus space would reduce your productivity.
Every job benefits in productivity by having spaces that allow the following four work modes: Focus, Collaborate, Learning, Socializing. Current office design trends are no longer about "making an office pretty", but about finding out what ratio of the above four work modes best supports the work, and designing these functions into the workplace. If you want some good details on this, refer to this link:
http://www.worldarchitecturenews.com/index.php?fuseaction=wanappln.projectview&upload_id=10111
Gensler, based out of SF but with offices around the world has been in a leader in researching work productivity and applying it to workplace design.
J-Haru
Just buy the frikin' table and get back to work!!
In 25 years, with experience being both the developer who had seating arrangements dictated, and the manager of a group who had to dictate seating, I have never heard a developer complain over the long haul that individual offices on the same short hall were causing too little collaboration and cooperation between the people on the team. OTOH, there were numerous complaints that being jammed all together created large impediments to ever finding a quiet time without interruptions to think through a complex problem.
Ask your experienced people which they prefer; someone who is six months out of school is not qualified to have an opinion.
Seriously. The coders need to be in offices, with doors that are mostly open, and central spaces to talk and mingle, and tons of white boards.
There will be time to talk, time to think, time to type, time to test, time to recover. There is no one best at all times, but you need to provide best at all times. If you skimp, then you cost yourself maximum productivity.
We did this best by having a ring of offices surrounding test and support, with a large conference room.
Having test and support nearby developers helped a lot. Test and support didn't tend to need as much "quiet and focus" as developers, but having close access to test and support, meant that there feedback, and listening to development helped get the product out better faster.
Unless everyone on your team is battling ADHD, I'd recommend as close quarters as possible. The absolute best ideas, in my experience, have come from overhearing interesting discussions. Open work areas are also great for mentoring junior coders without inviting them to every single meeting. They get to overhear juniors & seniors alike conversing about things that may not even apply to their own jobs. The social aspect can also serve as motivation for peers to bone up on tech for the sole purpose of taking part in discussion. It builds report unlike formal meetings with agendas. This eventually leads to an incredibly strong & balanced team.
I am reminded of this Dibert TV show episode http://en.wikipedia.org/wiki/Tower_Of_Babel_(Dilbert_episode)#Season_1_.281999.29
I hate the idea of having a seating arrangement dictated to me. Each person has their own way of efficiently working. I happen to have ADD and get distracted fairly easily although I've learned to cope to a certain degree. I need an environment as random noise free as possible. Sometimes, I can just put my headset on and listen to music to drown out the other office sensory. I think the best approach is to survey your team members and try to come to a consensus.
Unless your boss is big on pair programming, hire competent people and save on a building.
As the comments re: blocking out background noise via headphones attest, frequent interruptions from co-workers do stress people out and destroy productivity. Skype/Jabber can substitute for brief chats. VNC can substitute for showing a problem on someone else's machine. Record incidents by screencast for bug reporting - Often far more productive being summoned to a co-worker's machine to view a problem that is then mysteriously not reproducible at that precise moment.
Having worked on a project with staff in multiple timezones I can relate that 'the process' is more important than cramming as many people into a physical location.
Oh, and commuting sucks. Flexible hours from home fit in better with modern family life than worker bees who leave home at 8am and return at 6pm. I for one would prefer the Spanish model of a mid-afternoon recharge...
I like a bench setup with half height dividers between seats or a lab arrangement with a long rectangular table (people sit on alternating sides). The reason is I don't like feeling eyeballs constantly on me or feeling like I'm constantly staring at someone across from me as one would be in a circle or pinwheel.
With these setups, workers should make private calls either in the break room, hallway, or in a dedicated phone room.
A few commented that there should be no windows. I think anyone advocating that is not a very nice person. Having natural lighting and seating in a large open area is a huge benefit to morale and fights off seasonal depression. If you're concerned about people staring out the window all day, just setup the seats to face away from windows.
Camping on quad since 1996.
Oh yeah, been there done that. It's distracting. It's designed to intimidate people so they don't goof off.
The way to stop this is load up on beans, mexican and indian food. Cut farts that peel the paint off the wall. Maybe get a contest going with a likeminded coworker. It's biological warfare.
Wansu, th' chinese sailor
Unless you have an 8 hour a day meeting in mind, it's counterproductive.
Developers like to share ideas and get direction periodically and then go work in solitude.
This is a sig. It is like every other sig in the world, except that it is mine, and it is different.
My idea for seating these devs? I haven't read all 150+ comments so don't know if anyone else has suggested it, but I think you ought to put them in chairs, rather than seating them directly on the floor.
"while democracy seeks equality in liberty, socialism seeks equality in restraint and servitude." de Tocqueville
Ask your boss to join a session, then take turn farting...
1) Bean bag chairs
2) Laptops
3) Headphones
4) A big sign in front of each developer that says, "Piss Off!"
Trust me on this.
Get some Anthro carts. Put some extensions on the top and attach a shelf where you can put books and a light. Mount your monitors on one of their monitor arm accessories. When you get tired of your first failed configuration, it's not permanent. Unlock the wheels and move things around. When you get kicked out of the office you thought you were going to stay in and have to move again, you push the carts down the hall and plug them in.
... this is flame bait:
Who cares? They're programmers. They are to the information era what those rows of Chinese women hunched over sewing machines are to the industrial one. You're not going to magically improve the quality of code, or substantially increase productivity, by rearranging their seats. An unhappy programmer working 9 to 5 and constantly afraid of losing his job is still going to produce code. Code that is almost certainly good enough for your purposes.
If these were artists or mathematicians, yes, environment would matter. But they are not. The romantic notion of the brilliant code hacker is an anachronism, and it has been for a while. You need to understand that you are not running a creativity studio. You are running an assembly line. If you employ someone that writes beautiful, profound code, you need to fire their ass immediately, and replace them with a workhorse who can read the specs and implement them with the same level of passion as a mechanic swapping out an alternator.
Support microSD: in a post 9/11 world, it is unwise to carry your data on media that you cannot comfortably swallow.
I haven't had extensive experience in the office workplace (two summers as an intern) and to me, the half-cubicle was nice. These are the ones whose walls are about eye level height (for a six foot man) and so you have a bit of privacy and enclosure, while being able to stand up and clearly communicate with those around you.
--
Behind every great sysadmin is a bookshelf. Behind every well paid sysadmin, a diploma.
The best seating arrangement is for each developer to work at home!
Have you fscked your local propeller head today?
No, you're underthinking it and ignoring the human element. Different people have different needs and react better to different environments. Some people hate noise. Others blare music in headphones. Some people multitask and deal with distractions well. Others can't. Some people like human interaction throughout the day. Others hate it.
It also depends on the task their doing. If the stuff they work on is closely interrelated, ease of communication may help improve productivity. If they aren't, increased distraction will likely reduce it- its pretty hard to concentrate on your work when 2 or 3 people around you are discussing something, code related or not.
The best situation I ever had was my last job- I had an office with an actual door I could close when I wanted privacy, next to a bunch of cubes where friends worked, so I could leave the door open and interact when I didn't (said interaction may or may not be code related).
Personally I would hate the round table idea though. Everyone needs some space to themselves for papers, books, pictures of the kids, etc and a round table just doesn't do that.
How about both a round table and a private cube?
Privacy when you want it and collaboration when you need it.
Get the corporate version. Getting onto each others machines is quick and easy.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Keep them each locked in a closet in the basement. They can't come out to pee or eat until they've finished their monthly quota. Not only will you get more productive coders but they'll lose weight lowering the cost of medical insurance for the bastards! Just be sure to block their network access to all porn and gaming.
At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
Most coders perform best when they are "in the zone", free of distractions, free to concentrate on what they are doing. Focus is important. Coders don't need all day to collaborate, distractions throughout the day are highly destructive to productivity. There NEEDS to be collaboration, but not while you're trying to code. That's what morning meetings are for. Get your communications out of the way, discuss what the goal for the day/week/month is and what's the progress, and then split up and get it done.
If people have an easy opportunity to knock my out of my Zone every 10 minutes to ask a question or bounce an idea off my, I won't get anything done. And what I DO get done will be lower quality. When someone DOES do that to me, I drop what I am doing, completely. I give them whatever interaction they want, and make it crystal clear to them that they have COMPLETELY stopped my work while I interact with them. Trying to multitask a discussion requiring any amount of thinking breeds bugs faster than a bowl of Alpo on a cockroach farm. After they're done, I take a deep breath, try to remember where I was, and work my way back into my Zone and pray Susy doesn't wander back in 20 minutes with some followup questions. Most people quickly come to understand that the work I do is not compatible with multitasking and interruptions, and are more careful about when they interrupt my work. All of the managers I have had understand how this works, and will politely suggest to the coworker "couldn't this have waited until tomorrow morning?", when they'll find I'm MUCH more social.
Or maybe you're one of those rare few that can carry on a conversation and code flawlessly at the same time. Not me, not many of us. Face it, limited autism is conducive to good code. ;)
I work for the Department of Redundancy Department.
My employer recently implemented the best productivity improvement ever. We replaced all of our desk chairs with toilets. Now, we get about an extra hour of work from people a day because no one needs to get up from their desks for bathroom breaks. It took some time to get used to, because the foul smells and rude noises were distracting at first; however, management solved the problem by installing large oder-proof and noise-proof rubber gaskets on everyone's toilet seats.
After the success of everyone getting their own toilet, we realized that too much time was being wasted finding food and coffee. Thus, we implemented a system that delivers coffee and liquified nourishment to everyone's desk on tap. It also gave us another additional hour of labor per day.
Now that no one has to get up from their desks, my employer boasts that it has the most productive workforce in the world!
No, I will not work for your startup
As an individual contributor turned lead, turned manager (of local and remote teams), office for developers is the way to go.
As a manager, I think it is important to have a cube to invite interaction. A managers job is to run blocker for their team and is generally interrupt driven.
As a lead, I think it is important to have an office with a white board and one or two guest chairs. A lead is half way between a planner and interrupt driven. It is really important for the lead to provide details in sufficient chunks that remove the need for any sort of blocking communication (i.e. a dev can't continue unless they get an immediate answer is bad).
As a developer, It is extremely important to provide an environment to focus. An office with a guest chair and white boards is the way to go.
If the environment dictates that everyone is interrupt driven, this typically means the overall planning is not very good. If the overall planning is not very good, the side effects are a shitty working environment. Don't get me wrong, there are some developers who prefer to be interrupt driven, and there are typically roles on a project that suit the personality type, but having an office is not about discouraging interaction, it is about boosting productivity.
It saddens me to think people blame offices for poor planning, poor communication and poor productivity. Blame the people who don't do their fucking job...
For me, at least. I'd never take a job that insisted on this kind of seating arrangement, and I'd quit if a workplace changed to it while I was there. And I know no one has any reason to believe this, but employers should want me to stick around. I'm that good.
I actually worked for a company that switched to an open, shared space seating arrangement from individual offices for every developer years ago, and I got to watch the effect it had on developers. One guy in particular said he was much happier with the new arrangement. Watching him, I could see why. He was an above average programmer, and a rather social fellow. I've seen him go from turning in decent work to checking in code that had serious, sloppy flaws overnight - but he said he preferred the new seating arrangement to the old one. I'd watch him work 8 hours a day, and he would constantly turn around to help other people out, chat with other people, and generally have a very satisfying day, full of fun social interaction - but I could see that his work suffered.
As for me, For two or three weeks I could give you a full report of everything that happened on our floor - who went to talk to which product manager, who was having problems, what was happening on the other side of the floor where the salespeople were sitting... But I couldn't write a single line of code.
I got tired of that one day and asked for a laptop. When I got it, I moved into an empty office - put a 5' plant in there, stuck a bunch of computer science books on a shelf (the OpenGL manual, something about distributed algorthms; nothing that was actually relevant to my work at the time. It was decoration.) I kept insisting that it wasn't MY office. It was just somewhere I went when I needed to concentrate, and that anyone else was welcome to use the place. I guess other people found the plant and the books too intimidating - I had the place to myself for another year and a half until my entire group was laid off.
These days I usually work with my office door closed, and earplugs in my ears. I NEED the quiet.
Have you ever seen devs get anything done sitting around a table? We call those a waste of time, aka meetings where I come frome. In my experience having worked 20 years as a software developer, having experienced private office, home office, cubeville, bullpens, and all manner of craziness... the idea of having four devs around a single table is really just upper management saying "how cheap can we be on accomodations?" or "I'm paranoid as hell and think my devs are not productive because they are playing games and surfing pr0n so I want to watch them." Not all people are able to concentrate on tasks with a lot of racket and distractions around them, that takes a special breed. I took a job with a former submarine commander at his company and he loved working right in the midst of a ridiculously loud customer service bullpen, and tried to get me to work in that. It was his expectation. I tried for a week or two to figure out how to manage, but I couldn't stand it and walked. What a waste of time. Bar none, private offices are superior. Second to that, working from home. Third... high wall cubes. Last and in my opinion the least thoughtful is a bullpen where everything is open air, its very noise, and very distracting. Having devs sitting around a table? Even worse. I like my privacy, and need to be able to tune out.
How about asking the four developers for input? You might find productivity goes up when the producers are actually involved in the decision making for things that directly effect them every day :-)
I think the ideal arrangement is a C3000 max config blade cluster tower driving 8 40" LCD displays. Preferably seating would be a motorized recliner with six degrees of freedom. There should be sufficient audio facilities to provide a pleasant working environment for the programmer. This setup should be arranged on a well lit patio next to a heated indoor pool. There should be plenty of staff to bring refreshments, fresh towels, and printouts. For ad-hoc diagrams some "sidewalk chalk" can be handy.
Help stamp out iliturcy.
We had "The Dev Cave". It was this little room with 4 desks that we'd rearrange as we wanted that week. We had one door with a window into a hallway next to the door. We'd turn off the lights and just work by the light of our monitors most of the time, hence the name. We had a massive whiteboard on one wall. Add to that the mini-fridge (with soda *cough*don'tlookbehindthesoda*cough*) and a manager who wasn't around often... Sure, we'd goof off, but when we needed to, we'd buckle down and get things done. There would be hours with little more heard than keyboard and mouse sounds. And then there were the days with the Red Bull and Jager. Seriously, though, it was a fantastic team and we did some great stuff. The biggest thing was that we were generally isolated from our people and our manager when we were working. Just having a separate room meant we were rarely interrupted. We also didn't have to count our hours. If we showed up for meetings and got the job done, that was good enough for our boss. I think it kept my head in my work better, because goofing off just meant I didn't get to go home early.
If you are lonely and want company, go to bar (e.g. forget about all this pair coding and shared room nonsense).
If you want to get stuff done, then get an office, preferably with a door, or even better, let your guys work from home.
You'd be amazed how so restrictive pants are.
I've worked in quite a few different situations over the years, both as a developer and developer/manager:
a) a shared trestle table with 6 programmers facing across each other in pairs
b) a private office in a group of 8 offices surrounding a common area with couches and floor-to-ceiling whiteboards
c) a low bench in the back of a semi-trailer on a folding chair (luckily only for a week of 14-hour days)
d) a shared office with one other person
e) a regular private office
f) a shared office with three other people
g) a standard 6' high cubicle farm with your back to the 'door' on busy aisles, next to the creative department with 'open plan' tables, 4 to a 'pod' all facing the center
By FAR the best situation was b). The doors and half the wall facing the common area were glass with blinds. You could leave the door open and blinds up if you felt like being 'part of the community', or you could close the blinds and the door and turn on some music - without headphones - to focus for as long as you wanted. Discussions were held in someone's office or taken out to the common area for more of a group discussion.
The shared offices weren't bad, as you'd establish a rapport with your office mate(s) and come to some understanding of how your mate(s) worked.
The worst is the situation I'm in now - the cubicle farm next to the 'open-plan' teams. There's random noise all day, people having meetings in their cubicles or on the phone all day with customers. The only way to focus is to put on studio headphones and crank up the volume, and then you end up with people standing behind you in the cubicle talking at you for five minutes before you realize they're even there.
And since it's all open, everyone feels free to shout questions to each other over the cubicle walls instead of sending an IM, walking over to ask a question quietly, or take the discussion to a meeting room. And having a conversation with one of your direct reports means scheduling a meeting room or standing out in the hall outside the office.
Needless to say, I get at least twice as much done in a given period when I work at home. The dev team is always coming up with new excuses to work from home. And, of course, senior management, who all have nice window offices, can't understand how it could be difficult to work in that environment.
(or maybe China)
Seriously, if you need to worry about "seating arrangements", you probably need a housecleaning. If the work is so mindnumbing that where/how a developer sits is important, maybe offshoring it would be doing the employees a favor...
007: "Who are you?"
Pussy: "My name is Pussy Galore."
007: "I must be dreaming..."
For a team of four, I'd recommend a large office with a door, whiteboards, and four desks. Also, space for a fifth desk or a small table.
This gives them the collaboration of an open environment without tossing them into a cube farm. You can have privacy if there are only a few other people around.
"People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
To answer the question: read peopleware!! http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439
It deals with this specifically. The conclusion that the author came to is basically that people should have offices. Cubes and "open workspaces" are too noisy and distracting. This whole thing with open workspaces came out of the 70s -- I think you had to be on drugs to think it was a good idea tbh. Education/academia found out the hard way that it didn't work, but businesses haven't figured it out yet -- all businesses look at is "if I cram this many more people into a tight workspace, I save so much more money vs renting more space" without a care to productivity. Productivity is a hard thing to measure after all, but a good effort is made in peopleware and IBM did a study as well. IBM and Microsoft give their workers offices, the reasons are inside the book.
I think you should ask your developers. Some mixes of developers I've worked with would have been great in a close seating arrangement and others would have driven me straight up the wall.
Also, if you're going to have them facing each other, make sure the monitors are adjustable; I worked with a guy who had a pretty bad facial tick and if that guy had been in my line of sight, I would have been pretty much useless as I waited for the next spasm to show up!
That's easy, the best seating arrangement is in a ring around my desk with their backs turned towards me so I can watch their monitors, at all times, and make sure they aren't doing anything other than coding. The best seats are backless stools with only one or two legs so they can't relax/loose focus without falling over.
WHAT!? My employees love me!
Rules of Conduct:
#1 - The DM is always right.
#2 - If the DM is wrong, see rule #1
Having gone through many office arrangement fads in the last 15 years, the one thing that consistently works, when management is good, is pretty much standard cubes or offices.
Collaboration without thought is simply placing people next to each other. Collaboration that is well thought out, is a good design process, good tools, and consistent clear management directives.
Another thing I've found useful is to not be stingy with tools (computers, software, extra monitors, etc...) and allowing people to have multiple of whatever they want. Let programmers have their own space or office (office is ideal), with 2 computers in each. If a couple folks want to team up for an afternoon, they can work in the same office. But come the next day, when they need to go back and focus on individual areas, zero distraction is what works. Computers are cheap in comparison to the salaries you're paying.
And lastly, the rest factor. If someone hits a wall, and just wants to zone out for 10 minutes browsing, say, slashdot:) for a while, doing so guilt-free because others can't see them is very beneficial. If instead there is pressure to work constantly, the quality of the work is going to go downhill. It has been estimated in various studies that people only do real work 5-6 hours out of an 8 hour shift.
That occurs for various reasons. But if people are pressured/forced to work longer than that national average, you'll still end up with people only working 5-6 hours out of an 8 hour shift, wasting 2-3 hours interrupting other people or zoning out pretending to work. And zoning out on nothing is boring, and de-stimulates the mind, making getting back into work slower/harder. If instead, a person is allowed to 'zone out' on something engaging (youtube video, phone call to friend, etc..) their mind will both be rested and still turned on when they return to work.
At first I thought you were being sarcastic, and it was modded insightful as further sillyness.
Then I realized you were serious.
You sound just like a PHB who has no understanding of the beauty of code.
A programmer taking pride in his work can create much better code then an "unhappy programmer working 9 to 5 and constantly afraid of losing his job".
I've worked in unhappy environments, and also happy ones. Guess which one I was more productive in.
I don't know what type of sweat shop you are running but I don't think I would last there 5 minutes. I'd be gone as soon as you said assembly line. And for your information, a workhorse can't read specs, and a programmer without passion for his job will not follow them.
Developers should have offices. Near each other. But offices. It's a highly technical field and one that should have some amount of respect. The cubicle farm people can all go rot in hell or work for EA or SAP or something.
Cave, headphones, loud music. I can't stand having people walk up to me, or trying to chat with me, while I'm head down in a problem. I'm currently in the back row of three rows of desks and I'd kill my underlings for a cubicle. Privacy is a right granted to you by the Supreme Court (affectively, of the course of the years) and taken away once you enter your office. Kinda sucks...
Four around a round table would mean everyone facing each other. That makes it difficult to stare into empty space, which is very necessary. Looking directly at your screen for hours on end is dehumanising.
I also found that my eyes get tired when I work facing a wall. Maybe it's bad for your eyes to stay in very-short-distance focus mode for long periods. I solved this problem by putting a mirror behind my laptop. It's tilted slightly upwards so I can stare into it without staring at someone else.
Expert in software patents or patent law? Contribute to the ESP wiki!
WTF does physical location have to do with how "productive" your developers are? If you've got the right people, you don't have to worry about it - give them the job, set the schedule, and get out of their way. Doesn't matter if they all work in the same building, or if none of them are even in the same country. Yeah, I'm biased - I've worked from my basement on a team scattered across about 4 time zones for the past 5 years, and it's been great. I highly recommend THAT "seating arrangement" ;) If "productivity" has ever been a problem, nobody's ever mentioned it to us...
You want to know how to arrange your developers? Why in the world don't you just ask them? Why are you asking slashdot?
Your developers know their preferences and corporate culture better than a bunch of strangers on a web forum. And they will happily tell you what they think would be optimal and why.
I don't understand why it is so popular for managers to think that they can maximize the productivity of their team by ignoring input from the team. It is utterly ridiculous. What...are you hiring children? Bums off the street, perhaps? Retards? Or are you hiring intelligent, professional, problem-solving specialists who are predisposed to have an interest in effeciency?
Sheesh.
You work in America and they VPN in from India. The office will smell better and the project will come in under budget.
2 words?
Bunk-Desks.
You put one person on top one on the bottom and I really shouldn't suggest something this crazy, some HR nut would think I'm being serious and actually implement it.
It's not the shape of the desk, or even their position relative to each other, so much as it is the quality of communication amongst the team.
I'm right now taking a course in software engineering. What we are taught is that the least amount of distractions, the better.
Developing software is considered creative work and that is best done in a flow-state. For your average developer it can take up to 30 min to get in a flow. Small distractions can break the flow or prevent getting into it. So even basic math says that if a 1 minute conversation really costs 30 mins in productivity, it's better to give peaceful and quiet workplaces.
Flamebait is right. This is the stupidest idea. Having developers (or any type of worker) sit around a round table will only create distractions. I work in a similar environment, and productivity is very low because of the constant noise of people talking. "Forcing" people to then use headphones to cut out noise is a VERY BAD IDEA because over prolonged usage, it damages the ears due to close proximity to the ear drum. Just try it for 10+ years. Studies have been shown that telephone operators suffer from hearing loss because of this. To me, this round table idea is completely obvious that it's a bad idea, and it's difficult for me to understand why someone would even think it's possibly a good idea.
At a previous job, I worked in a room with desk space set up in a large U shape around the room. Each of us worked in or near one of the corners, facing out (to windows, wall, or through the door out into the rest of the building).
I found that this worked well for both doing your own work without interference (headphones and music also helped) but also lent itself to collaboration. All I had to do to ask one of the other devs a question was turn around and speak up.
I really don't like the idea of facing toward other devs without some sort of barrier blocking my view, as I would think I'd find it rather distracting.
I have been working with a team of 3-6 developers for quite some time. Recently we moved offices and ended up sitting around a big round table; and our productivity went to hell as a result. It didn't take very long before the team scattered, with many people working from coffee shops or home, and the remaining devs claiming vacant desks.
The problem is that development is done in two phases: You work with others to develop a plan, and then run off and get into "the zone" and get stuff done. The problem with "the zone" is that it is very fragile, and so all it takes is hearing two devs laughing about something through your headphones and now you aren't working either.
In other words, putting all the devs tightly packed together all day means that every time one dev is distracted for any little reason, suddenly they all become distracted.
If your dev team is important to your company's product and/or revenue, do everyone a favor and give them each an office with a window, as well as a common room to "hang out" in when they need to collaborate.
Private offices -- bar none -- are the best seating arrangement for quality developers.
So I had a job where we were building a Java EE app and configuration problems, buggy, opaque, non-interoperable frameworks, layers etc took 50% of the team's time and builds took 1/2 an hour. Oh and the boss interrupted randomly with a complete non-sequitur urgent request at a frequency rarely less than once per hour.
Meanwhile, I cranked out a nice python webapp (hobby project) on my macbook in the back of the bus on the daily commute. I got about as much done in the hour of commuting, guarding the computer from flying down the aisle due to lead-foot bus drivers, or from being bashed by backpacks and handbags, but otherwise relatively undistracted, as in the rest of the day, easy.
Moral of the story: the back of a bus is essentially similar to having your own office, or coding in an empty apartment. If you put your mind to it, you can actually stay in flow state. No one demands the same part of your brain you're using to design and program with. Oh and JEE is far far gone.
Where are we going and why are we in a handbasket?
We (a team of 5) moved into new office space a month ago. We were put into 5 adjacent cubicles in a very large room. Which sucks: you are close enough to annoy each other by noise, e.g. phone calls, but not close enough to cooperate (which requires line of sight).
After a few days we removed the walls separating 4 of our cubicles, which took us a good hour and created a space of roughly 4x6 meters. The walls of the resulting big cubicle are lined with small tables, which we use when we want to work separately. In the middle, we have a table, which we use when we meet. When someone calls in a meeting, everybody just swings his chair around, and viola, the meeting starts within seconds.
On the central table sits a computer with two screens (sometimes facing opposite directions, showing same contents, sometimes side by side with different windows), two keyboards and two mice, so each of us can easily grab a device to point, write, etc. This computer has a complete IDE, and all documentation is in a wiki, the code is in SVN etc., so it has basically the same configuration as the others and everybody is familiar with it. Our meetings sometimes escalate when all of us compete for control of the mouse cursor, but generally discipline is high enough.
We found that this arrangement is the ideal balance between single and group workplace:
You want to work alone, turn your back to the others, face the wall. It gives you just about the privacy you need. You can listen to the discussions in the middle, but you don't have to.
You want to co-work (pair programming, discuss, etc.) turn around and face the middle.
We will definitely keep this arrangement, because we all find it very convenient, and we think that our productivity has increased a lot through it.
Of course, it might require more tables or computers than you have, but Ikea is around the corner, and you probably have a few unused PCs around your place anyway.
Say out loud: I'm an Aspie and I'm somewhat proud, I guess. Uh. Can I write an email in all caps instead? Hm...
Development requires utter concentration. As far as I am concerned, the optimum arrangement for developers is one enclosed office each with plenty of bookshelves to stash away reference books and surfaces put up enough monitors. A nearby conference room with lots of whiteboards and chairs for the occasional brainstorming meeting would also be very helpful. However, management, as I've been told, relies on communicating with people. Maybe they should be the ones put around that circular table in the middle of the room that is now available ... :-)
The man train arrangement would be best for programmers. Try it.
I'm a dinosaur geek. Programming since the early 80s. I thought I was "not a people person". I would have to respectfully say "you and your organization are idiots." You should fire yourself.
If you can't move your butt ten feet to ask your coworkers, whom you're impacting, what their opinion is, then you don't respect them at all. Since you are doing that, I automatically extrapolate that your company does that too. You should fire each other, turn the company over to the "touchy feely developers" who seem to have more people skills than you.
I bet you guys call yourselves "Human Capital Recruiters" too.
Real slick. Go back to the blue collar 1950s manufacturing line that you and your management team obviously came from.
Put them in their own OFFICE not a cube, not anything open. Give them laptops, wifi the building. Put several OPEN areas with tables and comfortable chairs. Let them work from home. They will congregate as needed and when needed,. They aren't morons, they are human machines. Right!?
What a dufus.
Offices, or well designed cubicles - the kind with high walls on four sides, with room for two people when necessary to sit in chairs and discuss.
A meeting room. Now, the thing that lets this work is a central way to collaborate- a way to for two or more to view the same desktop via VNC or a similar app, a central IM solution, and a chat server. Ventrilo or Teamspeak, they're not just for games. If you're a linux shop, it's not difficult at all to use Ventrilo in wine, for those of you who'll cry that Teamspeak's audio quality sucks.
You have privacy and openness in one. 2-3 or more people can sit at their desks and discuss while they work, in familiar environments, without having to see, smell, or listen to co-worker's annoying habits.
-Troll, Flamebait, and Offtopic are NOT equivalent to disagreement.
Big private offices: see Peopleware, which is still the only text that actually uses studies and stats rather than Feng Shui wizard-gabble.
Of course, nobody (short of Google) can afford that any more, so we make up bullshit reasons to justify cramming devs into cramped noisy battery farms, while neatly ignoring that the job of a developer is to develop, not to network.
If you were blocking sigs, you wouldn't have to read this.
As little light as possible. Just throw a steak in there from time to time.
The worst thing managers can do is NOT ask their employees what works best for them. Every person is a little different, so what works great for one person might not for someone else. Some people have very tough jobs and need privacy, but others are deadwood filling a seat so it doesnt' matter when they want. Managers need to tell them constraints, like the budget to do it, and how much time to do it.
People who don't do the work are the worst ones to decide what is best! There are many managers that do lots of moronic crap so they can put it on their resume as appearing they did something important....those are the worst aholes that you have around!
Simple answer
Google environment, "copyleft" from WANG development days, as evolved at D.E.C. premises. Those were the days, and engineering at its peak. Of course @Boston.
take a leap of faith, and go with the panopticon to help install that sense of paranoia that all employees need
I've always found that both I and many of my friends like to work in pairs so arrange the desks into 2 pairs where the pair can see eachother's screens. Also, make sure the devs feel comfortable hotseating. It should be their space as a team, not 4 individual spaces. Some offices even go as far as having one computer per 2 devs so people have to work paired. It's actually a great work dynamic as it's difficult to focus for a whole 8 hours of coding during a work day but it's reasonably easy to be an extra set of eyes on somebody elses coding. Having 2 devs working at a single station you often get more and better code (than if they were working separately) as the code quality will reflect the experience of both devs while 2 sets of eyes reduces errors so less time is spent debugging later.
I guess it will somewhat depend on what you expect them to be doing. If they will be working mainly on maintenance and sys admin tasks then arrangement is less important. If they are working on real software development projects then they need to be able to collaborate easily. Don't worry about devs chatting and wasting time, they will do that anyway. Writing good software requires significantly more focus than just about any other job in your office and it's important that a devs can clear their mind to take a fresh look at their work and make sure everything is on track. Heck, when I chat to my colleagues we tend to be debating pros and cons of different approaches to problems anyway which benefits us an the company as we produce better code by pooling the best ideas.
If you dont mix higher grades or suits with them, I think any way is all right. I had a team of 35 younger programmers of mixed gender and multiple projects in one room with a conference room that could hold less than half the number. They tended to group around specialities and skills and not projects. For project meetings including with end users, the conference room was used. If you are not on a budget, get good modular furniture so that you can change it around (with a little work on network cabling). End
If the walls are all windows and none of them face the sun it might.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Where I am presently, we use pods/quads--similar to four cubicles that open up into shared middle space in which is a nice round table. We each have semi-privacy as everyone works in their corner of the pod/quad. We are close enough together that we can share ideas very easily, and have enough privacy that we can withdraw from the others when needed. All it takes is a quick roll of the chair. The centre table also makes it a convenient place for lunching together, code reviews, design brainstorming....
It might not be for everyone but it works for us.
Additionally, when populating the pods, we try to mix the new programmers into a pod with the seasoned programmers. It helps them learn faster as help (if necessary) is right there, and they can learn a lot just by listening in to the design conversations.
When they're bad they bring productivity down, but the best working conditions in the world won't make mediocre developers brilliant.
They're what Herzberg called a hygiene factor.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Sitting developers opposite each other is fine, as long as I'm no longer opposite the one who interrupts and takes "hang on a minute" said fourth time as meaning "no I'm really not trying to concentrate on something at the moment, please keep waffling on at me about the silly problem any idiot could fix instead of listening to my request that you wait just one bloody minute". Not that I'm bitter or anything.
I've worked in all sorts of development environments. If you want me to code, you need to remove as many distractions from my environment as possible.
At my first job out of college, I got an office. The thin office walls connected to a seldom used conference room and the VP of our site who was hardly ever on the phone or held meetings inside his office. Calm, quiet, great for coding.
I switched teams and was provided access to a "lab" environment where people came and went all day. First come, first served on any system there. My team setup our desks to imply we owned our systems, but that wasn't true for most of them. It was for mine, but it was paid for by a specific contract and only a few people actually had accounts on it. This lab was a fishbowl - windows on 3 sides with government dignitaries looking in and pointing. I learned to not pick my nose there. It was noisy, distracting, really hard for a human to work in this environment.
Next job, I was placed into a cube farm at first. I suspect most people have those. 1 dev, 1 cube. It seems like the distractions would be minimized. My cube was at the end of a row, against the wall. Very little foot traffic, but the noisy over the entire farm was difficult to handle without headphones. My team all sat in a cluster of 10 of those cubes and most of us used headphones. We would yell over the cubes and "gopher" for a quick meeting. Wads of paper were used to get someone's attention.
Next job, at a Fortune 50 company trying the new team-oriented seating setups. You know, a table in the middle with workspaces around it where 4-10 devs can work. This was terrible. We'd hear each others' personal conversations, issues about different projects, and these spaces were setup with 4 different teams sharing a divider, so you could have 16 people working without any sound barriers. Phones, cell phones, normal conversations and work. TERRIBLE.
My concentration was best in the individual office. It doesn't cut you off from your team and it is a good feeling to close the door when you really need to concentrate or simply talk with your wife about your pregnancy in private. My team had a rule about office doors - they shouldn't be used unless really needed. It worked. Offices also prevent sounds that can distract others.
One day two FBI guys were sitting in my office when I returned from lunch. Ah .... that's a different story.
Software is dynamic. People get hired, leave, promoted, move. Equipment comes and goes, gets rearranged, reconfigured. Cable locations and requirements keep changing. Convenient, large cable guides running along lots of flat surface table, shelves above and below the desk to sit devices like printers, routers, switches, extra monitors, etc all around your workstation in any arrangement you want, lots of space behind the long tables to run cables in any way you want. Perhaps networking with some sort of safe 'testing network' separate from the production in the rest of the company, to run weird servers, routers, etc. No complaints that it's messy or ugly, it's a lab, not a meeting room, but efforts to keep minimum neatness and order are needed. Silence please, rules of low noise level, library like, concentration and attention is required. That's me at least.
Build your own energy sources from scratch. http://otherpower.com/
An open room is the best. You will never have people on you tube. You will never have people on the phone instead of working.....etc...etc
Coding without my pair makes me sad :(
Just buy furniture that can be arranged any configuration. The best seating arrangement is best decided by the individuals. Some people get really bothered if someone can peek over their shoulders, while others couldn't care less. Similarly, some might be very distracted by any movement that is visisble for them in the edge of their line-of-sight, and such people would actually prefer to work faceing directly into a wall. Also, the team might change in the future, with people entering and leaving.
You hit the nail on the head. Small offices, with room for 1 other chair so someone can see the screen. That's all you need. Doors are good. Whiteboards are good. A small conference space, if your group actually works together. Otherwise, grab conference space when needed.
Now that I'm a management type, I've got to have room for at least 2 other chairs in my office, but I evicted the 3rd spare chair. Nothing happens when there are 4 people in the room. I don't know why.
At their homes, telecommuting, and in a room devoid of small children and/or managers, with their phones off so they can stay focused and get their work done.
Build them a cave, quiet and dark. Pile a bunch of furniture in front of it and let them furnish their cave themselves. At the beginning of each project deliver the Requirement, pizza, hot pockets and multiple cases of caffinated beverages. Leave. At the project milestones deliver more of the same and trade for the results of their work. Hang a sign "Enter at your own Risk". Remember the cave must be virtualized so make sure there is good, fast VPN into the cave. Do this and you will have great success. Do not do this and your mediocrity will know no bounds.
If the walls are Windows (r), then you probably should use Visual Studio.
No seating arrangements, no cubicles, give them each an office with a window. If you can't? Time to find a new job.
That ought to shut them up, bloody whiners!
I've always found them to be entirely counterproductive filled with unnecessary interruptions and background noise. (Phones are bad enough as it is, let alone having to hear whatever crap that your co-worker likes to listen to bleeding through his earphones/buds, etc.)
Ideally, I prefer an office with an actual door and a cublicle with at least 5.5' walls a far poorer second choice.
Email or IMs should more than suffice for most communication discouraging the chatty co-worker who couldn't be bothered to send an email or IM, while still allowing for face-to-face when necessary, however I find most of the face-to-face stuff of any relevance to be either early-planning, or things that you might not wish to be on the record yet or ever.
The Koch snowflake.
My UID is prime. Hah!
Individual attitudes and corporate culture matter a LOT here. If your work culture forbids an occasional trip to Facebook or a Flash game to unwind, people are going to be opposed to the loss of privacy that working in a communal setting usually means. Culture changes are difficult and slow. Some people have attitude or distraction problems and are annoyed by every little sound that their neighbors make, to say nothing about the occasional interruption by a coworker actually taking advantage of the new work arrangement to ask a question. You should probably find a way to accommodate them.
Build flexibility into the new arrangement. This may mean giving your employees an open space with no (or half-height) cube walls, and let them decide how they want the interior arranged. This may mean new (half-height) cube walls and desk arrangements where some are pointed at walls or windows, and others are pointed at the center, or at someone else. This allows each person to create a space that's as private or accessible as they want. Create a budget for the team to decorate or furnish the space (their own desk and the shared area). Let people order headphones.
To deal with situations where people just need a break from the group and want to focus, set up wireless and put in some couches in different areas of the floor. If you live in a sunny area and have an accessible patio, put in some furniture and make sure wireless extends out there as well. Each person works differently, and while your boss might be able to measure some aggregate increase in productivity by forcing everyone into their idea of the most productive work arrangement, you're going to make some people annoyed, upset, and less productive. Try to be accommodating.
You need to analyze whether your developers are naturally inclined towards introversion or extroversion. Personality tests like the MBTI or Keirsey temperment sorter can help you here if you want to do a scientific job of it.
Extroverts tend to work well in the "bullpen" arrangement you describe. The improved communication enhances their productivity and also improves morale.
Introverts are destroyed by the bullpen arrangement. Productivity and morale will take a nasty hit and some of them will outright quit. You'll get the maximum productivity from introverts by placing them in individual offices with doors that close. In fact, with high-paid high-skill jobs like software development, the introvert's productivity improvement achieved from placement in a private office damn near always outpaces the cost of the office.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
As others have said, you should ask your developers. But here's my opionions:
If you can manage to give everyone their own office, preferably with a door, do that instead. My happiest office experience was at a small company that was slowly going out of business. When one of the VPs left, I managed to snag his office. Big office, plush (but old) carpet, giant desk, plenty of outlets, and a window. It did have two doors, so people tended to use it as a hallway, but there were so few people left in the company by then it wasn't too bad.
If they have to share a room, I say a desk for everyone. Not a shared table. If you're using actual discrete desks, put up some "Les Nessman walls" and let the individual developers position stuff how they want in their "office." Some will want to face the center, some will want to face the wall.
If you insist on using a cube/furniture system, our layout is tolerable. We each have a u-shaped desk with the open end of the u facing an aisle. Between the desks is a cube wall just high enough that I have to raise up out of my chair about a foot to see the next guy. That height cube wall make it possible to hear the neighbors but ignore them if you want.
In my case, I have the support team lead as my neighbor to the left, so if one of his guys shows up I kind of open one ear and offer information if they sound like they need it. But I handle interruption pretty well.
The preferred solution is to not have a problem.
From a developer viewpoint I'd say "best" would be beach chairs in a line facing the beach with umbrellas providing some shadow and cool drinks. ;-)
If productivity is the primary concern, make sure that each developer has his own private area (meaning separate desk with plenty of space (including drawers etc.) and noone staring at his back, or if you must, cubicle) but also that it is not too difficult to communicate face-to-face with other developers on the same project (getting up and walking 5-6m is fine, having to open 2 doors to get to someone working with you usually isn't). Connected tables/star- or U-shaped arrangements are bad in my opinion, they encourage chatter, "thinking aloud" and mindless "hey look at that funny pic" kind of discussions. The worst ever place I've worked in was a tiny room with nearly a dozen people working on a continuous table space lining the walls, the software development equivalent of a call center....
For 4 developers (probably in 1 room?), I'd recommend just buying 4 spacious, rectangular or L-shaped tables that are placed at some distance of each other and a few plants to put around/in between. A small round table for discussions/meetings/quick food isn't a bad idea.
"I love my job, but I hate talking to people like you" (Freddie Mercury)
I realise that this isn't the same as an office environment but at the MS X48 event (teams of four people make a game over a couple of days) we were sat with four people on a round table. We were constantly running around the table to get between stuff we were talking about together and stuff we were looking at on our own PCs. Talking to people over the top of monitors is fine but as soon as you want to point at something on your screen, a round table gets in the way.
I suspect that while a round, clear table is probably better for brainstorming, having table arrangements where everyone sits back to back would be better for people working on computers but regularly working together on small parts. Any piece of information you need to share is then just a push and a swivel on an office chair away from anyone else.
Anecdotally, I help run the video gaming society at my university and we found that people get up and talk to each other more when we arrange tables so that there's plenty of room between them and no-one has their back to the wall.
I wish to remain anomalous
The best seating configuration would be cramped cubicles with old office chairs (with minimal adjustment options and worn padding in the seat), harsh fluorescent lighting overhead, and a taupe or beige color scheme.
That seems to be the standard, as far as I've seen.
When I'm writing code I have two modes: Planning/Collab and hardcore coding. When it comes to planning/collab having an open space is great. Easy to interact, easy to work with others and everyone is heard. For hardcore coding it's time to be segmented away from others. Half walls don't work. Wearing earphones isn't enough. To be as productive as possible I need to concentrate using the ideas and plans from the planning/collab time to write my code.
It's as simple as that. Either have a small team room and individual workspaces free of outside distraction or get a transforming workspace of some kind. No need to listen to the seating experts spout something that 5 years ago was bad but somehow became good again (and will be bad again soon).
I currently work at a place what 'proudly touts' open floor plan for all IT developers. The end result is people really want to work from home when coding to avoid managers interrupting, PM's being PM's, smells of lunch (or worse), people on conference calls, etc..
Oh, and no round tables. It's a waste of space and people still are crowded.
Eat it, Yoshi ! /nt
You will probably want to go the other way with it... Instead of sitting around a table facing each-other, have them sitting inside a ring facing away from each-other.
I've had teams work lots of different ways --- the ring idea has always worked best.
Most of the time when they want quick collaboration it involves something like "take a look at this" -- either on a note pad, or more commonly on a screen. When facing a table the only way to do that is turn the screens (trouble) or walk around (inconvenient).
With the ring concept a quick turn of the chair does the trick and they are face-to-face or co-piloting a workstation.
Also -- when they don't want to be distracted the ear-buds go in and they're facing away from everything.
Also (I know this isn't on most folks radar) -- sneezes an coughs go AWAY from the other devs, so it's not so easy to spread colds etc.
Finally -- from inside the circle the walls of the circle are large and offer a lot of space for personal effects, charts, artwork, etc... It provides a good opportunity for personal expression without adding extra real-estate.
Get in the circle -- you'll be glad you did for lots of reasons.
_M
I counted the preferences in this whole discussion to about 3/4 of the way down to this post.
Here's how it pans out, give or take one or two that I misinterpreted, and not counting wafflers and OTs:
Private Office: 77 (62%)
Cube Farm: 14 (11%)
Open Area: 33 (27%)
The "privacy and peace required" advocates are in the clear majority.
Where are we going and why are we in a handbasket?
Maybe on comfy beanbags. Put your chips and twinkies into the middle forming a community pile. Pass to the right, and no "bogarting".
"Flyin' in just a sweet place,
Never been known to fail..."
It depends on what your options are, but if you have one big room and have to fit several developers in there, then what you might want to do is just buy separate desks for each developer and let them work out where they put them, at what angle, with or without cubicle walls, etc. If they really want to arrange it in a circle, they can do that. I have worked in spaces like that and it worked out very well. I'm sure I'm not the only one who is particular about the exact position of my desk -- aren't most good developers a bit anal? If you try to design it too much, you're going to get it wrong.
How about asking them, instead of asking slashdot and taking it's rule to your dictatorship.
That was my first reaction and my educated guess is that your developpers will react in the same way.
Office Models Here are 3 basic office models I've worked in. They're all good for the right reasons.
1. For a small Team on the same project/task A group office would enhance collaboration for hasty/frantic development work ala Agile programming where designs are dynamic and evolving. This should be is a relatively short term arrangement and when the group reforms, be prepared to also rearrange the team office. Headphones and music of choice helps block out unwanted conversation during periods of concentration, though you could listen in on meetings and decisions while working.
2. For mature development/maintenance For longer term development/maintenance individual offices/spaces probably work better because things should be rolling along and folks are working within a framework. These arrangements typically will also set up a war-room to tackle tough problems until they are resolved.
3. For field consultants / professional services If you want your staff to spend more time working in the field on billable time rather than the office, set up a hot desk/hotel or just benches with power above the bench for easy laptop access. For network, of course, you'd have Wi-Fi. No one has a permanent space, though you would provide lockers for field staff to store some personal effects like a reusable coffee mug.
Ask Your Staff If you want a successful office design, ask your staff and discuss the options with their strengths and weaknesses.
Who gets the window office? In my opinion: No One. Not even the boss - gotta lead by example: right? Make those the meeting rooms/spaces and aisle. If you have cubicles, keep cubicle walls low - about 4 ft - but add a glass top to 6 ft to keep down noise. For offices, include a window in the door and side for natural light. Add natural light ducts to the roof.
Don't be a square Include some visual interest in the office design buy incorporating a rounded wall or two and fun colors/design (employee lounge/creative meeting space) and maybe a diagonal aisle. It takes up a little more space, but keeps of the office from being just a square world.
Sound Abatement Ensure you break up hard surfaces in a large room with soft art (large fabric covered panels) or hanging banners to attenuate sound. There's nothing worse than being on a conference call and sounding like you work in a cave. Actually, this is unfair to caves because they often have very good sound absorption.
Cost A good office design does not have to cost a fortune. I've seen very nice office design that used simple galvanized steel and fiberglass corrugated roofing, and varnished plywood sheets as basic building materials.
Learning By Example
Tech Top 10 Workspaces (2008) http://slashdot.org/story/08/05/07/1159255/Techs-Top-10-Workspaces
Some developers work fine in a chaotic and noisy environment. Others - like me - prefer peace and quiet and find it almost impossible to concentrate in an environment where the person next to you is discussing work or last night's game, or arguing with their ex about who gets the kids this weekend.
I've always thought it was idiotic to suggest that if the noise bothers you to simply get a set of noise-cancelling headphones to block it. Firstly because it's the company saying "we can only give you a second-rate work environment - if you want a first-rate one you can pay to upgrade it yourself". Secondly, because wearing them completely cuts you off from the human contact you were supposed to get by working in a collaborative environment in the first place.
My most productive years have been spent working from home, using IM or email to collaborate on a day-to-day basis, with weekly or fortnightly physical meetings to nut out the hard stuff.
Have individual private work spaces and a common collaboration area to bring laptops and toss out questions and ideas while you code. Use the rest of the space for a pool table and air hockey room.
It's really best if the desk is spherical, or at least has very short legs. Developers are most stimulated by awkward postures and noise, with frequent and insistent distractions. Loud bells, the occasional mime, dancing girls, and even wild animals may help, especially monkeys and snakes, as long as the snakes are introduced in sufficient numbers, and the monkeys are agitated. Managers should be strongly encouraged to use the trapeze, and those from HR must be required to wear very bright colors and sing, so that their approach may be detected. It's very helpful if design specifications are frequently changed without notice to keep everyone on their toes, and the mood should be one of anger and suspicion. Strong smells should be frequently introduced, such as burning insulation, spoiled perfume, and a variety of molds and pollen. With luck, word of your sophistication will spread among the engineers in the community, leading to the chance to import a stream of personnel from countries whose opportunities in the H1-B program have previously been quite limited, employees who are flexible, trainable, and need your help moving millions of dollars of revolutionary funds to a bank account in America, after a series of small payments to establish, you know, trust.
I'm wondering if you could avoid power naps in a Barcalounger with six degrees of freedom. I thought that was implied.
The benefits of inebriation? What did you think I meant by "refreshments"? Milk?
Help stamp out iliturcy.
I'm guessing you're assuming more than one developer per indoor pool. I can see where a mistaken drive for economy might drive you to those dire straits, but I would endeavor to dissuade you from that false economy. Each developer is more than adequately connected to his peers via telepresence. He doesn't need physical proximity and in fact that is a deterrent to productivity. Excessive contact with humans in an uncontrolled setting can set a good programmer back six months. It's best if each has his own pool.
Programmers as a rule have control issues. If you try to defeat this, you'll lose 90% of why you hired them. Control is an important aspect of security. Programmers who are confident they have control of their personal situation write more secure code than programmers in doubt. It's best if you put them by the pool with iron-clad contracts that alleviate any issues in this regard they might have, so they can focus on producing for you the best possible product.
Help stamp out iliturcy.
What do the developers think is best? I have worked in an open collaborative space, and found it exceptional. After a recent management change, they moved us all to cubicles with our noses in the corner. I know that some people would have preferred more privacy (they love their pr0n), but most of us wanted the open space. Management made their decision without our input, and most of us are pretty resentful.
What you believe, or management believes, may not always be what is bet for the team. Let your team voice what is best for them.
-The wise argue that there are few absolutes, the fool argues that there are no probabilities.
Absolutely has to be the X configuration popularised by Michael Milliken: http://neurologicalcorrelates.com/wordpress/wp-content/uploads/2009/03/milken-x-shaped-desk-drexel-beverly-hills.jpg
Having been out of the soulless corporate workplace for a while, I feel I can speak about this rationally. 1. Developers should have offices with doors on them, or at the very least a quiet place to work. 2. Any project of any size requires meetings among developers. Use the table for that. I am a software developer since 1966.
Sadly, there is this notion that people need to shove into a pile and work in some kind wide open area. I'd like someone to try this: Give 1/2 your people a real office with a door they can shut and control over distractions like turning the damn phone off. Put the other 1/2 in the typical dog-kennel style arrangement where you can hear every goddamn noise and distraction. Do this for 6 months and see who is more productive. I'll bet you can guess the answer. I just can't effing stand the wide open office cube farm. Just how much collaboration do you need?? Are the specs so lousy that you have to discuss every case or sequence? I'll bet there are a lot of people who work late or come in on weekends just to get a couple quiet hours to get some work done. If those people had some peace and quiet they wouldn't have to be at work 90 hours a week to do 25 hours of productive labor.
In the '80s IBM studied the question of what environmental factors made programmers more efficient. Result: The primary correlation with output (and low bug count) was uninterrupted time duration -- long blocks of uninterrupted time produced better code on average from a (large-ish) sample of programmers than did constant interruption and reconstruction of mental state.
Conveniently, this has been re-examined recently. http://www.ibm.com/developerworks/library/it-nielsen4/?dwzone=ibm
So, assuiming your job is to actually *help* the company, I'd recommend the arrangement that minimizes interruptions.
In this century most of developers can work very well at home. They are means to check on them for supervision purposes and the company can save a LOT of money on commercial leasing space, electricity and so on. Net meetings are more desirable than just shooting questions randomly at each other. They simply force you to be well organized and promote good time management habits.
Asking your developers is good, but not definitive. You may end up with different developers at some point in the future (people retiring, new hires, etc.) so asking here is a great place. I work with 3 other developers. I love the silence, one loves his music, one works offsite (from another state) etc. I think you'd be best to give each developer their own space (office) so that they can personalise it to how they best work without bothering any other developer. For interaction, face to face is rarely necessary, and should it be, I'm sure one dev can walk to another's office, or similar. For collaboration, I'm pretty sure you'll a) have a phone system that has speakerphone (or skype, or whatever) for voice, and then you just need one of the many software solutions for screen sharing. Then both devs can talk, and see/control the same 'screen', all without having to give up their personal space/environment (or be bothered by that dev who farts all day long, or checks out your arse, or whatever else annoys you). Email/instant messenger w/logging is fantastic for keeping a communication log so you can check back over previous items, etc, and should be used whenever possible, but I agree that that is not always ideal. Plants are good - they improve the wellbeing of people, and make the office less oppressive. With all that said, having regular breaks - ideally 4 15 minute breaks during the day, where the devs can take a smoke break/eat something/whatever, but get some face-to-face should they desire it, and perhaps talk work, perhaps not, will keep the team connected and productive.
"lt;dr" is the correct response to most of my posts.
If I have to move my desk one more time I'm going to set fire to the building.
And for your information, a workhorse can't read specs, and a programmer without passion for his job will not follow them.
Programmers without passion often follow the specs to keep their jobs but don't exert effort to correct incorrect specs.
You know, as a developer, development manager and now a business owner I have to chime in here. You are about as wrong as you can get, but your attitude makes you right in your circumstances.
If you seek that environment then so be it. I ran a dev shop where the powers that be (IT Director) wanted things like that. We developed a 2 million line codebase in about 3 years with a dozen developers, and a half dozen business analysts / QA staff. It was hardcore SDLC waterfall style.
I volunteered for a layoff, happy as a clam to get it and a few years later wrote a competing platform myself in about 120k lines in 8 months that had twice the functionality.
The bottom line
If you have a dev shop where you need assembly line coders then your doing it wrong (horribly wrong), but please continue as it gives me and others like me the competitive advantage.
Codeguru FTW!
If you want to offend me you're going to have to try a lot harder than that. Think midgets, ferrets and duct tape - and square it.
You're fine - faux offense is in this case just my artistic license.
Help stamp out iliturcy.
Incidentally I'm not a greedy jerk. By C3000 max config I only mean four of these (geek porn) and some PCIe sidecars with GPUs. I don't need the double-density blades that put 16 blades with 32 Westmere CPUs in one 5U blade chassis. That would be asking a lot. A nice casual infrastructure with 80Gbps of uplinks would be nice this decade, at least for me. I have modest needs.
Help stamp out iliturcy.