Connecting a geographically-distributed team of developers to efficiently and easily conduct code reviews.

The Solution

Our team of five developers here at Cisco Systems works on Cisco Unified MeetingPlace, a multimedia conferencing product that integrates voice, video, and Web conferencing capabilities. A few years back, Cisco implemented an engineering-wide policy that mandated code review for every bug fix before check-in, so we went looking for a code review tool. We wanted to increase defect detection, to simplify and speed up the review process, and to remove some of the drudgery normally associated with code inspections. We found Collaborator to be the best solution, and we have been using the software since it was an alpha product.

Our team is geographically distributed across the US from coast to coast, so a solid communication infrastructure is essential for us to work together. Multiple other teams at Cisco (about 50 people total) use Collaborator to help groups communicate from Belgrade to San Jose to Research Triangle Park and Boulder. With team members in so many different time zones, getting together for live reviews rarely happens, so we needed a code review tool to make it easy for developers to carry on discussions with each other, but still review code in their own time.

Before code check-in, authors use Collaborator to invite participants to a review, where the software presents before/after “diff” views to all participants. Everyone can type comments next to any line of code, and can carry on threaded discussions with each other, in real-time or on their own time.

While Cisco does have an internal conferencing product that allows real-time application sharing, it involves manually creating “diffs” and shipping them around to reviewers. The tracking features in Collaborator are particularly helpful to our team. We can immediately see what the outstanding issues are, and we can verify that all bugs found in review have been fixed before we release a version.

Our biggest challenge in implementing code review was getting people to try it. Our engineers initially resisted it because, like many engineers, the concept of code review conjures visions of excruciating process, meetings, paperwork, and time spent not coding. Once they tried Collaborator, however, perceptions changed. Now the team looks positively on code review, as they both recognize the benefits and enjoy the process of working together. And we have the bandwidth to review code for every bug fix.

Another benefit of Collaborator is its ability to integrate with our internal defect tracking system. This system will not let us resolve a bug until the code has been reviewed, and we must submit reviews to this system in a certain format. We were able to work with SmartBear to integrate Collaborator into our defect system to make this process smooth. Now, when a team member finishes a review, the right “enclosure” for our system gets built automatically and attached to the defect. Then our defect tracking system allows us to check in the change and resolve the defect. This integration saves us a lot of time.

Collaborator is also extremely easy to use. The interface is intuitive, and since it integrates directly with Perforce, it really simplifies the processes of both packaging code for reviews and of conducting them. Reviews are packaged and sent automatically, so we don’t need to manually assemble files and mess with emailing them.

Before Collaborator, our team only did reviews for very important items, and the reviews required everyone to be together in the same location – so only a small fraction of our code was getting reviewed. Our goals in implementing code review were to make code reviews efficient, easy and frequent – and we feel that we’ve accomplished them all. Our team highly recommends code review in general and Collaborator in particular, as a useful and fast way to produce better code. Collaborator is the best product out there.