http://blog.fogcreek.com/the-price-of-dev-happiness-part-two... http://www.joelonsoftware.com/items/2006/07/30.html http://www.joelonsoftware.com/articles/fieldguidetodeveloper...
http://blog.fogcreek.com/the-price-of-dev-happiness-part-two... http://www.joelonsoftware.com/items/2006/07/30.html http://www.joelonsoftware.com/articles/fieldguidetodeveloper...
Try as we might, some of us just can't do this.
The quiet environment I was describing can be found in an office where the majority of people are heads-down working and not on the phone. This is harder to find when you're in an office that's setup as a cube-farm or an open layout. But this can be easily found at the beginning or end of the day and especially on work days that bookend holidays or three day weekends - days that lots of people typically take vacation. Those are the times when I find I get my best work done because it is the closest to quiet and distraction-free that one can find, other than working remotely where you can control the environment.
As far as the "go-to" person people have noted having above, everyone on my team works on different aspects of what we do, so no one person can answer every question. Our PM is also not super familiar with what those roles are nor are they technically competent enough to answer those questions on their own (as of now, anyway).
While it might sound like the difference between introverted and extroverted, I suspect it isn't quite as simple. It very likely also depends on the job to be done (memory load), the content and quality of surrounding conversation and more ephemeral factors like company culture.
I suspect it also affects how well things like pair programming work out, conversations about it often elicit quite polarized viewpoints on the subject.
I think there's some level of cognitive bias here with respect to social interaction preferences.
I certainly prefer to hang out with folks in a social setting compared to sitting in an office all day. I understand folks who prefer to do this in a work environment from a camaraderie and a "I'm not in a cave" perspective. That's totally fine and understandable.
But from a real, practical standpoint - are folks that "prefer" to be in an open setting actually more productive than those not?
What type of programming lends itself better to a distraction-filled environment?
How does "culture" fit into the distraction equation, other than "we tolerate more distraction-killing productivity here than elsewhere"?
(We have a chat room where we try and put all side discussions, so folks can virtually "overhear" conversations and chime in if applicable).
I concede that there could be some people who will get so antsy in an office all day that the mosh pit-style work environment "feels" better. I'm not discounting that some folks prefer to be in a noisy environment. I just question whether or not they're actually more productive there or that the organization is better off in total with a noisy environment.
The difficulty I have is that I cannot find any studies that show that a distraction-filled environment creates more knowledge-worker productivity than a quiet one. Mountains of studies scream the opposite.
Personally, I'd rather find other ways to channel that ADHD energy in a more productive manner. :D
Though I doubt that it would be much different for me, personally, because when I'm really in the middle of an interesting problem and cranking stuff out, I just don't notice background noise in the same way I don't notice that it's suddenly four hours later... I mean, maybe I'm just lucky in that, but my own coworkers have never expressed frustration with the environment either, so I don't know just how rare it is. (So I guess the key thing is that if the environment is getting to you, don't just keep it to yourself!)
I also have a (maybe overly cynical?) hunch that in addition to the "ease of distraction by external noises" spectrum there's also a "desire to goof off more if nobody's going to notice" spectrum that comes into play. (He says, as he posts on HN in the middle of the day, heh...)
I've never bothered to look into research on it, but I also don't see any trends of companies with private offices outcompeting ones without. I know the output of the team I was on at the company I worked at where I had a private office was not great, but there are other factors involved there too, of course.
I also think the rotating "consulting developers" idea from grecy above sounds like a pretty good idea, regardless of office layout.
However, the important thing to consider is the fact that humans in general prefer to be among others. Even sitting quietly staring at a wall is more preferable in company than alone. So I don't really care if I'd be 10% less productive, being amongst others is good for my mental health.
However, this should of course mean that for those who don't enjoy company of others there should be a way to be alone. Just having a "silent room" where you can go to not be disturbed might be a way.
I guess it depends on the kind of programming you're doing and the teams composition.
Yes, face-to-face, voice-based collaboration can be a good thing, but very rarely do you need it 100% of the time. Need someone to look at your code? Ask them to come over and look at it. Need to chat with someone to discuss the design of some code? You can still do that.
Why folks somehow tolerate "everyone gets bothered by any side conversation" is beyond me, especially when you can have perfectly fine collaboration without open-plan offices.
It's incomprehensible why companies with "communication problems" think that will be solved by throwing everyone into one room. I bet good money the problem isn't that Jane isn't overhearing Joe and Bob's conversation. It's some deeper disfunction that is being exposed as "communication problems".
I vastly prefer open office where developers work in frequently rotated pairs, with separate pairs close enough to talk as necessary. It's a little bit harder this way, but I've found that it leads to higher quality software, higher diversity of knowledge and it's just made me a better programmer (and a better Vim user and a better Unix command line user, etc). I hope I don't ever have to take another job where I'm not forced to both teach and learn from all of my coworkers directly.