Here we will shatter the myth that agile teams can't plan. Planning and estimating in the agile world depend on a single key metric: the development team's velocity, which describes how much work the team can get done per iteration. A release plan represents how much scope that team intends to deliver by a given deadline. Agile release cycles should certainly be kept shorter than a year, and are often as short as 6 months or 3 months. A release is, in turn, made up of iterations.
For a given project, iteration length will typically be fixed at a length somewhere between a week and a month. If the release is in 6 months and iterations are going to be 2 weeks each, the release will consist of 13 iterations. After an initial feature list has been identified, prioritized, and potentially estimated, the team holds a release planning meeting to establish the overall release schedule and determine which features can likely be delivered. The overall release plan in terms of prioritized features is then used to directly feed individual iteration plans.
Iteration Planning - This plan is a subset of the release plan stories that will be done in the very next iteration or sprint. Only one iteration plan exists at a time. With our chosen collection of important features we can now estimate the amount of effort to implement them. The people who will do the work, namely the developers, have authority to set the estimates. The manager will set the total amount of work that the next iteration can have planned. The customer then chooses a subset of the most important features that will fit into the next iteration. The iteration plan will often be verified by breaking the stories into development tasks and estimating them with finer grain units. At this level use cases could also be created. At the beginning of each iteration to identify the stories that will be developed, and to break each of them down into specific technical tasks and acceptance criteria.
Iteration planning meetings generally last from 2-8 hours, depending on the length of the iteration. The longer the iteration, the more time needed to plan its details. The result is an iteration backlog of stories, defects, tasks, and acceptance tests. Ideally, each iteration has a specified goal the team is attempting to achieve. As an example, an iteration planning meeting for a two-week iteration is typically time-boxed to approximately four hours. One approach many teams take is to separate the meeting into two sections, each with a different objectives.
Daily planning meeting:
The team holds a daily scrum meeting called the "daily scrum.” Meetings are typically held in the same location and at the same time each day. Ideally, a daily scrum meeting is held in the morning, as it helps set the context for the coming day's work. These scrum meetings are strictly time-boxed to 15 minutes. This keeps the discussion brisk but relevant. During the daily scrum, each team member answers the following three questions: What did you do yesterday? What will you do today? Are there any impediments in your way?
By focusing on what each person accomplished yesterday and will accomplish today, the team gains an excellent understanding of what work has been done and what work remains. The daily scrum meeting is not a status update meeting in which a boss is collecting information about who is behind schedule. Rather, it is a meeting in which team members make commitments to each other.
Agile Planning Onions
Agile does lot more planning and risk mitigation than traditional processes. Agile focuses on planning very often instead of doing comprehensive and assumption based planning once. Agile Planning (a.k.a. planning onion) has 6 levels - Strategy, Portfolio, Release, Iteration, Daily, and Continuous. Each layer of the onion drives the goals of the layers below, sets timeframes, and defines ownership and interaction.
Strategy – Strategic vision is at the top of the planning onion because it defines what a company is, and what it wants to become. The Timeframes on this layer are more about the individual strategic goals that are produced here. Typically, companies provide 1 year, and 5 year plans and share strategic vision and objectives with key management to pass down the chain. The layer is owned by C-Level management who define and govern all the execution of the strategic goals.
Portfolio – The portfolio layer of the onion represents the overall product offering that consists of application suites and tools and how they interact with each other. While our clients utilize individual products, they typically engage many products that integrate and work together to provide an overall solution. The owner of this layer is typically upper management in the product area and has vision into the various product lines. Decisions here should support the strategic vision and goals, and set direction for the product team’s road-maps and integration synchronization.
Product – In our case, the product layer represents product teams who own one or more related products (product suite). Each team sets a product vision and outlines the road-map for their products within the product suite. The typical time-box for our products is approximately 12 months out. Product Managers own this layer of the planning onion and validate road-maps for products to the Portfolio and Strategic vision. A product roadmap is a high-level plan that describes how the product is likely to grow. It allows you to express where you want to take your product, and why it’s worthwhile investing in it . An agile product roadmap also facilitates learning and change. A great way to achieve these objectives is to employ a goal-oriented roadmap – a roadmap based on goals rather than dominated by many features.
Release – A release represents a prioritized backlog of product features that represent smaller plans that drive toward the product vision. A release is time-boxed here into approximately year quarters such that there are four releases per year. This provides a means for prioritizing themes to target the product road-map. Product Managers typically own this layer and work with the Product Managers to prioritize and slot high-level themes into releases to create a plan for iterations.
Iteration – An iteration is a time-boxed set of features (stories) that we plan to deliver in two week increments. There are typically six iterations to a release. When planning, the product manager reviews the release plan and divides it into 4-6 iterations worth of backlog and prioritizes to deliver key features quickly. Using guidance from the release plan, Product and Product Managers determine approximate priority of themes and epics to meet release goals. Stories are initially created by the Product Manager and shared with the team in story workshops. The team commits to a set of stories each iteration in planning meetings.