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 ?
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.
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.
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.
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...
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.
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>
Completely agree. Need private office with a collaboration area or lab. In 27 years of sw engineering, that was the best, most productive setup. The team would congregate in the lab every day for an hour or two, but when we really needed to buckle down and seriously code, the private office was great.
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 :) )
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!
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.
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.
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"
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.
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.
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.
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...
Honestly, what is wrong with letting your software engineers/developers work from home? Collaboration tools are omnipresent with online meetings and VOIP that the office is almost an anachcronism. Unless, your egineers double as desktop support, working in an office is almost superfluous.
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
The best seating arrangement is for each developer to work at home!
Have you fscked your local propeller head today?
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.
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.
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.
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.
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.
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.
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.
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 ... :-)
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?