Adaptive Engineering of Large Software Projects with Distributed/Outsourced Teams
CTO, PatientKeeper, Inc.
Project Leader, StarSoft Development Labs, St. Petersburg, Russia
CTO, SirsiDynix, Provo, UT, US
Last modified: June 20, 2006
Agile project management with Scrum derives from Takeuchi and Nonaka analyses of best practices in companies like Fuji-Xerox, Honda, Canon, and Toyota. Scrum is an organizational pattern designed to bring order out of chaos through adaptation to changing requirements, focus on emergent architecture, rapid evolution of software, and self-organization of teams. Toyota routinely achieves four times the productivity and 12 times the quality of competitors. Can Scrum achieve this level of performance for globally distributed engineering teams? Two Agile companies, SirsiDynix using Scrum, and StarSoft Development Laboratories using Scrum with some XP engineering practices, are developing a Java application with over 1,000,000 lines of code. Their are implemented a completely new version of a library system with over 12,500 installed sites. During the most recent year of the project, a distributed team of 56 Scrum developers working from Provo, Utah; Waterloo, Canada; and St. Petersburg, Russia, delivered 671,688 lines of production Java code. Using XP refactoring techniques they then systematically eliminated 275,000 lines of code to achieve better usability, performance, reliability, and maintainability. At 15.3 function points per developer/month, this is one of the most productive projects ever documented. SirsiDynix best practices are similar to those observed on distributed Scrum teams at IDX Systems, radically different than those promoted by PMBOK, and counterintuitive to some practices advocated by the Scrum Alliance. This paper analyzes and recommends new best practices for globally distributed Agile teams.