In my earlier posts, I criticized too many meetings and decided to call meetings 'the heroin-of-software-development-world. Even after announcing meetings as inherently evil I am a firm believer that software development is a team game and when given the choice between being the only solider or fighting with a team and allies I would opt for a small yet smart team that likes working with each other over working all alone any-day.
Having said that, as a developer, there is a limited amount of time each day when you communicate with the team and brainstorm. Then you need to get in the flow and get things done at least for a few hours a day.
For decent parts of their day software developers need to find a little corner, think and focus on complicated problems at hand without having people peek over their shoulders or indulge them in disturbances.
I've worked at numerous offices around the world and have written code ranging from tea estates in rural India to the fancy Microsoft Silicon Valley campus. While I'm not very picky about offices I set certain bare minimum standards on what offices should offer their employees, even if they are contractors there to work just for a few months, like I was when I was working at some of these clients. While quite a few of my client offices and the places where I have worked, passed the litmus test of an 'acceptable office environment' a huge number of organizations, clients and offices I've worked in fail the same test; miserably.
In my opinion of what an organization should offer to the employees, a quite and cozy cubical or office tops the list. In fact, quite working conditions are so important, that besides giving it a dedicated post, Jeff Atwood also includes it in the Programmers Bill Of Rights:
Every programmer shall have quiet working conditions: Programming requires focused mental concentration. Programmers cannot work effectively in an interrupt-driven environment. Make sure your working environment protects your programmers' flow state, otherwise they'll waste most of their time bouncing back and forth between distractions.
The discussion-thread on this topic at Joel's Discussion Group starts with a rather strong remark on the topic with certain opinionated individual makes very valid points on office environments:
Here is my description of a good workspace for software development: A quiet private office with a door and a clear window for each individual developer. For team projects the offices should be arranged together with convenient common areas.
I happened to find the Fog Creek and JoS web sites a few years ago when doing a web search trying to find employers that provided good workspace. As anyone who has worked in the field for long knows, the employers that provide good workspace are extremely rare. The people who are in charge of facilities are usually concerned with costs, not usefulness.
Employers that provide a good workspace are actually extremely rare. In one of the first organizations that I was contracted by my permanent organization at, five of us shared a long table with no partitions or private space. We would often use the meeting rooms and labs to spend more and more time alone; trying to focus and work without disturbances. A phenomena I see even today in most offices around the world. Tom DeMarco and Timothy Lister in their book 'Peopleware: Productive Projects and Teams' describe this practice as 'Hiding Out':
When the office environment is frustrating enough, people look for a place to hide out. They book the conference rooms or head for the library or wander off for coffee and just don't come back. No, they are not meeting for secret romance or plotting political coups; they are hiding out to work. The good news here is that your people really do need to feel the accomplishment of work completed. They will go to great extremes to make that happen. When the crunch is on, people will try to find workable space no matter where.
The book does a rather good job at describing the environment that I've witnessed at countless organizations I've visited:
If you peek into a conference room, you may find three people working in silence. If you wander to the cafeteria mid-afternoon, you're likely to find folks seated, one to a table, with their work spread out before them. Some of your workers can't be found at all. People are hiding out to get some work done. If this rings true to your organization, it's an indictment. Saving money on space may be costing you a fortune.
The cost implications of the whole open office environment is big enough for organizations to yield to the temptation of turning a blind eye towards employee productivity. The book describes it with a real-life story:
California company that I consult for is very much concerned about being responsive to its people. Last year, the company's management conducted a survey in which all programmers (more than a thousand) were asked to list the best and the worst aspects of their jobs. The manager who ran the survey was very excited about the changes the company had undertaken. He told me that the number two problem was poor communication with upper management. Having learned that from the survey, the company set up quality circles, gripe sessions, and other communication programs. I listened politely as he described them in detail. When he was done, I asked what the number one problem was. "The environment," he replied. "People were upset about the noise." I asked what steps the company had taken to remedy that problem. "Oh, we couldn't do anything about that," he said. "That's outside our control."
It was as though the programmers had complained that there was too much gravity, and management had decided after due reflection that they couldn't really do much about it; it was a problem whose solution was beyond human capacity. This is a policy of total default.
Changing the environment is not beyond human capacity.
What is even more ironic, is that during my career some of the best offices environments that I've been provided with have belonged to clients who had nothing to do with Software Development.
If I compare my overall experience in IT shops, other than selected few like Microsoft who a decently good work environment, most Non-IT clients that I've worked with seem to understand the need for a quite office environment much more than Software shops do. It is ironic, not very easy to understand but in my own personal case, very true.
I've jumped from a hard core software development client, who made me share office with a marketing guy chattering away on the phone to an oil and rig company that was generous enough to give me a plush office, a calm, silent environment and almost zero interference when I was working. It is almost as if clients having nothing to do with software seem to understand and acknowledge the fact that software developers need quite work environments and think-time. On the other client organizations that I have worked with and were in the business of software development just don't seem to get understand it or even consider it something worth giving any attention to.
If you happen to work in an organization where you have problems concentrating because of too much noise, I'm not going motivate you to try and change any of it. Walking up to your bosses and expecting them spend money so that you can focus better is too much to ask for from the business perspective. I'm going to try and give you three pragmatic solutions to this problem that 'you' can help yourself with:
Find a quite corner - if you happen to work in a cross-cubical farm where four cubical's are slammed together in a cross, move to a cubical where you have a wall right behind you. A wall behind your back gives you some level of privacy and quietness.
Work your way up the corporate ladder - work your ass off to get to the position of a manager while you continue to code
; that way if only managers have offices, at-least you'll have one.
Continue hiding out - if the first two sound impractical or at-least not easily achievable, continue 'hiding out' for work and look for nook-and-corners of your organization that are usually quite and yet to be discovered by anyone; at-least till you can get either points one or two implemented successfully. Alternately, you can also get an expensive head-phone with noise reduction and try to get used to coding with music on
The next time you are out there interviewing for a client gig of a permanent job, make sure you take a walk around the office premises before you accept that offer. Unless you're interviewing for a Non-IT shop, or interviewing for a managerial position, expecting an office for yourself or expecting a quite and cozy work environment might be too much to ask for; but taking a walk around your new workplace before you join in, at-least helps you find out if you'll have to look for a cubical with a wall behind your back or a hide out on the first day at work.
If you can get to do either at-least you would have carried your expensive noise reduction head phone to office on your very first day.
Loud and noisy cubical farms with crossed cubical having low walls or a wide open conference room are cheap substitutions for offices. They are not offices; even though a huge number of organizations in the business of software development desperately want software developers to believe otherwise.