If you are a developer who has to check in code, then you need a quiet place for focused work. You can try to argue that some developers don't need that, but those who can achieve peak concentration while context switching and talking to others are biological curiosities, if they exist at all. I haven't met anyone like that.
Now most employees working in tech companies are not developers. There is a whole "developer abstraction layer" (https://www.joelonsoftware.com/2006/04/11/the-development-ab...) but tech companies should at least have a place for all of their engineers to do quiet, focused work that is free of distraction.
I would also say that many people who are managers and do marketing also need a quiet place for focused work. So do QA people, infrastructure engineers, etc.
A larger point is that there are so many easy ways to communicate and collaborate now that to fix the physical plant to optimize for communication is just plain nuts. Why not use something that is very expensive to change, like the architecture, to meet needs that can't be met with software. Software can let you talk to someone easily, but it can't give you a quiet space. Only the architecture can do that. So I would err on the side of giving everyone an office with a door and then creating some common meeting spaces for them rather than building the office to have open offices and then adding a few multi-use closed door areas.
Lets say that you have a 5 minute question, that would save you an hour of work.
In a closed/cubicle style office, you may be less willing to bug your expert co-worker. In an open office, it may be perfectly normal to turn to your left, and quickly ask you question.
Sure, you are taking time out of your co-worker's day, but even so, on the net whole, asking the question is probably a net benefit time saver to the company.
In closed-style offices, it is a big gesture to walk into someone's office and ask a question. I'd feel less comfortable doing that.
Even sending a slack message still feels less comfortable than just turning your head and asking a quick question.
Coding is a collaborative process to many people. I don't want to schedule a freaking meeting for my simple question, or walk into someone's office. I'd probably just not ask if I felt like I was bothering someone.
That five minute question may well save you an hour of work, but it's just as likely - I'd say_more_ likely - to steal an hour of productivity from the person you ask.
Just send them a message in slack. Don't be so obnoxious as to assume that whatever's bugging you at this moment is automatically more important than whatever your co-worker is on.
I don't know why it feels weirder to slack them then it does to turn your head and ask. One demands immediate attention, the other allows them to answer when they have bandwidth for it. It seems obvious enough to me which is more polite.
Agreed. I think teams need the discipline to _not_ just turn around and start talking, but to message on Slack/etc. However, once that has been done, having the person right next to you can make the process of answering the question much quicker and easier when they are ready.
In practice it doesn't pan out that way, because most 5 minute questions don't save that much time (answer was a 2 minute search away), don't take that much time (take much longer), and overall cost much more time (due to loss of flow).
Most (if not all) programmers need a state of flow to write quality code. Achieving flow after an interruption can easily take 15 minutes or more. If the environment discourages a state of flow by having frequent brief interruptions, the quality of the code written in that environment will be poor. If you had the ability to collect the right metrics, you'd probably find that bugs disproportionately are written right after an interruption.
Interrupting other people to ask your question doesn't mean that you are engaging in collaborative coding. Collaborative coding in the sense you describe, doesn't really exist. What does exist is multiple people working on the same project, with their code communicating via interfaces, etc. Each person needs quiet focused time to do that.
The other issue you raised is that sure, your productivity may go up if you interrupt someone and get a question. It's clear that we don't want to optimize for that, because the interruption may cause someone else a loss of 30 minutes before they get back into the zone. It's not just 5 minutes. And 20 minutes into that recovery of concentration, someone else will interrupt them and ask another question. And they will also interrupt you. That creates a very frustrating experience. So it's better to ask your question asynchronously. You will get your answer when the person takes a break and relaxes their concentration. Both of you will be able to exercise control over when you can concentrate on getting your work done. Having that sense of control and ability to concentrate is critical to being productive.
But there is the whole glass castle principle you forgot to me too. That 5 minute break does not take 0 minutes to recover from in some cases. You need to rebuild your glass castle in your head over and over again. So in reality it might take just as much time to go back to full productivity.
The main problem is that everyone around you hears the question and the answer. This can create more discussions but it probably disturbs a lot. Especially when you place different teams in the same open space. Suddenly you are disturbed by all kinds of discussions that has very little to do with _your_ job.
I basically think it disturbs more with questions in an open space than when you go over to a cubicle/room.
Reducing interruptions from people is a feature; not a bug. Maybe you would only do it when it would save you an hour; more commonly, people have a much lower "interrupt someone trying to work" threshold.
I've wasted entire days answering a few five minute questions and not being able to get anything done. IF you have a question, email me and I'll look at it when I can and maybe arrange a time to talk about it. Being randomly interrupted because it will save an hour of your time means I'll never get any work done at all (and get none of the credit for your work).
> If you are a developer who has to check in code, then you need a quiet place for focused work
Don't talk on behalf of me.
Maybe because I'm relatively younger and I've mainly worked in open-plan offices, but I have zero problems with them. I'm not so easily distracted that simply having someone else's presence is enough to throw me off. When I need to buckle down and get some 'serious developing' going on, I just put on some headphones and listen to The Social Network soundtrack. I am more productive by having my colleges around me so I can easily pair-program or pair-design.
The point still remains: everyone is different and what works for one person won't work for everyone (I for one could never work remotely for any serious period of time). Again, we need to make sure we're building office spaces that can adopt to these different people and the ways they work.
Now most employees working in tech companies are not developers. There is a whole "developer abstraction layer" (https://www.joelonsoftware.com/2006/04/11/the-development-ab...) but tech companies should at least have a place for all of their engineers to do quiet, focused work that is free of distraction.
I would also say that many people who are managers and do marketing also need a quiet place for focused work. So do QA people, infrastructure engineers, etc.
A larger point is that there are so many easy ways to communicate and collaborate now that to fix the physical plant to optimize for communication is just plain nuts. Why not use something that is very expensive to change, like the architecture, to meet needs that can't be met with software. Software can let you talk to someone easily, but it can't give you a quiet space. Only the architecture can do that. So I would err on the side of giving everyone an office with a door and then creating some common meeting spaces for them rather than building the office to have open offices and then adding a few multi-use closed door areas.