Salesforce.com’s R&D organization made a comprehensive large scale transition to agile software development in October 2006. Since that time we have delivered five on-time major releases of our Salesforce application suite and Force.com platform using the new agile approach. There are currently over 40 scrum teams contributing to each major release, and all teams work in a single release code branch. When combined with an aggressive, risk-tolerant culture, this results in many team interdependencies. In this session we’ll discuss some of the practices we’ve been using to successfully manage dependencies within a large agile environment.
Process/Mechanics
Presentation outline:
- Brief History of Agile at salesforce.com
- Team Structure Overview
- Types of Dependencies
- Scrum teams that need another team to build functionality
- Scrum teams making changes that will impact other teams
- Architectural refactoring that has widespread impact to many teams
- Several scrum teams working closely together to accomplish a common business objective
- Why is Dependency Management Difficult?
- System complexity
- Conflicting priorities
- Dynamic scope
- Specific Practices
- Release Kickoff – Provides visibility into team release plans
- Open Format Scrum of Scrums – A slight variation on the standard scrum-of-scrums
- Dependency Identification Exercise – An interactive discussion to identify cross-team dependencies early in the release
- Functional Design Reviews– A cross-team forum for reviewing functional designs
- Virtual Architecture Team– Senior developers from scrum teams meet weekly to discuss architectural changes
- Continuous Integration – Significant automated test infrastructure helps identify unexpected impacts quickly
- Cross-team Impact Reviews – Cross-team meetings later in the release to discuss changes and ensure adequate test coverage across the product
- Q&A