Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2. Team Structure
Product development at salesforce.com is organized into three business units: Applications, Platform, and Core Infrastructure. There are 30 plus Scrum teams distributed across these three business units. Each Scrum team typically has dedicated developers, quality assurance engineers and a Product Owner. Each team also has a ScrumMaster, who is usually a program manager, development manager, or QA manager. Depending on the complexity of the features being developed, the Scrum team may also have dedicated or part-time team members from other functional teams such as System Testing, Documentation, UI Design, Usability, Technology Operations, and Release Engineering. Typically all Scrum teams are working on the same major release and in the same codeline/branch. Given the integrated nature of our products, the features implemented by these various teams can be very tightly interwoven, both functionally and technically. From a technical implementation perspective many teams may be using common shared code. From a functional perspective, teams working on features targeting the same end user need to coordinate closely to provide a consistent and coherent user experience.
1. Introduction
In October 2006, salesforce.com's R&D organization embarked on a large scale transformation from a waterfall software development approach to an agile approach based on Scrum. It had been 10 months since the last major release, the planned release date of the next release had moved five times, and many people were frustrated by the inability to deliver frequently and on schedule. Instead of waiting until the release was completed, we reconfigured existing teams into Scrum teams and used the Scrum process to deliver the in-progress release to our customers in February 2007. Since then we have delivered five major releases (at 3-4 month intervals) of our Software-as-a-Service (SaaS) application suite and Force.com platform using our new agile approach. Every release has gone into production exactly on the pre-planned release date. During the transition, Scrum offered significant guidance for individual teams, but not a lot with respect to coordinating between teams. We organized teams to minimize dependencies, but the code hadnt changed overnight and there were still significant dependencies between teams. We implemented scrumof-scrums meetings early and they were helpful for discussing issues and status, but not sufficient. Over the last five releases we've tried out and refined a number of additional practices to improve coordination between teams. This report highlights challenges weve encountered with respect to dependency management in a large agile environment and how we overcame them.
3. Why is Difficult?
Dependency
Management
With so many teams working together on the same release and on shared features and code, it is impossible to anticipate all the issues, surprises, changes, failures and successes that teams will encounter during software development. That unpredictability is one reason that dependency management is difficult. This section highlights some other reasons why dependency management is difficult. Any solution must address these underlying tensions and challenges.
401
The ability of teams to change priorities each sprint is a benefit of Scrum, however, it can make managing dependencies more difficult. Dependency identification and analysis cannot just happen once at the beginning of the release, but rather must be an ongoing process. Over the course of a release dependencies come and go as teams refine what they can deliver, and any process for managing those dependencies needs to be equally dynamic.
4. Specific Practices
This section describes the specific practices we are using to manage dependencies and address the above challenges. Some common strategies incorporated into these practices include: Create visibility: for release plans, dependencies, designs, build status, etc. Provide forums to stimulate collaboration and knowledge sharing between teams. Promote self-organization and decentralized dependency management. Automation, automation, and more automation.
402
helps teams stay on track with that planning. It is difficult to identify dependencies or negotiate commitments with other teams if those teams don't yet know what they're doing in the release. The Release Kickoff meeting acts as an important synchronization point for teams, and helps ensure more productive discussions around inter-team dependencies. The second major benefit results from the visibility that the meeting creates around team release plans. Our goal is to generate a high level of awareness of what teams are doing in the release, as we believe that this visibility will naturally cause people to think about and discuss dependencies. In order to encourage attendance and focus attention on the release plans, the meeting is given a high-profile and all R&D executives attend. The high level of participation helps align expectations and create broad awareness of what is planned for the release. Of course, team release plans can and do change throughout the release. We recently started reviewing an updated version of the Release Kickoff presentation during the monthly sprint reviews. The updated presentation highlights features that have been dropped or added to the release, and has proven to be very effective at maintaining release plan visibility throughout the release.
each Scrum team in a room with a large white board. Usually the representative is the ScrumMaster or Product Owner from the team, but it can be anyone. The first part of the meeting involves all team representatives going up to the whiteboard simultaneously and creating two diagrams representing the dependencies between teams. One diagram captures teams that need another team to do something for them. The second diagram captures teams that are doing something that will impact other teams. For these diagrams we use a simple notation: A circle represents a team An arrow between two circles represents a dependency. On the first diagram the arrow points from the team doing the work to the team that needs the work done. On the second diagram the arrow points towards the team that is impacted. A label on the arrow describes the dependency If a dependency is committed (i.e. the other team has agreed to do the work) we put a box around the dependency label. At first there is a commotion as everyone draws their dependencies on the whiteboard and onlookers start asking questions and pointing out dependencies that are missing. After about 20 minutes the diagram stabilizes and comments subside. At that point we ask each team representative to briefly describe their dependencies. In a very short amount of time we generate a comprehensive view of the dependencies in the release. Figure 1 shows the typical output of this meeting after it has been copied into a more readable format. Hotspots (i.e. teams with a lot of dependencies) are immediately visible. Teams that have not yet obtained commitments for their dependencies are also visible. These teams have a higher risk of not delivering on their release plans until the dependencies are committed.
403
organization we are experimenting with variations to see what works best, including:
some
Generating topic ideas prior to the open space Encouraging senior management participation Changing the number and length of breakout sessions
404
These are cross-functional and cross-scrum team meetings that focus on the functional and user interaction design of features deemed to be higher risk, higher complexity, or higher impact. These meetings are intended to break down team silos and surface design inconsistencies and dependencies of which the Scrum team may be unaware. There are two different parts to the functional design review meetings. Early in the release cycle the discussions focus on design concepts and aim at achieving functional design coherence and synergy between existing and new features. These discussions are usually attended by the product owners of each Scrum team and UI designers, and there is little representation from other functional teams such as development or QA. Starting near the middle of the release cycle the participants change to primarily include QA and some development team members, and the focus is on reviewing implementation details. These discussions provide insight and clarity around: Additional dependencies between teams Additional integration testing that needs to be added to the test plan The release risk of a particular feature, and perhaps the need to restrict availability of that feature Deployment specific tasks
least 20% of their time every release towards implementing changes recommended by the VAT. The VAT meets for two hours twice a week to review the technical implementation of products and features being built by the Scrum teams. The teams building the most complex features in the release are asked to present to the VAT. The group provides valuable feedback to the Scrum team on how their technical design will impact or be impacted by other areas. The VAT focuses primarily on the technical implementation, especially scalability and performance considerations. Teams asked to make significant changes must present again in the same release cycle and provide details on how they modified their design.
405
is one of our biggest assets and a key enabler for delivering high quality on-time releases every 3-4 months.
5. Conclusion
Salesforce.com has demonstrated that it is possible to scale Scrum and we feel very confident in our ability to continue scaling as the organization grows. Dependency management and cross-team coordination are a significant challenge as the number of teams increases. Having a robust build and automated test infrastructure is absolutely critical. Increasing visibility and alignment through practices such as the release kickoff, the dependency identification exercise, scrumof-scrums, and lightweight status reports is very helpful. Ultimately it comes down to effective communication, collaboration, and knowledge sharing between teams. Practices such as the virtual architecture team, the functional design reviews, the release open space, and the scrum-of-scrums are all designed to open communication and promote collaboration.
4.7. Scrum-of-Scrums
Each business unit has a weekly scrum-of-scrums meeting and there is also a weekly scrum-of-scrum-ofscrums. Occasionally we will form additional scrumof-scrums if there is a cluster of teams working closely together on a common goal. We have experimented with a few different formats for the scrum-of-scrums. We started out using the standard "4 question" format where teams report on what they've done, what they're going to do, what is blocking them, and if they are doing anything that will impact another team. That worked fine initially, but became a bit tedious due to the large number of teams. We have since moved to a more open and self-organizing format, in which attendees propose discussion topics by writing them on the whiteboard at the beginning of the meeting. This approach leads attendees to take responsibility for the content of the meeting and has resulted in more productive and collaborative discussions. The topic of cross team dependencies does come up during the scrum-of-scrums, especially early in the release cycle. The Dependency Identification Exercise is held during a scrum-of-scrums meeting and for the next two to three weeks after that we will typically discuss changes to dependencies during the scrum-of-scrums.
406