Академический Документы
Профессиональный Документы
Культура Документы
Abstract: This paper evaluates agile practices when applied in multi-team and multi-person-year projects. It does so through inspection of the requirements brought on by scaling projects, and applying basic agile principles to those requirements. In the introduction section the main agile principles are introduced, as well as the Lean principles upon which the agile methods are built. One of those Lean principles, Muri or overburdening of people, is addressed through the extension of the agile planning process. The extension of the most used agile planning technique (iteration planning) is described in detail, both the motivation for the extension as well as the collaboration practices behind each planning level. In the final chapter the impact of product complexities on the planning process is evaluated, and a solution to create a smooth flow in the planning/delivery cycle is presented.
Table of Contents
Table of Contents .............................................................................................................................................2 Introduction .......................................................................................................................................................3 Why Focus on Planning Activities? ................................................................................................................3 Agile and Lean................................................................................................................................................3 Agile Vocabulary ............................................................................................................................................3 Core Lean Elements Muri, Mura, Muda ......................................................................................................3 Planning in Large Scale Agile Projects ..........................................................................................................4 Product Visioning Level 1............................................................................................................................5 Product Roadmap Level 2...........................................................................................................................5 Release Planning Level 3............................................................................................................................6 Iteration Planning Level 4............................................................................................................................7 Daily Plan Level 5........................................................................................................................................8 Conclusion ........................................................................................................................................................9 Evenness in the Planning Process ...............................................................................................................10 Conclusion ......................................................................................................................................................11 References ......................................................................................................................................................11
Introduction
Why Focus on Planning Activities?
Experience gathered during large-scale implementation of agile concepts in software development projects teaches us that the currently popular agile software development methods (like Scrum) do not scale to program, product and organization level without change. The fundamentals for changes to these methods are found in Lean principles, or: the future of agile methods is found in its origins. This paper describes a planning framework that has been used successfully in large-scale1 agile projects and investigates the impact of introducing this framework on three core Lean principles: Muri, Mura and Mudai.
Agile Vocabulary
This document is heavy on jargon, some often used terms are: Agile Methods The collection of lightweight software development methods that have been developed based on the Agile Manifesto3. Examples are Extreme Programming (XP), Scrum and Feature Driven Development. Product Owner The person responsible for the success of the product in the market, and therefore entitled to prioritize the needed features of the product. Delivery Team The group of people responsible for the delivery of the artifacts that together make up the product. They are responsible for delivering the right quality and can therefore determine and estimate the tasks involved in the delivery of the product features. Muri, Mura, Muda or Load, Flow, Waste Three core Lean principles that describe the need to plan work correctly (load), to create a regular pace in the team (flow) and to avoid delivering products that have no customer value (waste). Product backlog A prioritized list of features that make up the product as desired by the product owner. Iteration A one- to six-week period in which the delivery team produces working (accepted) product features. Also called Sprint in the Scrum methodology. Feature A product component that the product owner and customer recognize and value. Delivering a feature is done in tasks, which are the more technical activities that are recognized and valued by the delivery team. Estimation of the work involved in delivering features and tasks is done by the delivery team, which is a major difference from plan-driven development where the estimating task is often taken on by the project manager.
The projects referred to as being large typically last well over a year, and have 50 or more people involved to deliver the required functionality.
2 Sutherland, Tabaka & Smits Program Management with Scrum Two day course for ScrumMasters 2006
3 http://www.agilemanifesto.org/
Muri Overburdening of people or equipment Mura Unevenness in workload Muda Waste or non-value adding activities
There is a relation between the three principles: mura creates muri leading to the inability to reduce muda4. Or: waste can be reduced through solving problems with imbalanced loading and overstraining of peoplevii: All agile methods rigorously reduce existing software development methods to frameworks that are best described as barely sufficient. When these minimal frameworks are combined with discipline and rigorous inspect-and-adapt practices, robust methodologies are created that deliver working software early. The existing agile methods have a focus on small (single team, duration measured in months) projects, and the impact of large (multi-team, multi-year) projects on agile practices is not addressed in agile methods. This paper studies the requirements for the agile planning process in relation to the overburdening of individuals and teams (muri).
The certainty of undertaking activities addressed in each of the five levels increases, and therefore the amount of detail addressed (money invested), the number of people involved and the frequency can increase without running the risk of spending money on features that may not be built or may be built differently. Each of the five levels of planning addresses the fundamental planning principles: priorities, estimates and commitments.
Womack: http://www.leanuk.org/articles/mura_muri_muda.pdf
The delivery team on the other hand will: See the whole Learn about the steps to realize the vision Learn the business priorities Provide technical input to the roadmap Provide estimates for the projected features
Product Roadmap How To The creation of the roadmap is largely driven by the product owner (or product owner team). This stage of the program has limited influence of technology constraints. In a meeting or series of meetings the roadmap
will be drawn by the product owner. This can be quite literally, through a graphical representation of the releases, or more formally in a written document outlining the dates, contents and objectives of the foreseen releases. Product backlogs In anticipation of the next planning stage (release planning) a list of desired features needs to be built - the product backlog. In its simplest form, such a backlog is a table (spreadsheet) of product requirements, briefly described so a delivery team can provide estimates for the realization of each feature. Most importantly, the list has to be prioritized. The success of an agile project depends on the early delivery of the highest priority features. Since the success of a project is measured in business terms, the prioritization of the feature list is the responsibility of the business, i.e. the product owner. Interaction with the delivery teams is required. Without a discussion of the features it will be hard for the delivery team to produce estimates that have an acceptable inaccuracy. Characteristics of a product backlog include: One product backlog for all teams (see the whole) Large to very large features (up to 20 person days to deliver a feature) Feature priority based on business priorities (discovered through market research) Technology features (sometimes called non-functional features, work required to make the product work in a desired way, e.g. the implementation of a certain DBMS in order to warrant a certain system performance) are limited to those that have a direct impact on the success of the product in the market
Release vs. iteration characteristics A release is defined at system or program level, usually in product owner vocabulary. The release theme, release date and prioritized features together form a release; all these concepts are defined by the product owner. When releases are seen in the perspective of the roadmap, then the high visibility and confidence is in the near term (release current and next). This is expressed through more detail in the feature descriptions, and a smaller size of the individual features. A release can stretch over six to nine months, although two to four months is more common. The purpose of a release is to provide both customer and team with a view of the whole and have the product owner and delivery team make a first attempt of decomposing high level requirements into product features, guiding them to higher detail in features that are likely to be built.
The iteration, on the other hand, is defined at a feature level. The delivery team and product owner have agreed on the number of iterations in a release. Which features will be delivered in an iteration is determined by their priority; the number of features that will be delivered in the iteration is set by the velocity of the team and the team estimates of the features. Planning activities for the iteration is typically a single iteration at a time, or sometimes two. Planning only for the next iteration implies that the activities have a high likelihood to be undertaken. This warrants the investment of time by the delivery team into decomposition of features into tasks. Tasks are technical in nature; the product owner will not necessarily recognize them. Iteration lengths vary from one to six weeks, with two weeks seen as the most frequent duration. The purpose of an iteration is for each team to commit to delivering accurately estimated features. Release Planning How To With the product vision and product roadmap available and regularly updated and reviewed by the product owner and the team, everyone is aware of the focus, or theme, of the next releases, and the desired release dates. Furthermore the product features have been collected in the product backlog and have been prioritized and estimated. Through these exercises, the product owner and the delivery teams have a shared understanding of what has to be delivered, when, and why in the agreed order. If the team has estimated the features in storypoints or T-shirt sizesx then they have to agree on their capacity (expected velocity) based on numbers from the past or by plain guessing. Typical availability of team members is 60 to 70%, but numbers as low as 25% and as high as 90% are seen. A release planning session typically takes place over a full day, sometimes two if the program is very large (100s of team members). All team members participate in the session: product owner, full delivery team, stakeholders. The session is highly collaborative and interactive; tools used are typically sticky notes, flipcharts and whiteboards. An agendaxi could be: Introductions, goals, agenda updates Product vision, product metaphor explanation by the product owner Time-boxes for the releases and iterations Impact of previous releases and iterations Capacity calculation by the delivery team Agreement of deliverables (when is a feature done) Moving features into the release during break-out sessions by the individual teams. This can be a literal moving when the features are written on sticky notes, and the releases are represented by separate flip-over sheets. All team members participate in this exercise. Moving features from the release into iterations within the release by the individual teams Determination of dependencies by walking through the individual planning results, moving features to the required iterations or releases to solve the dependencies Final calculation of workload per iteration and comparison with the available capacity Review of discovered risks and issues Commitment to the release plan by all attendees Retrospective of the session
Iteration Planning: How To The structure of the iteration planning session resembles the release planning session. Although the teams work individually to produce their iteration plan, synchronization between teams will provide an effective mechanism to detect and resolve dependencies. The agenda for the planning meeting bears great similarities with the one from the release planning meeting, with the prime distinction of the planning horizon: only a single iteration is observed in all activities. The core of the activities is carried out on a team-by-team basis: The individual teams determine their actual capacity, or the amount of work it can get done within the iteration. The individual teams decompose as many features as seem to fit in the next iteration into tasks this can be done in preparation. Every task is estimated, with a typical task size of a half a day to two days. The done definition5 has to be taken into consideration when decomposing and estimating features: a feature is not done until it has been fully tested and accepted by the product owner.
The results of the individual teams are inspected in a joint session to determine dependencies (or disappearance of them) that were not seen during the release planning session.
The principle of a coordinating stand-up meeting can be repeated to address large number of teams: representatives of teams of teams report on the progress of the teams of teams. These meetings typically coordinate efforts of teams that have no common ground. For example, all the IT delivery teams have a coordinating (daily) stand-up, as do the training teams, finance teams, pre-production teams, etc. On a weekly or (late in the release cycle) daily schedule, representatives of the teams meet to report progress, plan and impediments.
A definition of the deliverables for a feature (when is a feature done) lists the artifacts that need to be delivered with the actual code. This can include tests, test results, various types of documentation etc. Some of these artifacts will be defined at project level (such as documents required by auditing teams), others are team dependant (like user documentation for teams working on user interface related features).
Conclusion
This section addressed the load of the delivery teams, through planning of the delivery activities with the right level of detail at the right moments. Through the staged planning activities, a balance is found between longterm views and commitments and upfront investments in design and planning activities. Through the ownership of the release and iteration planning by the delivery teams, the risk to overburden teams and individuals is greatly reduced.
This approach creates time to address problems that are caused by the lack of knowledge of the features by the delivery team. An example or activities that can be carried out during this pre-staging phase are building of prototypes of the application feature, which can be tested against a user group to study the user experiences. The result is an agreement between the product owner and the development team that backlog items are ready the team is confident that they can estimate and decompose the features.
The development teams must set aside time to prototype for the product owner at least one iteration before
10
implementation. In other words, the advantages of a smooth planning process come at a price, but the effect can be significant. In the case described earlier (two team members are occupied with the preparation of the planning session), the delay between the end of an iteration and the start of the next can take the length of a full iteration, or pre-staging doubles throughput.
Conclusion
It is possible to adhere to the barely sufficient principle of agile methods and extend the range of projects where the methods can be applied from single team, short-term projects to multi-team, long-term projects. The added levels of planning are not artificial or time-consuming, and they focus the right group of people on the product with the right level of detail, thus avoiding spending large amounts of time and money before the actual delivery of features begins. Understanding of the term acceptably inaccurate is of importance, when any member of the teams desires to hang on to details of work specification and planning then the agile implementation in on its way back to waterfall methods.
References
[i] Liker, The Toyota Way, McGraw Hill, 2005, pp. 114-115 [ii] Takeuchi & Nonaka, The New New Product Development Game, Harvard Business Review, Jan/Feb 1986 [iii] Schwaber & Beedle, Agile Software Development with SCRUM, Prentice Hall, 2001 [iv] Schwaber, Agile Project Management with Scrum, Microsoft Press, 2004 [v] Poppendieck & Poppendieck, Lean Software Development, Addison-Wesley, 2003
[vi] Sutherland, Viktorov & Blount, "Adaptive Engineering of Large Software Projects with Distributed / Outsourced Teams," in International Conference on Complex Systems, Boston, MA, USA, 2006. [vii] Liker, The Toyota Way, McGraw Hill, 2005, pp. 114-115
[viii] Moore & McKenna, Crossing the Chasm, Capstone Publishing, 1999 [ix] Highsmith, Agile Project Management, Addison-Wesley, 2004
[x] Cohn, Agile Estimating and Planning, Prentice Hall, 2006 [xi] Tabaka, Collaboration Explained, Addison Wesley, 2006
11