I have worked in a variety of environments wanted to share my opinions and see what others thought on the subject of ideal office space layout. Once our lease is up (in a few years) I am thinking of building out our space to be better suited for a software development company. Our current setup is an open layout and we have four employees.
Which layout do you prefer and why? In your experience has it been a crucial factor in attracting and retaining employees?
Private Offices I know Joel swears by his "an office for every developer" mantra and says that it is his competitive advantage. I have heard others echoing that sentiment on this site.
Personal offices are quiet, allow getting in the zone and staying in the zone with fewer interruptions and allow full privacy for personal calls. On the other hand, working in an office isolates you from your team and reduces overall communication. They can be also be an inefficient use of space and quite expensive to build out especially if done right (e.g. windows for every office).
Shared Office A compromise with 2 or 3 people sharing the same office space. I think this is the inevitable outcome of the Private Offices option above as the company grows (I think even Joel herds together interns as well as IT/support but correct me if I am wrong). This can be good or can be pure hell depending on the size of the office and who you are sharing it with.
Fully open layout This setup is preferred by the XP school of thought. Shared space facilitates the dissemination of crucial information in a more timely manner and is the cheaper way to go for companies that are self-funded and are on a tight budget.
I think the major issue with this type of layout is the fact that it does not scale for companies larger than 15 people. At some point noise and interruptions becomes a serious issue as does the lack of privacy. Perhaps that can be solved by partially partitioning the space but I have not seen that done successfully.
Open Layout with Private Offices A company I worked at had a large open area where every one worked but also had a number of offices (fewer than the number of employees but a decent number). You could use an office if you needed to have a meeting, make a personal code or wanted some alone time with your code.
I think a design like that can work but there is a definite issue of a "move cost" every time you need to relocate your work area (I have books, notes, my favorite keyboard, etc). Another issue is the fact that this setup requires a lot of real estate which makes it fairly expensive.
Cubicles I figure I will bring this option up just in case someone here actually likes working in one of these things (I don't). They can be a very efficient use of space and relatively inexpensive.
I'd take Joel's advice and go with private offices for each developer. You can have some open spaces where people can gather to brain storm and collaborate, but the purpose of doing this is to focus on what each developer is going to be doing in the near future. They'll need quiet to do it.
Programmers need uninterrupted quiet in order to work. I repeat, programmers need uninterrupted quiet in order to work.
Even when I plug in to my mp3 player to try and drown out the noise of sales calls next to me, I get distracted by the music. If what I am doing is not going very well, even the sound track that plays in my brain (no headphones needed) becomes a distraction.
I usually end up just hammering out an outline of what I'm going to do once I get home and have peace and quiet.
I would much rather have a cube sized office with a door that can be closed than an open space, cube or shared office. If I need to collaborate, I just fire up an IM client or pick up the phone.
Clearly this is a personal issue, as evidenced by the diverse opinions, and I'm going to weigh in with yet another.
So really, I think the answer is: Whatever matches the culture of your company! For us at Smart Bear, shared offices with just two people were perfect.
I think quiet is the key. You need to designate quiet areas and/or times for development work to get done. Offices with thin walls and loud people on speaker phone aren't much better than a group of cubes with people who need and respect privacy.
I prefer the Fully Open Layout with plenty of conference rooms. It does take some getting used to and there are distractions, but I have found that it's the best way to innovate with a team.
The arguments about quite time and distractions are all valid in a Fully Open Layout. The upside comes when you couple the open environment, which fosters team creativity and collaboration, with the ability to work from home and flexible hours. These three things provide the right balance that, for me, makes it all work. People can also use headphones to block out the noise but what I have found is that once the team settles, it's pretty quiet.
I also apply the Fully Open Layout to everyone, including executives. People that are constantly on the phone just need to be moved away from the development team and put in their own open environment. For me, it's each functional unit should have an open layout so that they can collaborate and then have plenty of conference rooms for private meetings.
Having experienced all of these I would say the best is private office and sadly cubicles.
Shared offices are terrible in my experience, personal space, privacy, etc is all compromised.
Open floor plans can be okay, but noise does tend to travel a lot, interruptions are more constant, even if not directed at you. (Much easier to get distracted by something else happening next to you.)
Finally communication while can be boosted, often in my experience isn't, as at least the software developers I have been around typically reach for the IPOD and headphones and block out all your verbal communication, which means getting up and walking over, and distracting them much like if they were in a private office anyways.
Private community offices aren't bad if everyone is laptop based, and they are equipped nicely. (As in dual or triple monitor setup, with docking station, nice keyboard, mouse, etc.) Though even plain empty office space can be nice for developers that don't mind working on a laptop directly and don't want to cart around a ton of items. Of course this can lead to a shortage issue, and what do you do with other items or classified materials, etc.
Private offices are self explanatory I think, and cubicles while not great do offer some of the same benefits such as reducing noise, providing space for items, and a generally decent degree of privacy. (This is assuming high wall cubicles, low wall ones are entirely worthless.)
There is no right or wrong answer. I have many software clients. Some prefer open layouts while others prefer their employees to partner up with 2-3 people per office. Some like their employees to work as teams so they pair them up 2-3 per office so they can collaborate on projects. Sometimes they use a combination of space layouts: Open space for admin or support specialists, offices for software developers and account managers, offices for executives, small rooms for making private phone calls or meetings.
This is one example of a software company layout....http://www.austintenantadvisors.com/files/Arboretum.pdf
If you are interested I can send you others for ideas.