Fog Creek Software
Discussion Board




Private offices, just say no!

Joel went over this before

http://www.joelonsoftware.com/articles/FiveWorlds.html

I have say that I believe private offices is one of those things that fits some worlds (app development, back office development, database access development) and doesn't fit others (game development).

I tried it.  I started a company, we found a place with 21 individual offices (use to be an executive suites place).  Communication that is eccential for making great games was almost non existant.  There may have been ways to help that happen but at a non-private office company it happens natrually.

Gregg Tavares
Wednesday, September 24, 2003

:shrug:  At every place I've worked with a private office, I've been more productive than at every place I've worked with public workspace.

The Pedant, Brent P. Newhall
Wednesday, September 24, 2003

:sigh:

I guess it depends on how you define "productive". I tend to look at it that it's really not about individual productivity but about team productivity.

Personal productivity is such a fuzzy concept anyway. One of the kneejerk arguments against pair programming is that it "decreases productivity". Invariably, after some questioning, you'll find that the people who claim this don't count code reviews or fixing bugs against their productivity.

So, when you say you are more productive in your private office, do you count the time you have to go back and fix your bugs against your productivity? Is it possible that a less private, but more communication friendly seating arrangement would reduce your bug output and therefore your overall productivity?

An honest question, btw. Maybe you're a programmer who never creates bugs, in which case your private office may very well be the most productive arrangement.

anon
Wednesday, September 24, 2003

Private offices give you the option to close the door and code without interruptions. But you are not required to work that way: you can leave your door open, invite someone to work with you on a particular issue, maybe go to someone else's office to work on another issue, or whatever. You have the flexibility.

Without the office with a door, you *never* get uninterrupted work time. No flexibility whatsoever; it simply cannot happen. You can put up "do not interrupt" signs, you can try to train people that "if I'm wearing headphones, don't interrupt", you can be as creative as you wish; people will always think that their question/reason for interrupting is the exception to the rule, that you won't mind 'just one second', etc.

Martha
Wednesday, September 24, 2003

I thought that modern communication (IM, email, ...) would avert developer isolation. You can still communicate if you are too lazy to stand up.

Martin Dittus
Wednesday, September 24, 2003

Well, private offices are nice, but they just don't do it for communications purposes.  I don't like cubicles any more than the next guy, but two or three times a week I overhear something on the next aisle that is vital to my interests.  Maybe I overhear someone trying to solve the same problem I'm trying to solve or I hear them assuming something I know is false or whatever.

The point is that this kind of communication is just too valuable to give up for a nice cushy office.

This assumes, of course, that your job involves programming on a team of several people.  If you're mostly going to be working on one or two-person projects, then private offices are great.

Rob
Wednesday, September 24, 2003

Not that I have worked in a team before, however last Friday the entire office of accountants left on a trip to the mountains (professional development they called it).

The office was so quite, no computers humming, no people, I have never gotten so much work done, nor enjoyed doing it in the peace and quiet.

Obviously I cannot vouch for team work and team collaboration process. But is was pure heaven....I did not want that day to end.

Aussie Chick
Wednesday, September 24, 2003

Offices work fine in games if there's proper planning of work. In fact they work very well. However I can understand someone saying they don't, and that greater communication is needed for games.

What really happens is that, in a lot of games, the programming is treated as a support function for the designers. Such places hire younger, cheaper programmers and development is run by dedicated game designers or the art manager.

So instead of developers working out how to achieve the aims of the game and going off and doing it, the art manager races over every 30 minutes and issues a new directive that needs a complete change to the architecture, which is just a load of crap cobbled together anyway.


Wednesday, September 24, 2003

Something is seriously wrong if you have to regularly overhear vital things.  What if you go to the bathroom and miss one of these "vitial" things?

Email, meetings (preferably not too long or too often), specs, docs, bug tracking systems, etc. take care of communication in a more formal and documented manner.  Coffee breaks, office visits, instant messaging, common work areas, etc. are good for spontaneous discussions. 

A developer's day is split between a variety of tasks.  Not all of them require absolute concentration but it's important to have that available when needed.  The mind has a limited number of active "slots" to keep track of things.  If you are dedicating these slots to a sequence of changes you need to make to the code and suddenly one of these slots is taken over by Suzy in the next cubicle arguing with her boyfriend or some guy who types obnoxiously loud, you're going to miss something important.

SomeBody
Wednesday, September 24, 2003


With respect to all, I believe that developers tend to be extremely self-centered.

For most of us, software development is a team exercise. Individual productivity can, and sometimes must, take a back seat to team productivity. Team productivity is only as good as the communications in a team.

How many of us have completed our portion of a project only to see the project fail because the team did not accomplish all of it's goals? How many of us have said: "oh well, I got my part done"? Again, respectfully, I say this kind of thinking is broken.

If someone on the team needs assistance, they should be able to get it, and immediately. A lot of good ideas are only found after the involvement of many. Private offices tend to discourage these kinds of conversations. At least in my experience.

Now, if you have someone who continually just drops by for a chat, this is obviously a problem. But perhaps the better solution is to confront them on it??

An open, team based seating arrangement doesn't HAVE to be noisy and distracting.

anon
Wednesday, September 24, 2003

I thought the game folks all worked at benches.  Offices are good at filtering non-developers, especially those hypersocials who think that everyone else also feels unproductive if they're not talking. And they can't get their brain around the concept that someone sitting at a desk/cube.bench staring into space could be at their most productive (or just chemically enhanced). Developers usually work out the commmunication thing regardless of space configuration. But management that groks the flow thing sure can make it easier.

fool for python
Wednesday, September 24, 2003

I have worked in a variety of office arrangements: quiet private office, cubicle, and shared office.  And I have worked on various sized projects from working alone on a project for several months to working on a team of 10-15 people.  The quiet private office has always been much better than any shared work space for productivity, quality of product, or just being a pleasant place to come to work.  But I have never done game development.

In the report on the Santa Teresa lab McCue quoted surveys that showed developers worked about 30% of their time on individual tasks and over half their time working with a small group of other developers.  On my projects the fraction spent working alone is usually quite a bit higher.  But in any case, even if it is only 30%, it is not something that can be eliminated.

I think McCue got it right.  For the most productive environment you need quiet private offices arranged near each other with ample facilities for group meetings or work as needed.  Developers need to have flexibility.

It is good to have an office with a door, but in a good work environment there is seldom a need to close it.  In a good environment I would only occasionally close my door when working on  a particularly difficult problem that required a couple of hours of concentration.  Once I was in a shared two-person office that had a soda machine in the hall outside.  That office had its door closed all the time to shut out the noisy compressor on the soda machine.  If developers in private offices keep their doors closed all the time, then there is probably something wrong with the facilities that needs to be fixed.

Several posters say that shared work space is better for the communications that occur.  I have never seen any useful communications occurring in a shared evironment that wouldn't happen just as well in a private office environment.  The only things you get from shared office space are distractions and stress.

mackinac
Wednesday, September 24, 2003

anon's post confirms my point. The people who think they have to work in a big noisy mess are the ones who aren't very good, who fail to listen and plan, and who have never resolved complex problems well.

They continually suffer problems that must be resolved with their "team mates." They bodge and patch. They tell the art director he can only have 17 whatsits because that's how big the array is ( didn't use dynamic arrays.)

I have seen these types of disasters. They are not pretty and they are self sustaining. The managements become even more convinced that they must have "good communication," so ensure the programmers can be always disturbed. The art director continually interferes.

The resulting environment smells, and experienced developers avoid them.


Wednesday, September 24, 2003

[I have seen these types of disasters. They are not pretty and they are self sustaining. The managements become even more convinced that they must have "good communication," so ensure the programmers can be always disturbed. The art director continually interferes.
]

Clearly, you have no idea what I'm talking about if you think I'm describing what you experience. What you have is a train wreck caused by a generally low quality team. With that kind of team the environment largely becomes irrelevant. All private offices do in that case is allow the few good developers to ignore the larger problems. Who cares if they succeed if the entire team and project fails?

I really get a kick out of people telling me these things won't work when we live it every day. Perhaps it does work and you just haven't done it right?

anon
Wednesday, September 24, 2003

[Several posters say that shared work space is better for the communications that occur.  I have never seen any useful communications occurring in a shared evironment that wouldn't happen just as well in a private office environment.  The only things you get from shared office space are distractions and stress.
]

I generally agree with everything you've said, but you might have done better if you'd left that last sentence off. As I said earlier, shared office space doesn't have to be that way. Or maybe we've just stumbled over the magic secret. I doubt we're that special.

Anyway, your point about balancing common area with some private space is a good one. Everyone needs some "space" some time or other, if only to take care of those personal things (e-mails, arranging appointments) that intrude on the day.

anon
Wednesday, September 24, 2003


Nawh. Anybody that tells that individual offices are "bad for communication" have poor management skills or little knowledge, that's all.

And game development isn't different to any other development. The problem is that game developers tend to have little experience with good software management; they usually jump to development from mod or demo scene. And many are prima donnas.

Any "flow," or "communication," or whatever, can be (and should be!) achieved within the boundaries of the proper instances: regular meetings, schedule revisions, documentation, etc.

And a good manager, helps, of course.

Leonardo Herrera
Wednesday, September 24, 2003

Which is easier: having private offices, with the option of hanging out/working in an 'open' area, or working in a cube farm with no chance of privacy, ever, period? Yes, I do overhear useful things every so often, but not nearly often enough to make up for the difficulty I have trying to concentrate amid the noise of yakking neighbors. At least I don't sit by the copier (BS central) anymore.

brian
Wednesday, September 24, 2003

>>
Nawh. Anybody that tells that individual offices are "bad for communication" have poor management skills or little knowledge, that's all.
<<

This is what I was thinking but I was too nice to say it ; )

Something is seriously wrong if you need to be in frequent contact with your coworkers or need to rely on overhearing critical things to get things done.  I'd bet that most of these "teams" consist of one or two good developers who have to pull the weight of a bunch of bad developers.  That's been my experience with these sort of things. 

Feel free to convince me that I'm wrong.  I'd particularly like to see a good example of what sort of information these teams are exchanging so frequently. 

SomeBody
Wednesday, September 24, 2003

Q: Why do game developers like open-plan offices?

A: It makes the 3 hours spent every day playing Quake a lot more enjoyable.

That's my experience anyway :)

Andrew Reid
Thursday, September 25, 2003

>>> but you might have done better if you'd left that last sentence off. As I said earlier, shared office space doesn't have to be that way.<<<

Let me rephrase it:  After 20+ years of software development I have never experienced a shared office environment that provided anything but distractions and stress compared to private office space.

I can imagine, by extrapolating from experience, that private office space could be done badly.  But I can't imagine how shared office space could be designed so that it could work out as well as good private office space.  So how did you do it?


If I think back on the projects I've worked on, the ones done in a private office environment were the ones that got done on time or close to it, met the requirements and pleased the customer.  The ones done in shared office space were the ones that took twice their original schedule, finally muddled their way to something deemed  deliverable, and still had a long list of bugs and missing features.  The supposed benefits of "communications" amounted to nothing.

mackinac
Thursday, September 25, 2003

I know a development team that got moved from private offices to an "open office" environment - it was basically a glorified cube farm with some fancy looking cubicles that tried to pretend they were something new and different (taller walls to give the illusion of privacy, etc.)

Morale tanked. Key people left the team. It was a complete disaster, and within a year they had moved back to private offices.

Mike Treit
Thursday, September 25, 2003

Well I'm frustrated that I think nearly everyone replying to this topic ignored the original post.  The post does NOT say private offices are bad.  It says, as Joel eluded too before, that private offices don't fit all cases.

http://www.joelonsoftware.com/articles/FiveWorlds.html

They may fit yours, they don't fit mine.

In games, IMO, the interaction between artists, desigers and programmers is an eccential element to making great games.  The faster the iteration is between artists, designers and programmers the more things can be tried searching for those illusive "fun" elements.

My impression is in more traditional programming that kind of intense interaction is not needed.  People can go to a meeting, it can be decided what to do for the next weeks and then people can go in their office and do their job without the need to interact nearly as much as games.

Again, go back and read Joel's article on the Five Worlds.  Don't assume that all programming advice fits all types of programming.

Gregg Tavares
Thursday, September 25, 2003

I wonder how the separation in Joel's new office works between those who have offices and those who don't.  Is there any resentment?  Is the communication better between those in the open than between those in offices?

Also, does Joel's new office have room for growth, or is it optimised for how things are now (i.e. using up all available space)?

later
Thursday, September 25, 2003

[Something is seriously wrong if you need to be in frequent contact with your coworkers or need to rely on overhearing critical things to get things done.  I'd bet that most of these "teams" consist of one or two good developers who have to pull the weight of a bunch of bad developers.  That's been my experience with these sort of things. ]

Is it really such a stretch for you to admit that your personal experience might not be an iron clad rule?

If you, personally, don't like the idea of an open concept team environment, that's cool. However, I fail to see the need for silly put-downs. It feels like fear.

In MY experience, I've never met a single developer who's designs couldn't be improved upon. I've never been on a project where I could say "this project only succeeded because of him/her". This simply confirms to me that the team is more important than any individual. Your experience is obviously different.

I don't know why our experience is so positive while yours was so negative. All I know is the team is doing very well, and it is being noticed by the rest of the company. Make of that what you will. I'm done here.

anon
Thursday, September 25, 2003

Anon, you are making statements based on false (as "not necessarily true") claims. Good team interaction don't mean open spaces (and don't mean closed spaces, neither); good communication, and good interchange of knowledge should happen in proper instances.

Let me put this down. Imagine a closed environment, where every developer has his own office, with door that shuts and that kind of stuff. If you come directly to your office, program like a madman from 9 to 5, and then go home. Right, you have a serious issue. Now, imagine this same guy in an open space. He is "exposed" to questioning, and overhears some coworkers making a decision here and there, so he is more "integrated" to a team. So, we assume open space is good for communication, right?

Wrong. Never, never a developer have to be isolated from a team. The isolation should only ocurr when the developer have some task to complete. If you are managin your team the right way, then this task is small, and well bounded. When the developer finish his task, he makes some kind of report, and this should be a good time for meeting and revision. Is this guy being more productive? Heck yeah, you gave him a small task to complete, and due to good working conditions he is able to complete it in less time.

Okay, my ideas are kinda disorganized, but hope someone can get the picture :-)

Leonardo Herrera
Thursday, September 25, 2003

(Please forgive my spelling, haven't finished my morning coffee yet)

Leonardo Herrera
Thursday, September 25, 2003

I'm wondering if there's a trees/forest thing going on here.

Perhaps, in general, the office layout is indicative of management? Bad managers/control freaks tend to want cube farms while they're in the corner office; good managers tend to believe their people will work better in private offices.

Bad managers create crappy work environments, good managers create good work environments.

In other words, cubes or offices are *symptoms* of bad projects, not causes.

Philo

Philo
Thursday, September 25, 2003

[Perhaps, in general, the office layout is indicative of management? Bad managers/control freaks tend to want cube farms while they're in the corner office; good managers tend to believe their people will work better in private offices.
]

Um, a little excessive generalization there, wouldn't you say?

Why exactly would a control freak want cube farms and a good manager want private offices? Why couldn't a control freak go into an office as easily as a cube farm? I guess I missed the proof part of the logic chain there.

Personally, where I work, I've never heard anyone complain about the cubicles. Not having a window, now that's a complaint I've heard a lot. And window seats are not given out on a seniority basis. There as as many junior programmers with window seats as there are managers (not that we have all that many managers in the first place).

Clearly, my experience is not the same as yours. No problem. But I find your fixed mindset... interesting.

anon
Thursday, September 25, 2003

>>> Well I'm frustrated that I think nearly everyone replying to this topic ignored the original post. <<<

Sorry, Gregg.  I understood that you were only referring to the specific type of development that you were doing.  Your title didn't fit that idea very well though.  Maybe something like: "Private offices, not for every team".

Other posters are making claims indicating more general benefits from shared office space.  These are the ones I am arguing against.  For instance, anon makes statements such as "For most of us, software development is a team exercise." and goes on to argue that this implies that shared office space is better than private offices for software development teams (anon, let me know if I misunderstood your argument).

Well, it is true that for most of us, myself included, that software development is a team effort.  But this is not a valid argument that shared office space is better than or even as good as private offices.

The software teams that I have been part of consist of a small group of developers (and testers, etc.) each doing their own piece of larger effort where all the pieces have to work together.  In this kind of project the team members need both space to do their individual tasks and easy access to other team members to coordinate those tasks.

In my experience the private office environment is the best arrangement for most software development teams.  I can imagine that some types of software development, such as games, require the continuous interaction of shared office space.  At the other extreme, some types of software development may work in a telecommuting environment where team members only meet every few weeks. But that doesn't work well in very many cases either.

I have seen team software development work in all these environments, but always poorly except in the private office work space where the team interaction can be varied to the current needs of team members.

mackinac
Thursday, September 25, 2003

"Why exactly would a control freak want cube farms and a good manager want private offices? Why couldn't a control freak go into an office as easily as a cube farm? I guess I missed the proof part of the logic chain there."

Uh, if you need this proven, then this really isn't the right discussion for you.

[forgive me for being gruff - I'm having a bad day]
Philo

Philo
Thursday, September 25, 2003

>>> Personally, where I work, I've never heard anyone complain about the cubicles. <<<

I can believe this, but have to ask how much experience these developers have in a private office environment.  Most companies put their developers in cubes or shared offices, so not many get to experience a better work envirionment.  That is, they just don't know what they are missing.  You may have noticed that I argue for the private office environment as the best general software development environment.  But this comes after years of experience in a variety of work spaces from cubicles to private offices.  This even includes brief periods in bad (noisy) private offices, so I usually say "quiet private office".

mackinac
Thursday, September 25, 2003

[I can believe this, but have to ask how much experience these developers have in a private office environment.  Most companies put their developers in cubes or shared offices, so not many get to experience a better work envirionment. ]

Won't argue there. I've never worked in an environment where EVERYONE had a private office. That's gotta be pretty rare.

Btw, Philo, I've had control freak managers when I've had a private office. It didn't really seem to make much difference to him.

Personally, I'd rather have a window than a private office. I've had an office with just 4 closed walls. <shudder>. And I'm not claustrophobic. But it was quiet. :)

I still dispute that "public" seating has to be noisy. There are times when you can hear a pin drop in our "cubicle" seating (I don't even like to call it cubicle, since there are no cubes).

Maybe it's a personality thing. I really prefer working with other people. Extrovert vs introvert???

Of course, the whole thread is moot since most of us don't have the luxury of picking our environment.

anon
Thursday, September 25, 2003

[Maybe it's a personality thing. I really prefer working with other people. Extrovert vs introvert???]

Fascinating, when you consider that Microsoft is all private offices, yet almost every Microsoft blogger registers as an ENTJ (of course, it might be that you're likely to be an extrovert if you're a blogger... although my wife is an I and a blogger).

Brad Wilson (dotnetguy.techieswithcats.com)
Thursday, September 25, 2003

>>
Is it really such a stretch for you to admit that your personal experience might not be an iron clad rule?

If you, personally, don't like the idea of an open concept team environment, that's cool. However, I fail to see the need for silly put-downs. It feels like fear.
<<

I thought my wording "I'd bet that most..." would make it clear enough that I'm not claiming any iron clad rule.  I'm sure that examples of successful teams could be found in pretty much any environment.  I'm not sure why you interpreted what I said as a put-down.  There's no need to get defensive. 

It speaks volumes that you chose to respond with indignation rather than responding to my request for some examples of why such frequent communication would be necessary or beneficial.  Calling software development a "team exercise" seems bizarre to me.  Of course, team dynamics are important but do you really need a team to gather around to help you decide when to use a 'for' loop versus a 'while' loop? 

Getting back to the revised main point of the thread, I don't buy the argument that game development is so much different from other forms of development.  It takes concentration to write a rendering engine.  You're not going to write a decent rendering engine with artists and designers looking over your shoulder.  Iteration that's fast enough to take place with a few people gathered around a monitor doesn't occur too often in software development.  If you can change things fast enough for an artist or designer to give their input in real time, you've probably moved beyond the core development phase.  Tweaking game logic is something quite different from developing a game engine. 

SomeBody
Thursday, September 25, 2003

anon asked me, "when you say you are more productive in your private office, do you count the time you have to go back and fix your bugs against your productivity?"

Yes.  I found that my code was more robust when I had a private office.  This was earlier in my career, also, so it wasn't simply a function of being a generally better programmer than I was in an open environment.  However, this robustness may have been related to that particular development environment.

anon also wrote, "Personal productivity is such a fuzzy concept anyway," preferring team productivity.  I think that team productivity is at least as fuzzy as personal productivity.  There are so many more variables affecting teams; it's much easier to isolate a personal productivity problem than a team productivity problem.

The Pedant, Brent P. Newhall
Thursday, September 25, 2003

As I mentioned, there's a self-sustaining bad model. Managements that don't understand how good software is developed pay badly, hire inexperienced programmers and cram them into crowded areas.

Because of this, and because of the high-interuption work environment, there are regular and serious difficulties and errors in the software.

To the managements, whose work experience has probably been in other areas where problems can be addressed by close supervision, this confirms the need to have the programmers in close contact with their fellows. But it's actually not the answer.

Here's a typical communications scenario that would seem like good communications to dumb managements, but should never need to occur at all.


Artist: "We're using this new texture. Can you add it in?"

Prog 1 to three other programmers: "We have to change the texture for g1. Let's work out how to tackle this. I'll go through files in the a-g directory. B can do the h to m directories ...." They then spend the next two hours making changes and miss a few instances. These guys have hard-coded file names into files and haven't even centralised it. It looks like great communication though.

Prog 1 to artist after lunch: "You will have to trim that texture. We're getting a crash. We tracked it down in the debugger and the texture is too big." (They don't understand how to expand the texture buffer. There is then a 30 minute meeting on the best texture size. The manager is impressed at the terrific communication on the team.)

Prog 1 to producer, who is doing a demo to the publisher in two days: "We're using a different texture. Give us your laptop and we'll make the changes." The producer's version is a forked version because it has some short term bug fixes. The programmers spend five hours again, and again miss some changes, and the demo has several silly things.


Thursday, September 25, 2003

>>>Maybe it's a personality thing. I really prefer working with other people. Extrovert vs introvert???<<<

I would be definitely classified as an introvert, but I do like working on team projects.

I don't think that is the essential difference though.  It has more to do with one's concept of the value of the individual human being and of how  they cooperate to achieve common goals.  Some of your (anon's) postings stated a preference for shared office space because you worked on team projects.  You didn't even consider the possibility of individual programmers working in private offices being able to cooperate on a common goal.


>>>Of course, the whole thread is moot since most of us don't have the luxury of picking our environment. <<<

In the current economic downturn, we take any job that comes along.  In any economic conditions great project management, including concern for quality work space, is a rarity and it takes a significant dedication to go after it.  Few developers do that, which provides little incentive for more employers to provide it.

mackinac
Friday, September 26, 2003

"Why exactly would a control freak want cube farms and a good manager want private offices? Why couldn't a control freak go into an office as easily as a cube farm?"

It's not about the control freak going into an office, it's that the control freak doesn't want to have other people in offices. Because that way he/she can't see whether they're working at any given point in time.  To maintain their sense of control, they have to be able to easily see you hitting the keyboard.

T. Norman
Friday, September 26, 2003

A bank[1] recently moved a load of its staff. They used to be in a reasonably decent building, spread over several floors near lots of shops and where a lot of them lived nearby.

It was decided that they all need to be together, so they were moved 60 miles away. Into a shed. Seriously, it's a call-centre building. 150 developers plus 150 other staff in one open-plan office. That's 600 phones to ring, conversations happening... there are no walkways so everyone has foot traffic passing around them... And then they pipe music in.

Now, the last time I was there I couldn't hear myself think. I couldn't read documentation, I couldn't plan software. I'd find myself looking at blank bits of paper that I should be filling with designs and my head would just **HURT**.

The stress of trying to work in it could turn anyone peculiar.


[1] I'm not currently allowed to name it because I'm involved with litigation against them.

Katie Lucas
Monday, September 29, 2003

*  Recent Topics

*  Fog Creek Home