Category Archives: Scaling

Bring the Work to the Teams

WorkToTeamAs new high-priority features surface on a large program it can be tempting to give in to demands from stakeholders to assemble a team of the best people from the existing Scrum teams to build those features. Typically someone will suggest plucking the best people from the various Scrum teams and forming a task force. If anyone tries to talk you into doing this, don’t let them. In agile, restructuring the teams should be done sparingly and carefully. It takes a team of people several sprints (and sometimes months) to learn to work together effectively. Reorganized teams also represent change and the range of human factors that come with change. Large scale agile is about bringing the work to the teams, not assembling groups of people for each package of work that needs to be completed.

Another consideration when someone suggests putting together a task force is that it needs a Product Owner, Scrum Master and the various cross-functional roles such as BAs, QA, etc. to be covered. Gutting existing teams to staff these roles leaves the other teams in disarray. And, of course, we would never even consider sharing people across teams, would we?

The next time someone proposes a task force, take a look at how this work can be done by the teams already in place. Chances are pretty good that the work will be completed faster and better by the established teams.

Evolving Team Structures Through the Product Development Lifecycle

One of the most fascinating management challenges is determining the best structure for Scrum teams based on the stage of the project. This does not mean the major waterfall phases like Analysis, Design, Construction, etc. When developing software for use by customers (especially niche SAAS products) and there is some level of customization or specific features for each client, there are at least a couple of distinct stages in the project:

  1. Develop the base product
  2. Develop client-specific features and convert those clients onto the system as those features are completed

Many agile writings suggest that the way to approach system development is to develop some features and put them in production right away so that clients can start using them immediately. In reality, this does not always work. For example, when an existing system is being replaced, clients cannot be put onto a new system that only has 20% of the functionality of the one being replaced. Of course, this does not preclude some form of testing of that 20% by users within the development organization (e.g. by internal client service reps who are also part of the user base).

Organizing for Base Product Development

Typically the base product development effort focuses on developing the major feature areas. The development teams can be organized along the lines of the features areas as depicted below.

Base Product Team

Organizing for Client Conversions and Onboarding

 As the base product nears completion and the teams start to work on client-specific features, the portfolio or program manager may start noticing that the client code complete date for one of the feature teams above is much later than the other teams because the bulk of the customization for that client falls on that one team. The net result is client on-boarding dates are further out in the future that delay realization of new revenue from the product. This is a clear sign that the team structures need to change. At this stage, the focus shifts to optimizing staff utilization while retaining the benefits of teams building features or feature slices from top to bottom. This is called Focused Balance. Work is focused as much as possible on one or a few teams to gain the efficiencies that come with understanding and ownership of the epic , but when necessary client-specific epics are spread across the teams to deliver them as soon as possible.

Client Onboarding Team

Restructuring the teams

When scheduling and work allocation issues require that multiple teams work on the same epic, the following should be considered when deciding who should be on each team:

  • Knowledge about specific feature areas of the system.
  • Technical skillsets. Rebalancing may be necessary when certain feature areas from the base development phase emphasized a particular technical skillset.
  • Technical leadership – most teams need a technical leader.

Cross-Training and Collaboration

Team members will need to step out of their comfort zones and learn other parts of the system. Product owners, who have become experts in the feature areas that their teams constructed in the initial stages of development, will be overseeing a backlog that contains features and stories that are outside of their current area of expertise. Recognizing and fostering the need for collaboration across the teams is critical to the success of this model. At this stage, the job of the product owner is to connect team members with subject matter experts rather than being the subject matter experts.

Reflections:

  • Team structure may need to change to optimize the schedule for client-specific feature development.
  • Restructuring and rebalancing evenly distributes system knowledge and technical skills across the teams.
  • The Product Owner’s role changes to be less of a subject matter expert for their team and more of a facilitator.

Sprint Length – Does Size Matter?

RulerWhen a team that is accustomed to working on 6, 12, or 18-month long projects adopts agile practices, the prospect of planning its work every week or two is daunting. Planning the work every month might be tolerable so the team goes with four week long sprint lengths. As the team becomes more and more agile, the four week long sprints start to feel drawn out and constraining. This prompts the question, does sprint length really matter?

Smells that indicate a need for shorter sprint lengths

  1. Multiple teams on same program needing to re-sync/adjust frequently because of dependencies:

In a large program consisting of several feature teams, the work produced by one feature team often becomes an input into work done by another feature team.  For example, consider Team A and Team B. Their sprints are synchronized to begin and end at the same time to help with release planning and tracking. In any given sprint, Team A may produce something in the first part of their sprint that is needed by Team B in order to produce something else in the latter part of their month-long sprint. In theory this works, but in reality as soon as something delays Team A from delivering, Team B’s sprint commitment is jeopardized. After this happens once or twice, members of Team B will no longer be willing to commit to work with cross-team dependencies. One or two-week sprints eliminate many of those disconnects.  Team B simply does not pull an item into one of their sprints until Team A is done building the pre-requisite feature set. Because the sprint length is short, there is minimal delay between Team A finishing their feature and Team B starting their work.

Note: this does not presume that component teams (that only develop one layer of the app then hand it off to another team to develop another layer) are to blame here.  These interdependencies also occur with feature teams.

  1. Team sagging in middle of the sprint and then having a burst of energy towards end of sprint.

Teams using four week sprint lengths, in spite of the professionalism and motivation of team members, can be susceptible to waiting until a deadline looms to become focused on what is needed to close out stories. The effort and energy level may not really crank up until the latter part of the sprint. Have you ever worked with a Scrum team whose energy level looks something like the graph below over the course of a sprint?

Energy Level

This is a sign that the longer sprint length is causing the team to lose focus and/or momentum until the point when they need to “put the pedal to the metal” in order to meet the sprint objectives before the close of the sprint.

  1. Team taking on a small number of large stories.

New Scrum teams often have difficulty slicing features into multiple, smaller stories. Sometimes this is because the users are afraid that if they don’t cram all of their requirements into this one story right now then they will never have another opportunity to build the rest of the functionality. Without going into a dissertation about queuing theory (check out Little’s Law if you want more info about this), large stories have a profound (negative) impact on team throughput. One of the most tangible effects of large stories is that there may be little or nothing for the users to test until near the end of the sprint, which then results in a mad scramble to finish the stories. Not exactly a model for a sustainable pace and high quality.  Shorter sprints force teams to break large stories down into smaller pieces. Once they get the hang of it, they will size the stories so that they can deliver a steady stream of functionality to QA, the Product Owner, and users for testing throughout a sprint.

  1. Team is finding that the large number of small stories is getting hard to manage and wants to combine them into just a few large stories in each four week sprint.

For teams that become adept at breaking stories down into smaller stories, a new challenge can be that there are so many stories in a four week sprint that it becomes almost unmanageable. This is a clear signal that it is time to move to shorter sprints involving a lower number of but still small stories.

  1. Team is tinkering with what stories are in the sprint backlog due to learnings that occur early in the sprint.

What if, early in the sprint, the team learns something while working on a story that results in a new story being created that encompasses those learnings? While it is commendable that the scope of the current story was not just expanded, what is not so commendable is that often teams, especially ones working on four week sprints, become tempted to swap out another story lower in the sprint backlog for this new story because otherwise the team will not be able to address the new story for another month. Of course a constantly shifting sprint commitment is hazardous to a team’s health. A team working on two week long sprints would not need to be concerned about long delays before it can address the new story.

Nowhere to hide

Just as the initial agile adoption effort brought many organizational dysfunctions to light, shorter sprint lengths will unearth still more issues. Sporadic involvement of the product owner or users cannot be concealed in a two-week sprint. Excessive work in process, with a team that is hesitant to swarm on a small number of stories at one time, creates bottlenecks for testers, product owners and users who must focus on large number of conversations at once rather than focusing on a few at a time. Shorter sprint lengths will expose these and other shortcomings and allow a team to quickly learn and adjust its practices. Also, if the Scrum Master is wise enough know when he/she needs to let the team members fail in a sprint in order for them to learn a tough lesson on their own, the impact is muted due to the shorter sprint length.

Roadblocks

If the case for one or two week sprints is so obvious, why is it hard for some teams to adopt them? A common roadblock is stakeholder concern that more sprints will result in more “unproductive” time planning sprints, doing retrospectives, and conducting sprint reviews. The reality is that sprint planning time should correlate very closely to the number of stories in the sprint, therefore a shorter sprint = less time needed for planning. Retrospective and sprint review meetings can also be shortened accordingly.

Reflections

  • One or two week long sprints allow teams to better synchronize their efforts.
  • Small stories are that much more important with shorter sprint lengths.
  • Shorter sprints require more consistent involvement from everyone on the team, including testers and product owners.