AGILE ESTIMATING AND PLANNING MIKE COHN EBOOK EBOOK

adminComment(0)
    Contents:

Editorial Reviews. From the Back Cover. Praise forAgile Estimating and Planning. "Traditional This is the eBook version of the printed book. . InAgile Estimating and Planning, Mike Cohn once again fills a hole in the Agile practices, this time. Read "Agile Estimating and Planning" by Mike Cohn available from Rakuten Kobo. Sign up today and get $5 off your first download. Agile Estimating and. Agile Estimating and Planning is the definitive, practical guide to estimating and planning agile projects. In this book, Agile Alliance cofounder Mike Cohn.


Agile Estimating And Planning Mike Cohn Ebook Ebook

Author:ANGILA LAVERE
Language:English, Arabic, French
Country:Czech Republic
Genre:Health & Fitness
Pages:163
Published (Last):31.01.2016
ISBN:596-8-62567-306-2
ePub File Size:15.80 MB
PDF File Size:11.68 MB
Distribution:Free* [*Sign up for free]
Downloads:42262
Uploaded by: ALLAN

Agile Estimating and Planning is the definitive, practical guide to estimating In this book, Agile Alliance cofounder Mike Cohn discusses the. Book Review: Agile Estimating And Planning By Mike Cohn: A Must Read For All Agile Aspirants .. Shelves: agile, ebook, non-fiction, product-management. The agile estimating and planning book by educator and ScrumMaster Mike Cohn An eBook version including EPUB, MOBI (site), and PDF versions can be.

This is a dangerous definition because it fails to acknowledge that a feature that looked good when the project was started may not be worth its development cost once the team begins on the project. A project that delivers all features on the initial plan is not necessarily a success.

Supporting Better Decision Making Estimates and plans help us make decisions. How does an organization decide if a particular project is worth doing if it does not have estimates of the value and the cost of the project? Beyond decisions about whether or not to start a project, estimates help us make sure we are working on the most valuable projects possible.

First, the organization needs schedule and cost estimates in order to determine if these projects are worth pursuing. Will the projects take so long that they miss a market window? Second, the organization needs estimates and a plan so that they can decide which to pursue. The company may be able to pursue one project, both projects, or neither if the costs are too high. Organizations need estimates in order to make decisions beyond whether or not to start a project.

Sometimes the staffing profile of a project can be more important than its schedule. However, if a plan can be developed that shows how to complete the new project without the involvement of this architect then the project may be worth starting. Conveying Information Many of the decisions made while planning a project are tradeoff decisions.

For example, on every project we make tradeoff decisions between development time and cost. Often the cheapest way to develop a system would be to hire one good programmer and allow her ten or twenty years to write the system, allowing her years of detouring to perhaps master the domain, become an expert in database administration, and so on.

Obviously though, we can rarely wait twenty years for a system and so we engage teams. A team of thirty may spend a year thirty person-years developing what a lone programmer could have done in twenty. The development cost goes up but the value of having the application nineteen years earlier justifies the increased cost.

We are constantly making similar tradeoff decisions between functionality and effort, cost, and time. Is a particular feature worth delaying the release? Should we hire one more developer so that a particular feature can be included in the upcoming release? Should we release in June or hold off until August and have more features? Should we download this development tool? In order to make these decisions we need estimates of both the costs and benefits. Establishing Trust Frequent reliable delivery of promised features builds trust between the developers of a product and the customers of that product.

Reliable estimates enable reliable delivery. A customer needs estimates in order to make important prioritization and tradeoff decisions. Estimates also help a customer decide how much of a feature to develop.

Reliable estimates benefit developers by allowing them to work at a sustainable pace. This leads to higher quality code and fewer bugs. These, in turn, lead back to more reliable estimates because less time is spent on highly unpredictable work such as bug fixing. Conveying Information A plan conveys expectations and describes one possibility of what may come to pass over the course of a project. A plan does not guarantee an exact set of features on an exact date at a specified cost.

A plan does, however, communicate and establish a set of baseline expectations. Far too often a plan is reduced to a single date and all of the assumptions and expectations that led to that date are forgotten.

I tell you seven months but provide no explanation of how I arrived at that duration. You should be skeptical of my estimate. In this case you can look at my plan and draw conclusions about the confidence you should have in it. What Makes a Good Plan? A good plan is one that stakeholders find sufficiently reliable that they can use it as the basis for making decisions.

Early in a project, this may mean that the plan says that the product can be released in the third quarter, rather than the second, and that it will contain approximately a described set of features.

Later in the project, in order to remain useful for decision making, this plan will need to be more precise. You determine that the new version will be ready for release in six months.

You create a plan that describes a set of features that are certain to be in the new version and another set of features that may or may not be included, depending on how well things progress.

Others in the company can use this plan to make decisions. They can prepare marketing materials, schedule an advertising campaign, allocate resources to assist with upgrading key customers, and so on.

This plan is useful—as long as it is somewhat predictive of what actually happens on the project. If development takes twelve months, instead of the planned six, then this was not a good plan. However, if the project takes seven months instead of six, the plan was probably still useful. Yes, the plan was incorrect and yes it may have led to some slightly mistimed decisions.

The plan, although inaccurate, was even more likely useful if we consider that it should have been updated regularly throughout the course of the project. In that case, the one-month late delivery should not have been a last-minute surprise to anyone. What Makes Planning Agile? This book is about agile planning, not agile plans.

Plans are documents or figures, they are snapshots of how we believe a project might unfold over an uncertain future. Planning is an activity. Agile planning shifts the emphasis from the plan to the planning. Agile planning balances the effort and investment in planning with the knowledge that we will revise the plan through the course of the project.

An agile plan is one that we are not only willing but anxious to change. The financial impact of each of these changes can be assessed and, if worthy, can alter the plan and schedule. As we discover these things, they impact our plans. This means we need plans that are easily changed. This is why the planning becomes more important than the plan. The knowledge and insight we gain from planning persists long after one plan is torn up and a revised one put in its place.

So, an agile plan is one that is easy to change. We may or may not do that. But if we learn we were wrong about some aspect of the target product and need to do something about it, then the plan needs to change.

There are many ways we can change the plan without changing the date. We can drop a feature, we can reduce the scope of a feature, we can possibly add people to the project, and so on. Agile planning is spread more or less evenly across the duration of a project. Release planning sets the stage and is followed by a number of rounds of iteration planning, after which the entire process is repeated perhaps a handful of times on a project. So in defining agile planning we find that it: We cannot excuse ourselves from these activities just because they are hard.

Estimates given early in a project are far less accurate than those given later. This progressive refinement is shown in the cone of uncertainty.

The purpose of planning is to find an optimal answer to the overall product development question of what to build. The answer incorporates features, resources, and schedule.

Answering this question is supported by a planning process that reduces risk, reduces uncertainty, supports reliable decision making, establishes trust, and conveys information.

A good plan is one that is sufficiently reliable that it can be used as the basis for making decisions about the product and the project. Agile planning is focused more on the planning than on the creation of a plan, encourages change, results in plans that are easily changed, and is spread throughout the project. Discussion Questions 1. This chapter started by making the claim that over-planning and doing no planning are equally dangerous.

What is the right amount of planning on your current project? What other reasons can you think of for planning? Think of one or two of the most successful projects on which you have been involved. What role did planning play on those projects? That is, what capabilities should the product exhibit, in what timeframe, and with which and how many resources?

We learned that planning supports this by reducing risk, by reducing uncertainty about what the product should be, by supporting better decision-making, by establishing trust, and by conveying information. Unfortunately, the traditional ways in which we plan projects often let us down. This becomes how we measure the progress of the team. A first problem with activity-based planning is that customers get no value from the completion of activities.

Features are the unit of customer value. Planning should, therefore, be at the level of features, not activities. A second problem occurs after a traditional schedule has been created and is being reviewed. When we review a schedule showing activities we do so looking for forgotten activities rather than for missing features. Further problems occur because activity-based plans often lead to projects that overrun their schedules.

Account Options

When faced with overruning a schedule some teams attempt to save time by inappropriately reducing quality. Other teams institute change control policies designed to constrain product changes, even highly valuable changes. Some of the reasons why activity-based planning leads to schedule overruns include: I was programming some interesting new features for a product.

I also needed to prepare documentation for an ISO compliance audit. The programming was fun. Not surprisingly, I managed to expand the scope of the programming work so that it filled almost all my time and left me the bare minimum of time to prepare for the audit. Work expands so as to fill the time available for its completion. Or, she may split time between the activity and researching some hot, new technology she thinks may be useful.

What she will not do very often is finish the activity early. In many organizations, if she finishes early, her boss may accuse her of having given a padded estimate.

Or, her boss may expect her to finish more activities early. Why risk either of these scenarios when a little web surfing can make the activity come in on schedule instead? When a Gantt chart shows that an activity is expected to take five days, it gives implicit permission to the developer to take up to that long to complete. It is human nature when ahead of that schedule to fill the extra time with other work that we, but perhaps not others, value.

Lateness Is Passed Down the Schedule Because traditional plans are activity-based, in large measure they focus on the dependencies between activities. Consider the Gantt chart shown in Figure 2. An early start for testing requires the fortuitous confluence of these events: Test Code the user interface Figure 2.

The key here is that even in this simple case there are three things that all must occur for an early start on testing. While multiple things must occur for testing to start early, any one of the following can cause testing to start late: This means that activities will start late and that the lateness will get passed down the schedule.

Because early completion is rare, it is even more rare that an activity such as testing in Figure 2. Activities Are Not Independent Activities are said to be independent if the duration of one activity does not influence the duration of another activity. In building a house, the amount of time it takes to excavate the basement is independent of the amount of time it will take to paint the walls.

When activities are independent, a late finish on one activity can be offset by an early finish on another. Flipping a coin multiple times is another example of independent activities. A coin that lands on heads on the first flip is no more or less likely to land on heads on the second flip. Are software development activities independent? Will the variations in completion times tend to balance out? Unfortunately, no.

Many software activities are not independent of each other. If the activities of a development effort are not independent then variations in completion time will not balance out. Many activities in a typical project plan are not independent, yet we continually forget this.

The real knowledge we should gain in a situation like this is that when an activity takes longer than planned, all similar activities are also likely to take longer than planned.

Multitasking Causes Further Delays Multitasking Causes Further Delays A second reason why traditional approaches to planning often fail is multitasking, which is defined as simultaneously working on multiple tasks.

Multitasking exacts a horrible toll on productivity. Clark and Wheelwright studied the effects of multitasking and found that the time an individual spends on valueadding work drops rapidly when the individual is working on more than two tasks.

This can be seen in Figure 2. Logically, it makes sense that multitasking helps when you have two things to work on. With two value-adding tasks, if you become blocked on one you can switch to the other. It is also logical that Figure 2. Multitasking often becomes an issue once a project starts to have some activities finish late.

At that point dependencies between activities become critical. A developer waiting on the work of another developer will ask that developer to deliver just a subset of work so that he may continue. For example, suppose I am to spend ten days working on some database changes, then ten days implementing an application programming interface API for accessing the database, and 15 16 Chapter 2 Why Planning Fails then ten days developing a user interface. This can be seen in the top half of Figure 2.

Your work is held up until you get the API from me. You ask me to do just enough of the API work so that you can get started. Similarly, the tester asks me to do just enough of the user interface so that she can begin automating tests. I agree and my schedule becomes as shown in the bottom of Figure 2. This often gives the illusion of speed; but, as can be seen in Figure 2.

This is almost certain to ripple through and affect further activities in the plan. Additionally, in this example, each of the desired units of work remains in process for 20 days rather than 10 as was the case when the work was done serially. To make matters worse, Figure 2. The Clark and Wheelwright study indicate that a loss in productivity is almost inevitable. Multitasking becomes a problem on a traditionally planned project for two primary reasons. First, work is typically assigned well in advance of when the work will begin and it is impossible to efficiently allocate work in advance.

Assigning work to individuals rather than to groups exacerbates the problem. Second, it encourages focusing on achieving a high level of utilization of all individuals on the project rather than on maintaining sufficient slack to cope with the inherent variability in typical project tasks.

Features Are Not Developed By Priority A third reason why traditional planning fails to consistently lead to high-value products is because the work described by the plan is not prioritized by the value to the users and customer. Many traditional plans are created with the assumption that all identified activities will be completed.

This means that work is typically prioritized and sequenced for the convenience of the development team. Estimates Become Commitments Traditional thinking says that if all work will be completed then project customers have no preference about the sequence in which that work is done. This leads to the development team working on features in what appears to the customer as a relatively haphazard order.

Then, with the end of the project approaching, the team scrambles to meet the schedule by dropping features. Since there was no attempt to work on features in a priority order, some of the features dropped are of greater value than those that are delivered. We Ignore Uncertainty A fourth shortcoming with traditional approaches to planning is the failure to acknowledge uncertainty. We ignore uncertainty about the product and assume that the initial requirements analysis led to a complete and perfect specification of the product.

We assume that users will not change their minds, refine their opinions, or come up with new needs during the period covered by the plan. As stated earlier in this chapter, we cannot hope to identify every activity that will be needed in the course of a project. Yet we often fail to acknowledge this in the plans we create.

Even with all this uncertainty, schedules are often expressed as a single, unqualified date: During the earliest part of a project we are the most uncertain. The estimates we give should reflect our uncertainty. One way of doing this is by expressing the end date as a range.

As the project progresses and as uncertainty and risk are removed from the project, estimates can be refined and made more precise. To reduce uncertainty about what the product should be, work in short iterations and show or, ideally, give working software to users every few weeks. Uncertainty about how to develop the product is similarly reduced by iterating.

For example, missing tasks can be added to plans, bad estimates can be corrected, and so on. In this way, the focus shifts from the plan to the planning. Estimates Become Commitments Embedded within each and every estimate is a probability that the work will be completed in the estimated time. Suppose your team has been asked to develop a new high-end word processor.

A problem with traditional planning can arise if the project team or its stakeholders equate estimating with committing.

As Phillip Armour points out, an estimate is a probability and a commitment cannot be made to a probability. Commitments are made to dates. Prior to making such a commitment the team needs to assess a variety of business factors and risks. It is important that they be given this opportunity and that every estimate does not become an implicit commitment. Activity-based planning distracts our attention from features, which are the true unit of customer value. A variety of problems then lead to the likelihood of delivering late against a schedule derived from an activity-based plan.

With good intentions, project team members view multitasking as a possible cure but are eventually forced even further behind schedule because of the hidden costs of multitasking. When the project schedule runs out of time, features are inevitably dropped. Because features are developed in the order deemed most efficient by the developers, the dropped features are not necessarily those with the lowest value to users. Ignoring uncertainty about exactly what users will eventually want can lead to completing a project on schedule but without including important capabilties that were identified after the plan was created.

When we also ignore uncertainty about how the product will be developed it leads to missed activities in the project plan. This, in turn, increases the likelihood that the project will be late, that features will be dropped at the end, or that inappropriate quality tradeoffs may be made. Many organizations confuse estimates with commitments. As soon as a team expresses an estimate they are forced to commit to it.

Discussion Questions Discussion Questions 1. What problems result from plans being based on activities rather than deliverable features? In your current environment, is an estimate the same as a commitment?

What problems does this cause? What could you do to change this misperception? In what ways does multitasking impact your current project? How could you reduce that impact? Patton Although it started years before, the agile movement officially began with the creation of the Agile Manifesto in February Beck Their document both gave a name to what they were doing and provided a list of value statements.

The authors of the Agile Manifesto wrote that they value: Great software is made by great individuals and as an industry we have tried too long with too little success to define a development process that relegates individuals to replaceable cogs in the machinery. Agile processes acknowledge the unique strengths and weaknesses of individuals and capitalize on these rather than attempting to make everyone homogeneous. This makes it possible to collect early, frequent feedback on both the product and the process.

As the developed software grows each iteration it can be shown to likely or actual users. Feedback from these users is fed back into the development process to make sure that the team is always working on the highest-valued features and that those features will satisfy user expectations.

Customer collaboration is valued over contract negotiation because agile teams would like all parties to the project to be working toward the same set of goals. Contract negotiation sometimes sets the development team and the project customer at odds right from the start. In the game I bought her, a princess is placed under a spell and players need to remove obstacles a moat, a locked door, and so on that are between them and the princess.

Players take turns as in most games but the goal is to collaboratively remove obstacles and save the princess. All players win or all players lose. Yes, contracts are often necessary but the terms and details in a contract can exert great influence on whether the different parties are set on a collaborative or a competitive effort.

For all but the simplest projects, it is impossible for users to know every detail of every feature they want. It is inevitable that users will come up with new ideas and almost as inevitable that they will decide that some features desired today will become lower priorities tomorrow. To an agile team, a plan is one view of the future but many views are possible.

As a team gains knowledge and experience they will factor these into the plan. With these four value statements in mind, in this chapter we consider what it means to have an agile approach to a project as well as what it means to have an agile approach to estimating and planning.

An Agile Approach To Projects With an understanding of the four primary agile value statements, we can turn our attention to what an agile team looks like in practice.

Taken collectively, the An Agile Team Works As One four value statements lead to software development processes that are highly iterative and incremental and that deliver coded and tested software at the end of each iteration. The following sections cover some of the main ways in which agile teams work. Including that they: Analysts do not throw requirements over the wall to designers.

Designers and architects do not throw designs over a wall to coders; coders do not throw half-tested code over a wall to testers. While an agile team should work together as one whole team, there are a number of specific roles on the team.

It was worth identifying and clarifying those roles that play a part in agile estimating and planning. The first role is the product owner. The primary duties of the product owner include making sure that all team members are purusing a common vision for the project, establishing priorities so that the highest-valued functionality is always being worked on, and making decisions that lead to a good return on the investment in the project.

When developing commercial software, the product owner is often someone from the marketing or product management side of the company. A second role is that of customer. The customer is the person who has made the decision to fund the project or to download the software.

On a project developing software for internal use, the customer is usually a representative from another group or division. On such projects the product owner and customer roles are often combined. For a commercially distributed product, the customer will be the person who downloads the software.

In either case, the customer may or may not be a user of the software, which is, of course, another important role. Another role worth highlighting is that of developer. I use developer very generally to refer to anyone developing software.

That includes programmers, testers, analysts, database engineers, usability experts, technical writers, archi- 23 24 Chapter 3 An Agile Approach tects, designers, and so on. Using this definition, even the product owner may be thought of as a developer on many projects. A final role is the project manager. As described by Highsmith , the role of the project manager changes on agile projects.

Agile project managers focus more on leadership than on management. On some agile projects, the person fufilling the project manager role will also act in another role, often as a developer but occasionally as a product owner. Agile Teams Work in Short Iterations On an agile project there is no grand delineation of phases—no upfront requirements phase followed by analysis followed by architectural design and so on.

Depending upon the actual agile process you select or define, you may put a very short design, modeling, or other phase at the front end of the project. But, once the project has begun in earnest, all work requirements, design, coding, testing, and so on happens concurrently within each iteration. Iterations are timeboxed, meaning they finish on time even if functionality is dropped to do so, and are often very short.

Most agile teams work in iterations of from one to four weeks long but some teams maintain their agility with iterations of up to three months. Most teams settle upon a relatively consistent iteration length. Some, however, choose the appropriate length for an iteration at the start of each iteration. Agile Teams Deliver Something Each Iteration More crucial than the specific iteration length chosen by a team is that during the iteration they transfrom one or more imprecise requirements statements into coded, tested, and potentially shippable software.

Of course many teams will not deliver the results of every iteration to their users; the goal is simply that they could. This means that teams make progress by adding one or more small features in each iteration but that each added feature is coded, tested, and of releaseable quality. It is essential that the product be brought to this potentially shippable state by the end of each iteration. For example, I work with one team that requires two months of mean time between failure MTBF testing before releasing their product, which includes both hardware and software.

They cannot shorten those two months as it is contractually required by their client and that amount of time is often necessary to check for hardware failures. This team works in four-week iterations and apart Agile Teams Focus on Business Priorities from running this two-month MTBF test, their product is at a truly releasable state at the end of each iteration.

Because a single iteration does not usually provide sufficient time to complete enough new functionality to satisfy user or customer desires, the broader concept of a release is introduced.

A release comprises one or more usually more iterations that build upon each other to complete a set of related functionality. While iterations are most commonly one to four weeks, a release is typically two to six months. For example, in an investment management system, one release may include all of the functionality related to downloading and selling mutual funds and money market funds.

This may take six two-week iterations to complete roughly three months. A second release may add stock and bond trading and take four additional two-week iterations.

Releases may occur at varying intervals. A first release may take six months to be developed. It may be followed by another release three months later, and so on.

Agile Teams Focus on Business Priorities Agile teams demonstrate a commitment to business priorities in two ways.

In order for the product owner to have the most flexibility in prioritizing, features must be written so as to minimize the technical dependencies between them. It is difficult for a product owner to prioritize features into a release plan if the selection of one feature requires the prior development of three others.

A team is unlikely to achieve a goal of absolutely no dependencies; however, keeping dependencies at a minimum is often quite feasible. Second, agile teams focus on completing and delivering user-valued features rather than on completing isolated tasks that eventually combine into a uservalued feature.

One of the best ways to do this is to work with user stories, which are a lightweight technique for expressing software requirements.

A user story is a brief description of functionality as viewed by a user or customer of the system. User stories are free-form and there is no mandatory syntax. However, it can be useful to think of a story generally fitting the form: Rather than writing a lengthy requirements specification, agile teams have found it better to pursue to a just-in-time requirements approach.

Typically this begins with a short description of a user story being 25 26 Chapter 3 An Agile Approach handwritten on a note card, or perhaps typed into a computer for larger or distributed teams. The story card is just the beginning, though, and each user story is accompanied by as many conversations between the developers and the product owner as needed.

These conversations happen as often as needed and include whoever is necessary. Written documentation may continue to exist when using a story-based requirements approach. However, the focus is shifted dramatically from written to verbal communication.

Agile Teams Inspect and Adapt The plan created at the start of any project is not a guarantee of what will occur. In fact, it is only a point-in-time guess. Many things will conspire to invalidate the plan—project personnel may come or go, technologies will work better or worse than expected, users will change their minds, competitors may force us to respond differently or more rapidly, and so on.

Agile teams view every such change as presenting both the opportunity and need to update the plan in order to better reflect the reality of the current situation.

At the start of each new iteration, an agile team incorporates all new knowledge gained in the preceding iteration and adapts accordingly. If a team has learned something that is likely to affect the accuracy or value of the plan, they adjust the plan. The accuracy of the plan may be affected by the team discovering they have over- or underestimated their rate of progress.

Or they may discover that a certain type of work is more time-consuming than previously thought. The value of the plan may be altered by knowledge the product owner has gained about the desires of likely users. The value of the plan could be increased in this case by moving more of the desired features into the release at the expense of some of the lesser-valued features.

None of this is to say that agile teams take an ad hoc view of changing priorities. Priorities do tend to be relatively stable from one iteration to the next. However, the opportunity to alter priorities between iterations is a powerful contributor to the ability to maximize the return on the project investment.

An Agile Approach to Planning Estimating and planning the development of a new product is a daunting task made more difficult by our misconceptions about projects. Macomber points out that we should not view a project solely as the execution of a series of steps. Instead, it is important that we view a project as rapidly and reliably gen- Multiple Levels Of Planning erating a flow of useful new capabilities and new knowledge.

The new capabilities are delivered in the product, the new knowledge is used to make the product the best that it can be. On an agile project, we use this flow of new capabilities and knowledge to guide the ongoing work. The new knowledge generated by the project may be about the product or the project. New product knowledge helps us know more about what the product should be.

New project knowledge is information about the team, the technologies in use, the risks, and so on. We frequently fail to acknowledge and plan for this new knowledge. Failing to plan to acquire new knowledge leads to plans built on the assumption that we know everything necessary to create an accurate plan.

In the world of software development that is rarely, if ever, the case. I often equate the traditional view of a project as running a kilometer race. You know exactly how far away the finish line is and your goal is to reach it as quickly as possible. An agile project is more like a timed race than a kilometer race: In this way, the agile project team knows when it will finish, but not what they will deliver.

When we acknowledge that the end result is both somewhat unknown as well as unknowable in advance, planning becomes a process of setting and revising goals that lead to a longer term objective. Multiple Levels Of Planning When setting and revising goals, it is important to remember that we cannot see past the horizon and that the accuracy of a plan decreases rapidly the further we attempt to plan beyond where we can see.

Agile Estimating and Planning

For example, suppose you are standing on a small boat and that your eyes are nine feet above the water. The distance to the horizon in this case is slightly over four miles. Because you cannot see past the horizon, you need to look up often and adjust your plan. A progressive elaboration of the plan is needed. To calculate the distance to the horizon in miles, multiply the square root of the height of your eyes by 1. The three horizons are the release, the iteration, and the current day.

The relationships between these and other planning horizons can be seen in the planning onion of Figure 3. Agile teams plan at least at the release, iteration, and day levels. Most agile teams are only concerned with the three innermost levels of the planning onion. Release planning considers the user stories or themes that will be developed for a new release of a product or system. The goal of release planning is to determine an appropriate answer to the questions of scope, schedule, and resources for a project.

Release planning occurs at the start of a project but is not an isolated effort. A good release plan is updated throughout the project usually at the start of each iteration so that it always reflects the current expectations about what will be included in the release At the next level is iteration planning, which is conducted at the start of each iteration.

Based on the work accomplished in the just-finished iteration, the product owner identifies high priority work the team should address in the new iteration.

Because we are looking at a closer horizon than with release planning, the components of the plan can be smaller. During iteration planning we talk about the tasks that will be needed to transform a feature request into working and tested software. Finally, there is daily planning.

Most agile teams use some form of daily standup meeting to coordinate work and synchronize daily efforts. Although it may seem excessive to consider this planning in the formal sense, teams definitely make, assess, and revise their plans during these meetings.

During their daily meetings, teams constrain the planning horizon to be no further away than the next day, when they will meet again.

Because of this, they focus on the plan- Conditions of Satisfaction ning of tasks and on coordinating the individual activities that lead up to the completion of a task.

By planning across these three time horizons—release, iteration, and day— agile teams focus on what is visible and important to the plan they are creating. Outside the concern of most individual agile teams and this book are product, portfolio, and strategic planning.

Product planning involves a product owner looking further ahead than the immediate release and planning for the evolution of the released product or system.

Conditions of Satisfaction Every project is initiated with a set of objectives. There will almost certainly be additional objectives regarding schedule, budget, and quality. Way back when I was a high school and assigned to write a paper about a book such as Moby Dick I would always ask the teacher how long the paper had to be.

There were, of course, a number of additional, unwritten conditions of satisfaction such as that the paper would be well-written, my own work, in English, and so on. Common factors in her conditions of satisfaction include the usual items: The team and product owner look for ways to meet all of the conditions of satisfaction. The product owner may, for example, be equally satisfied with a release in five months that includes one set of user stories as with a release a month later that includes additonal user stories.

When no feasible solution can be found, the conditions of satisfaction must change. Once a release plan covering approximately the next three to six months is established, it is used as input into the planning of the first iteration.

The product owner and the team discuss various ways of best meeting the conditions of satisfaction for the iteration.

Summary Feedback loops are shown in Figure 3. Based on their experience developing the product increment during the iteration the team may have gained knowledge or experience that affects planning at one or more of these levels.

Similarly, showing the product increment to existing or likely users may generate new knowledge that may cause changes to the plans. An agile team will incorporate these changes into their plans to the extent they lead to a higher-value product. Summary Agile teams work together as a team but include roles filled by specific individuals. First is the product owner, who is responsible for the product vision and for prioritizing features the team will work on.

Users, developers and managers are other roles on an agile project. Agile teams work in short, timeboxed iterations that deliver a working product by the end of each iteration. The features developed in these iterations are selected based on the priority to the business. This ensures that the most important features are developed first. User stories are a common way for agile teams to express user needs. Agile teams understand that a plan can rapidly become out of date. Because of this they adapt their plans as appropriate.

Projects should be viewed as rapidly and reliably generating a flow of useful new capabilities and new knowledge rather than as just the execution of a series of steps. Projects generate two types of new knowledge: Each is useful in refining a product plan toward achieving the most value for the organization. Agile teams use three levels of planning: The release plan looks ahead for the duration of the release, typically three to six months.

An iteration plan looks ahead only the duration of one iteration, typically one to four weeks. A daily plan is the result of team member commitments made to each other usually during a daily standup meeting. During release planning, the whole team identifies a way of meeting the conditions of satisfaction for the release, which includes scope, schedule, and resources. To achieve this, the product owner may need to relax one or more of her conditions of satisfaction.

A similar process occurs during iteration planning when the conditions of satisfaction are the new features that will be implemented and the high level test cases that demonstrate the features were implemented correctly.

How would working as a unified whole team have affected your current or last project? What are the conditions of satisfaction on your current project? Do all project stakeholders and participants agree on all of them?

What risks are there to proceeding on a project that does not have agreement on all conditions of satisfaction? Why are budget and schedule listed as conditions of satisfaction to be considered during release planning but not during iteration planning? To understand the distinction, suppose I am tasked with moving a large pile of dirt from one corner of my yard to another.

I could look at the pile of dirt, assess my tools a shovel and a wheelbarrow , and directly estimate the job at five hours. In arriving at this estimate I bypassed any estimate of size and went directly to an estimate of duration. Suppose instead that I look at the pile and estimate its size.

Based on its dimensions I estimate the pile to contain about cubic feet of dirt. This is my estimate of the size of this project. But, an estimate of size alone is not useful in this case. We want to know how long it will take to move the dirt. We need to convert the estimate of size cubic feet into an estimate of duration. A label on my wheelbarrow says it has a capacity of six cubic feet. Dividing cubic feet by 6 cubic feet, I decide that moving the dirt will take 50 trips with the wheelbarrow.

I estimate that each trip will take three minutes to load the wheelbarrow, two minutes to walk to the other side of the yard and dump the dirt, and one minute to walk back with the empty wheelbarrow. Total trip time will be six minutes. Since I anticipate making 50 trips, my estimate of duration is minutes or 5 hours. For a software project, the process of estimating duration is shown in Figure II. In this part, we first look at two measures of size—story points and ideal time.

We then look at techniques for estimating followed by advice on when to re-estimate. This part concludes with suggestions on how to choose between estimating in story points and ideal time. For the first course, you can have either a cup or a bowl of soup.

And you can have either a small or a large soda. In cases such as these, you are ordering by relative rather than measured size. Fortunately, this is all the knowledge I need. All I need to know is 35 36 Chapter 4 Estimating Size with Story Points whether a particular story or feature is larger or smaller than other stories and features.

Story Points Are Relative Story points are a unit of measure for expressing the overall size of a user story, feature, or other piece of work. When we estimate with story points we assign a point value to each item. The raw value we assign is unimportant. What matters are the relative values. A story that is assigned a two should be twice as much as a story that is assigned a one.

It should also be two-thirds of a story that is estimated as three story points. The number of story points associated with a story represents the overall size of the story. There is no set formula for defining the size of a story. Rather, a story point estimate is an amalgamation of the amount of effort involved in developing the feature, the complexity of developing it, the risk inherent in it, and so on.

There are two common ways to get started. The second approach is instead to select a story that seems somewhat medium-sized and give it a number somewhere in the middle of the range you expect to use. Personally, I prefer most of my stories to be in the range of 1— The best way to see how this works is to try it. With that in mind, assign dog points to each of these breeds: The discussion that follows will be much more clear if you do.

My estimates are shown in Table 4. I determined these values by starting with Labrador Retriever.

Agile Estimating and Planning by Mike Cohn PDF Download

They seem like medium-sized dogs to me, so I gave that breed a five. Great Danes seem about twice as tall so I gave them a ten. Saint Bernards seem a little less than twice so I gave them a nine. A dachshund seems about as short as a dog gets and so got a one.

Bulldogs are short so I gave them a three. However, if I had been estimating dog points based on weight, I would have given bulldogs a higher number. Table 4. Breed Dog Points Labrador Retriever 5 Terrier 3 Great Dane 10 Poodle 3 Dachshund 1 German Shepherd 5 Saint Bernard 9 Bulldog 3 On an agile project it is not uncommon to begin an iteration with incompletely specified requirements, the details of which will be discovered during the iteration.

However, we need to associate an estimate with each story, even those that are incompletely defined. Without more detail, it should have been difficult to assign dog points to poodle and terrier. There are toy, miniature, and standard poodles, each of a different height. Similarly, terrier is a group of more than twenty breeds. Some terriers West Highland, Norwich, Norfolk are less than a foot tall; others Airedale are nearly two feet tall. In Table 4. I reasoned that even the largest are smaller than labrador retrievers and that the small terriers and poodles would be 1 or 2 point dogs, so on average a 3 seemed reasonable.

It is calculated by summing the number of story points assigned to each user story that the team completed during the iteration. If the team completed three stories each estimated at five story points then their velocity would be fifteen.

If the team completed two five-point stories their velocity would be ten. If a team completed ten story points of work last iteration, our best guess is that they will complete ten story points this iteration. Since story points are estimates of relative size, this will be true whether they work on two five-point stories or five two-point stories. In the introduction to this part of the book, the model in Figure 4.

It should be possible now to see how story points and velocity fit into this model. If we sum the story point estimates for all desired features we come up with a total size estimate for the project. We can turn this duration into a schedule by mapping it onto a calendar. For example, suppose all of the user stories are estimated and the sum of those estimates is story points. We can either round that up to 10 iterations or find one point to remove so that it becomes 9 iterations.

Since each iteration is two weeks, our estimate of duration is twenty weeks. We can count forward twenty weeks on the calendar and that becomes our schedule. This very simplistic explanation of release planning works for now.

That is not always the case and ve- Velocity Corrects Estimation Errors locity must sometimes be estimated instead. The beauty of a points-based approach to estimating is that planning errors are self-correcting because of the application of velocity. For example, suppose a team estimates a project to include points of work. They initially believe they will be able to complete 25 points per iteration, which means they will finish in eight iterations.

However, once the project begins their observed velocity is only Without re-estimating any work they will have correctly identified that the project will take 10 iterations rather than 8.

To see how this works, suppose you are hired to paint an unfamiliar house. You are shown the floorplan in Figure 4. For your own purposes you want to know how long this job will take you so you estimate it. Since all you have is the floorplan and you cannot see the actual house yet, you estimate based on what you can infer from the flooplan.

Suppose that you estimate the effort to paint each of the smaller bedrooms to be 5 points. It does indicate, however, that the effort will be about the same for each bedroom.

Because the master bedroom is about twice the size of the other bedrooms, you estimate it as ten points. However, look more closely at Figure 4. In fact, your estimates remain useful because they are estimates of the relative effort of painting each room.

If you find that the bedrooms are twice the size you thought then the master bedroom is also twice the size you thought. The estimates remain the same but because the rooms have four times the area you expected, your rate of progress through them will be slower.

The beauty of this is that estimating in story points completely separates the estimation of effort from the estimation of duration. Of course effort and schedule are related, but separating them allows each to be estimated independently. In fact you are no longer even estimating the duration of a project; you are computing it or deriving it. The distinction is subtle but important. Summary Story points are a relative measure of the size of a user story. A user story estimated as ten story points is twice as big, complex, or risky as a story estimated as five story points.

A ten-point story is similarly half as big, complex, or risky as a twenty-point story. What matters are the relative values assigned to different stories. At the end of each iteration, a team can look at the stories they have completed and calculate their velocity by summing the story point estimates for each completed story. Story points are purely an estimate of the size of the work to be performed. The duration of a project is not estimated as much as it is derived by taking the total number of story points and dividing it by the velocity of the team.

What story point values would you put on some features of your current project? After having assigned dog points to the dogs in this chapter, what estimate would you assign to an elephant if, as your project customer, I told you I mispoke and I meant to give you a list of mammals not dogs. Over what range from the smallest item to the largest do you think you can reliably estimate? Five times the smallest item?

Ten times? A hundred times? A thousand times? You could answer that it has four fifteen-minute quarters and is therefore sixty minutes long. Or you could answer that it is somewhere around three hours long. Either answer would be correct in its own way. The difference highlights the distinction between ideal time and elapsed time. Ideal time is the amount of time that something takes when stripped of all peripheral activities.

In that sense, a football game takes sixty minutes. Elapsed time, on the other hand, is the amount of time that passes on a clock or perhaps a calendar. A football game requires around three hours of elapsed time.

Each way of measuring duration serves its own purpose. In a football game, ideal time is used by the officials to know when the quarters and game are complete. Certainly that is a necessary function. It is almost always far easier and accurate to predict the duration of an event in ideal time than in elapsed time.

Suppose you are asked to estimate the duration of a specific football game this weekend. If you choose to give your estimate in ideal time you can give a quick, off-the-cuff answer of 60 minutes. On the other hand, suppose you choose to express your estimate in elapsed time. Some of the difference is based on random events such as injuries but another part of the difference can be attributed to the playing styles of the teams, how many penalties each receives, and so on.

Televised games take longer because of extra timeouts for commercials. Weather can either prolong or shorten games, depending on the teams involved.

To come up with an estimate that will be as accurate as your off-the-cuff ideal time estimate you would need to consider each of these factors. This book shows you how to employ Agile planning in a succinct, practical, and easy-to-follow manner. In this book, Mike provides time-proven and well-tested methods for being successful with the multiple levels of planning and estimating required by Agile.

This book is the first to detail the disciplines of Agile estimating and planning, in ways that rival my civil engineering texts on CPM Planning and Estimating. With Agile estimation and planning, you focus effort where it really counts, and continue to do so as circumstances change.

The groundbreaking book my clients have been clamoring for! Agile Estimating and Planning demystifies the process of defining, driving, and delivering great software that matters to the business. Mike's clarity, insight, and experience leap out through every page of this book, offering an approach that is relevant and immediately useful to all members of an Agile project.

Agile Estimating and Planning fills a gap left by most of the other books and gives you important, practical, down-to-earth techniques needed to be successful on Agile development projects. If you don't do one of them, you don't need the other two.

This book provides very practical knowledge for estimation, planning, prioritizing, and tracking. It should be compulsory subject matter for project managers and their teams, even if they hesitate to call themselves Agile. With Agile Estimating and Planning , Mike Cohn has given us a definitive guide to a wide range of Agile estimating and planning practices.

With his clear and practical style, Mike not only explains how to successfully get started planning an Agile project, but also provides a wealth of tips and advice for improving any team's Agile planning process. This book is a must-read for managers, coaches, and members of Agile teams.

This book provides an excellent guide for all Agile practitioners, both seasoned and novice. More importantly, he has a great mix of concepts with real-world examples finished off with a case study so the reader can relate the information to their own situation.

Unless you are already an expert Agile planner and estimator, this book is for you. The book recognizes that people, not tools or processes, produce great software, and that teams benefit most by learning about their project and their product as they go.

The examples in the book are concrete, easily grasped, and simply reek of common sense. This book will help teams whether Agile or not deliver more value, more often, and have fun doing it! Whether you're a manager or a programmer, a tester or a CEO, part of an Agile team, or just looking for a way to stamp out chaos and death marches, this book will guide you.

As with User Stories Applied, this book is easy to read and grounded in real-world experience. This book has great breadth, ranging from the fundamentals of release planning to advanced topics such as financial aspects of prioritization.

I can see this book becoming an invaluable aid to Agile project managers, as it provides a wealth of practical tips such as how to set iteration length and boot-strap velocity, and communicate progress. Agile Estimating and Planning addresses this need. It's not theory--this book contains project-tested practices that have been used on Agile projects. As Mike's test subjects, we applied these practices to the development of video games one of the most unpredictable project environments you can imagine with success.

These qualities are evident in this wonderful, practical guide. I estimate you won't be disappointed in studying and applying his advice. This book is filled with clear examples that are essential--from project team members to the executive level. Mike presents processes to converge on this value while reducing risk and uncertainty, supporting decision making, establishing trust, and conveying information.

Agile methodologies have shifted the emphasis from plans to planning, but have glossed over many of the finer details of Agile planning. Now, very simply and accessibly, Mike demonstrates how it can be done.Very good book.

The product owner and the team discuss various ways of best meeting the conditions of satisfaction for the iteration. When working with story points or ideal time we do not re-estimate solely because a story took longer to implement than we thought.

That story points help promote cross-functional team behavior is a huge advantage. The case story at the end was a real exciter because of the style. In order to estimate many stories it is necessary to have a very high-level design discussion about the story:

MIGUEL from Clarksville
I do relish reading books jovially. See my other articles. I enjoy sack race.
>