With apologies to Oscar Wilde, I thought I’d jot down a few thoughts on trying to do mentally difficult things in small highly segmented blocks of time. Some agile devotees advocate a term called Radical Collocation which essentially boils down to sticking an entire team in a single room for the length of the project. While this initially (or permanently depending on your stubbornness) seems to go against the grain of the American worker, there have been several studies that show an increase in team productivity and quality using this approach. I ran across this one (OK, I didn’t run across it, I went searching for it because the project I’m currently working on is using radical collocation) and thought I’d briefly discuss it.
The study found that “the productivity increases were astounding”. This is great news! Of course, like many things that seem to be great, the productivity gained in this study comes from fairly closely following their idea and definition of radical collocation. Specifically, one very critical thing to note about this study is that the teams were not restricted to the war rooms only and in fact had private space that they could retreat to when the situation warranted. Interestingly, the two situations that most warrant it according to the authors are “personal discussions and working solo (typically coding).” In fact, the study came up with 9 types of work that the teams did and 7 of them were best in a collocated space while the two mentioned above “were best done individually and separate from the rest of the team.” (Emphasis mine).
This shouldn’t come as a huge shock but here you have it: types of work that require communication are best done in a situation that facilitates communication and types of work that require either privacy or concentration are best done in a situation that facilitates privacy. I know you’re shocked but having a design discussion with Bob and Bill is best done in a big room with both Bob and Bill. Writing the code correctly and well that implements the result of that discussion is best done without Bob and Bill. But like most good things, too much radical collocation can be a real drag on productivity. Lots of companies that push radical collocation forget that when the rubber hits the road, teams have to have the ability to retreat in order to get things done. When you’re communicating, all being together really works well. When you’re concentrating, minimizing the distractions will always increase productivity.
The project I’m currently on takes radical collocation to its illogical extreme. There is no “private retreat” and I estimate that on average there are 3-5 true interruptions every hour. An increase in productivity on software teams comes from both facilitating communication during types of work that require it and providing for the ability to work uninterrupted for large chunks of the day when necessary. Overemphasizing the former while completely neglecting the latter won’t result in that astounding increase in productivity because the quality of the code that is produced will be much lower. I have no doubt that radical collocation is useful when implemented well. I just don’t think it gets implemented well very often.
February 29, 2008 at 10:37 am
How do you think this fits in with Pair-Programming? It seems to be gaining tracktion and the justifications for it seem sound, but at the same time I could still see a need for solo coding. I know from my own personal experience that it is very distracting to have someone looking over your shoulder which would seem to indicate a problem with Pair-Programming.
February 29, 2008 at 10:37 am
How do you think this fits in with Pair-Programming? It seems to be gaining tracktion and the justifications for it seem sound, but at the same time I could still see a need for solo coding. I know from my own personal experience that it is very distracting to have someone looking over your shoulder which would seem to indicate a problem with Pair-Programming.
March 3, 2008 at 9:31 pm
Theoretically, I think pair programming could work in a similar manner to single programming, i.e. in a quiet, distraction free space, pair programming should be productive.
In my very limited experience, pair programming doesn’t work and it certainly doesn’t provide magical productivity increases in an already bad environment.
March 3, 2008 at 9:31 pm
Theoretically, I think pair programming could work in a similar manner to single programming, i.e. in a quiet, distraction free space, pair programming should be productive.
In my very limited experience, pair programming doesn’t work and it certainly doesn’t provide magical productivity increases in an already bad environment.