Best Seating Arrangement For a Team of Developers? 520
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?"
Scientific Evidence (Score:5, Interesting)
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.
Sickness (Score:4, Interesting)
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.
Re:Why not (Score:1, Interesting)
Managers never ask. If they ask they're not managing, right? Honestly, sometimes you just don't think.
Good plan (Score:5, Interesting)
Re:Why not (Score:5, Interesting)
I don't know, it may not be something they're immediately aware of.
A seating arrangement I've found works well is on the inside of a ring.
Have the desks setup with dividers so if someone needs to buckle down
and focus, they can, but if they need to confer, they can turn around.
I've tried cubes, offices, labs, and that setup, and I'd have to say,
for small groups, it seems to work out the nicest.
Re:Non sense (Score:0, Interesting)
Re:Non sense (Score:2, Interesting)
Pair coding (Score:3, Interesting)
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?)
DO NOT USE A ROUND TABLE!!! (Score:4, Interesting)
Use a RECTANGULAR table if you want to fit 4 or more people around a desk.
Re:Good plan (Score:5, Interesting)
The current situation I'm in: (Yes, it's a rant...)
I sit in a half cubicle (where the wall only wraps the desk and no more and it's short enough to peek over without standing) and right next to me is my boss. Everyone else on our team is in different states. My desk also happens to be right next to the break room where people religiously burn popcorn, microwave fish, and speak to each other as if they are in a stadium because the television is turned up loud enough to drown out said people. There is someone about 12 feet behind me in a similar such cube whom I constantly hear sucking on one of those water bottles and randomly taking a bite out of an apple or other similar food product. I get a whole 5 minutes a day to do something that's not "work related" because someone thought it would be a great idea to take our Scrum process and turn it into a timesheet detailing what we did the previous day and if we don't account for at least 6 hours of work, who knows what will happen. But we are asked on our Scrum meetings to justify at least 6 hours of work.
My only solitude is late at night when most of the people have gone home, and that's when I get the most work done.
We used to be able to work from home, but some idiot decided it would be best to move to a VPN system that requires system validation to determine if you are on a work Laptop before granting you access to RDP to your own PC and I am not in a line of work that "requires a laptop." Said VPN system limits me to only browsing web pages. Big waste of time and resources since they are paying for my RSA token and account access that I can no longer use.
My suggestion for the OP... ask your developers. If you have the chance to give your developers a choice, DO IT! Then ask them again in 6 months to see if the situation is working. Above all, give them a chance to find a quiet place and don't force them into an open arena where people are constantly looking over their shoulder.
Re:Why not (Score:5, Interesting)
Re:Why not (Score:3, Interesting)
Re:Scientific Evidence (Score:2, Interesting)
Closed: Go away unless the situation is dire. I'm doing a performance review, interviewing an applicant, etc.
Ajar: I'm concentrating, but if it's important, I'm available.
Open: Let's talk.
Re:Non sense (Score:4, Interesting)
Re:Non sense (Score:3, Interesting)
Best environment I was ever in was when everyone had their own office (literally, the only people with cubes were sales or out-of-town prof services). When you wanted a meeting you didn't need to find a conference room since you could get 2 or 3 into an office and shut the door and have a discussion. If you wanted privacy you shut the door; if you didn't you kept the door open. There was a lot of collaboration under this scheme, everyone knew each other, and everyone interacted with each other.
Re:can we tag the article flamebait ? (Score:2, Interesting)
getting in the Zone (Score:3, Interesting)
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. ;)
Re:can we tag the article flamebait ? (Score:3, Interesting)
Re:Pair coding (Score:3, Interesting)
Also with two people at the terminal, doesn't that means you've got twice as many people doing the same job as other companies? Ie, if I've got 20 engineers all with their own areas of expertise or at least their own features/bugs to fix, I'd have to have 35-40 engineers to get them paired up this way. Seems wasteful. What does the one person put on their resume, that they spend their time watching someone else type?
Sure, I'd love to have someone to collaborate when and where I want (and leave me alone when I don't), but who's going to pay for it?
Also, people need to have their own computers, not shared computers in a quiet room. Then they can use their own tools, settings, etc. Doing everything from shared drives or over vnc can really slow thing down.
Re:Good plan (Score:3, Interesting)
Best arrangement I have seen:
- 2, maximal 3 people per room
- large desks, large monitors
- keep it quiet, put some plants there
- make it easy to collaborate without interrupting people (e.g. Instant messages*)
- Block Youtube et. al., they eat your time
I was with you up until that last one. Eliminating the ability for developers to take mental breaks is a great way to just piss people off. If your developers aren't disciplined enough to control their Youtube watching, such that it impacts project deadlines, you have far bigger problems. You shouldn't need to babysit your people.
Visual Audio isolation a must (Score:5, Interesting)
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.
You are retarded. (Score:4, Interesting)
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.
Re:Good plan (Score:1, Interesting)
Everyone's different. Me, I can't stand being faced across from someone else. It's distracting - are they looking at me? Am I staring at them while thinking? Could be a social phobia of mine, but it's still a reality.
Re:Non sense (Score:3, Interesting)
But the key words are "if done properly". Just stuffing two programmers on the same desk is, as you say, a good way to not get stuff done.
Re:can we tag the article flamebait ? (Score:5, Interesting)
The last gig I did, I sat opposite the other developer who I needed frequent contact with. Everyone else got me by email, and I would initiate return phone calls. This avoided unnecessary interruptions in my workflow, and I could queue their requests to allow me to optimize my time.
In the past I've used similar setups. Do all the developers need almost constant face time with each other? Probably not. Then why stuff them in the same room?
At one company, everyone in the same office suite had their own office. That was maybe 1/3 of the development and systems staff. The rest were around the world. Communications were generally by email, except when live interaction was required. This kind of setup worked very well for me, so I could be at home, the office, or the datacenter, and there was no interruption to my workflow, except when I was traveling. It all worked out very well. It didn't matter what timezone someone was sitting in, the communications flow worked fluidly. That was a situation where all of the members of the crew were very good at their tasks, and didn't have to ask for help for stuff very much. Communications were limited to status updates and functionality interaction statements. Well, we'd BS sometimes, which was good for morale and to get to know each other better. I worked with a developer in Russia for probably two years before I ever heard his voice, and never did see him in person. I did know his work was accomplished properly, and his requests to me were usually "I need this functionality on these servers." I may ask for clarification, but since he knew what he was talking about his request were usually very clear.
I guess if you have a team who are going to have lots of questions because they aren't totally clear on what they're doing, stuffing them all in a room is a good idea. A well thought out and documented project plan would alleviate a lot of those problems though. I can imagine a room with 10 developers who can shout questions to each other would create an amazingly high amount of unwanted distractions. Verbal communications also reduce the paper trail. If everything is done via email, no one can say "I asked you for ..." and it wasn't done because it hadn't actually been asked for. The simple "You requested X at 3:30 and I responded it was completed at 5:00" is amazingly useful down the line. It completely eliminates mistakes in memory where we thought something was asked.
I've annoyed a few people before where I've told them to always email the requests to me. When they've failed to do so, but insist that they did ask for it, I can usually recite the conversation verbatim, and then they'll remember that they had only intended to ask for it, and never actually said to do it. That's usually enough to initiate the email papertrail so the same mistake doesn't happen again.
Cubicles ripped apart (Score:3, Interesting)
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.