There is nothing like face-to-face contact to get an important point across or to fully benefit from planned (and unplanned) team interactions. Still, there are times where it's just not possible.
I've been working with a client in Kent over the past few months. Clearly, it's not practical to move the entire New Bamboo team down from London for the day. To complicate things further, the client has development teams in multiple places around the UK.
We needed to find ways to still get the benefits of Agile, even though the circumstances force a setup that wouldn't normally be conducive to it. After a few iterations, we developed several ways of doing this. One of these which I'd like to share with you is...
Online Code Reviews
We already use Github so we decided to use their code review tool and pull request system. Everything below is general enough that it should apply to whatever code review tool is used as long as it is available remotely online.
There are three key advantages of doing it this way:
- Spreading Knowledge
Anyone can pick up any code review. We like the whole team to be empowered and this is one way of doing that. It is important for remote teams because it ensures you're never reliant on a single person. Empower everyone on the team to comment and even push fixes to the pull request.
Agile is all about having visibility and shared ownership for everyone on the team. Using code reviews in this way can be the single biggest thing you can do to achieve this.
Because the code review tool keeps a log of each comment and commit added, a pull request can become the central point of discussion for the feature.
There is no need for people to be available at the same time. Ideal for working remotely, but useful to avoid disruptions even if you are not. Let everyone review in-between tasks, not during.
Github themselves take this one step further. As discussed in How GitHub Uses GitHub to Build GitHub by Zach Holman, they will even push an experimental, unfinished branch as a pull request, allowing the feedback process to begin even sooner.
3. Spreading Knowledge
When working remotely it is very easy to slip into a situation where you are isolated from the other members of the team. Even with good communication you tend to focus largely on the tasks that you personally need to do and ignore the rest. There is often a feeling that you don't quite fully understand exactly what the state of the project is.
Code reviews give you the chance to learn the code and point out possible improvements at the same time, not to mention catching bugs before they have the chance to do damage.
If you use code review to the fullest, every member of the team has a chance to see almost all of the code that gets added to the system.
It should be clear that this works best for small teams. You are not going to be able to keep up with all the code being added to a system if you have dozens of people on the team. Luckily small teams are another key tenet of most Agile processes.
In Action at New Bamboo
We have been using this process at New Bamboo on real client projects for a while now with great success.
Code quality and homogeneity have improved noticeably - that after all was why we started using code reviews.
But some of the most interesting benefits have been ones that were not predicted. If someone takes a day off sick, for example, there is much less confusion about where things stand. And anyone on the team can review and pick up where they left off.
While much of the benefit you gain from code reviews is worthwhile in the medium and long term, limiting disruptions in this way has a nice immediate impact. It also makes it easy to argue the business case.