I was going to write more about build metrics today, but a comment by Rachel Gertz on one of my older posts last night popped the stack. Thanks for the comment, Rachel! I started to write this as a response comment, but I quickly realized there’s a lot to say on the topic.

Certainly teams can be run in a distributed fashion, often to great success. Among others, 37 Signals seems to be pretty adamant about allowing it. I’m sure there are plenty of other examples. I’ve also personally worked on teams before that did fine working in a distributed fashion.

Fully distributed teams wouldn’t work for Rally, at least not as the norm. We do have engineering teams that work partially distributed. They are the exception.

An essential part of the Rally engineering culture is the interaction resulting from the space we occupy and our close physical proximity. The space is incredibly open and highly reconfigurable. We aggressively reorganize it to keep teams close together so that any time we have a question for a teammate or we need guidance, the relevant people are close by. IM is great for this when working distributed, but it’s a poor substitute for being able to yell “Hey Eric!” There is a lot of communication lost by not being close to your team. I can’t count how many questions I’ve answered or had answered simply by virtue of being within earshot of a teammate.

We have “a fix” for one aspect of the proximity issue with distributed teams. Our space in Boulder and the Raleigh space each feature 60″ TVs that serve as always-on Skype portals between the two offices. They are usually muted, but they provide a way for people on either end to see who’s actually sitting at their workstation on the other end. Seeing who’s sitting down gives you a pretty good idea of who you can reach on chat, and the TVs can also be unmuted remotely if you need to get someone’s attention if they’re not on IM. The Skype portal has on many occasions turned the half-hour-long, trial and error process of finding someone to talk to in the other office using IM or email into a process that takes less than a minute and involves yelling into a TV.

Another reason decentralized teams don’t work so well for Rally is that we pair-program obsessively. We have solutions for remote pairing, but the real thing works better. For one, even on a FAST network connection, streaming a 2560×1600 display is slow. Hell, it’s slow even among machines on the same LAN. For another, rocking a headset and Skyping all day while pairing shuts you off from the team in your immediate area and introduces the inevitable lag associated with long-distance communication. You often end up talking over one another because of the delay. Not using a headset is definitely not an option, because a loud disembodied voice coming from a monitor is a distraction for everyone and microphones tend to pick up all sorts of noise.

I’m not saying that distributed teams can’t work – they can. I’m saying that our process is pretty highly optimized toward working in an open, collaborative environment. Our environment plays really well with our culture of pairing and communication.