This is a guest blog post written by Randy DeFauw from Perforce Software. Randy has previously written about integrating Perforce and JIRA to create a robust, scalable issue tracking solution and in this post talks about distributed Scrum in the context of enabling efficient Agile processes on large/distributed teams.
As my Perforce colleague Bryan Pendleton mentioned recently, its often worthwhile to go back and read some of the foundational material on programming practices. On a recent flight to Chicago, I killed a couple of hours perusing some of the collection (PDF) of Scrum case studies maintained by the Scrum Foundation. A couple in particular caught my eye again.
Around the 2005 time frame, Jeff Sutherland helped a company called SirsiDynix adopt Agile and Scrum for a large development project. (This paper is called Distributed Scrum: Agile Project Management with Outsourced Development Teams, and it starts on p 89.) The teams were based primarily in Utah and Russia. The case study describes some of the challenges of doing integrated Scrums for distributed teams, but finds that fully integrated the team in Russia into the Scrum process gave a substantial productivity boost. In fact, by the metrics they cite, they saw a 5X gain over waterfall methods, and only a slight fall-off compared to a single colocated team.
Several factors contributed to this success, according to the paper. Three of the most important were:
- A team with excellent Scrum and development practices
- Operating as a single team to increase collaboration and transparency
- Strong central control with all Scrum Masters in Utah
Operating as a single team was facilitated by using a single repository and a single task management system, so that there was no division of code or tasks based solely on location. The team chose Perforce as their Software Configuration Management (SCM) system because it was fast, reliable, and had support for the distributed development model. The choice of JIRA for a defect tracker contributed significantly to the efficiency gains, as it prevented duplicate data entry work and could handle both bugs and tasks.
This paper was an important step towards describing how to use Agile and Scrum effectively for large, distributed teams without sacrificing productivity. Perforce, as the SCM system, provided the framework that let the team collaborate in a single repository across large distances, while JIRA provided an efficient Scrum planning tool.
The other paper that caught my eye was also authored by Jeff Sutherland, amongst others. The paper is called Scrum and CMMI Level 5: The Magic Potion for Code Warriors, and it starts on p 106. At first glance Scrum and CMMI may seem to be at opposite ends of the process scale, but as the paper points out, Scrum is all about efficient project implementation, while CMMI tries to enforce discipline about using Scrum and other processes consistently. The paper shows that Scrum and CMMI can co-exist, and one of the prerequisites is strong and effective use of version control for all project artifacts. That’s consistent with what I’ve seen about how people use Perforce: the fact that you can track everything in Perforce, not just source code, gives you a better handle on all the things that actually contribute to your product.
All in all, not a bad way to spend a couple of hours. (The movies on the flight were terrible.) When you’ve been immersed in Agile for a while, its helpful to take a step back and review the basics.