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?"
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.
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.
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.)
I strongly agree that developers need their own office with a door. There are times as a dev when you need to close the door and have no distractions for a few hours straight. A personal office allows that.
At my work R&D has offices in a circle around a shared bench area. If you want to collaborate you can go to the center area or use someone's office. If you want to listen in you just have to leave your door open. If you need some privacy and no distractions you can close your door. Best of all worlds.
"If you are going through hell, keep going." - Winston Churchill
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.
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
There is some group goofing off that occurs, but no more so than any other work arrangement I have seen.
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
* Instant messengers allow you to signal when you want to be left alone, and the program postpones showing you incoming messages.
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
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.
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.
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.
Serious? Seriousness is well above my pay grade.