The Speculate Phaseathena.ecs.csus.edu/~buckley/CSc233/APM_Ch7.pdf · Agile Project Management Jim...

28
Agile Project Management Jim Highsmith Chapter 7 The Speculate Phase

Transcript of The Speculate Phaseathena.ecs.csus.edu/~buckley/CSc233/APM_Ch7.pdf · Agile Project Management Jim...

Agile Project Management

Jim Highsmith

Chapter 7

The Speculate Phase

“Plans are guides, not straightjackets”

Good context…

“Agile teams plan, but they recognize that reality always intrudes.

Plans have to adapt because the customers’ understanding of their requirements changes, because estimates of variety or other reasons.

Plans are both conjectures about the future – our best guess at what will occur given the information we have – and guides to the future – determining what we want to occur and making it happen.

Development generates new information that in turn creates the need to replan.”

Speculating on Product and Project

The “product” of this phase is a release plan based on

capabilities or stories to be delivered rather than

activities.

Two critical components of an iterative planning and

development process:

Short iterative timeboxes and features

Short iterations act to accelerate projects

Short timeframes requires the team to figure out faster ways of

accomplishing all aspects of development… QA activities are

completed every iteration (not at the “end”)

Feature Driven Development (FDD)

First goal: “make the process visible, and understandable, to the customer team.”

… instead of making the technical work understanding to the engineering team.

Customers understand products, components of products, and features of those components.

Features are the interface between development engineers and product teams

Index cards:

Break features down into chunks that can be implemented.

On the front: requirements information for planning purposes

On the back: technical task information enabling the development team to estimate effort and manage its work

Agile project speculation helps the team:

• Determine how the product & its features will evolve in the current release

• Balance anticipation with adaptation as the project unfolds

• Focus on the highest-value features early in the project

• Think about the business goals, project objectives, & customer expectations

• Provide necessary cost and schedule information to management

• Establish priorities for tradeoff decisions

• Coordinate interrelated activities and features across teams

• Consider alternatives and adaptive actions

• Provide a baseline for analyzing events that occur during the project

Through their actions, performance measurements, and vision, agile leaders

constantly need to encourage teams to learn and adapt as projects evolve.

Product Backlog

Its objective: to expand the product vision, through

evolutionary requirements definition process, into a

product feature list… of backlog.

The backlog list is maintained by the product manager

and is the major input for release, wave* and iteration

planning.

* wave (or milestones) plans span several iterations

Feature details… evolve over the development phases

Envision phase

The team creates a preliminary feature or product breakdown

structure, identifying features

Speculate phase

The team expands the list, and for each feature creates one or

more “story” cards that contain basic descriptive and

estimating information.

Explore phase

In the specific iteration in which a story is planned for

implementation, the requirements are determined in detail, and

the story is built and tested

From the list of stories…

The Product team and engineering team need to discuss

prioritization and scheduling issues during the

assignment of stories to iterations within the release

plan.

Note. characteristic of agile projects is the volatility of

stories in the backlog.

Planning for each iteration… the stories to be included in that

iteration can change from the original release plan.

What is a feature, a Story

“A piece of a product that delivers some useful and

valuable functionality to a customer.”

Difference between a story and a feature

A story is a small piece that delivers useful functionality, but may not

deliver a complete function

Stories evolve over time… they don't represent a set of “fixed” req’ts

Example

Feature: As a credit analyst I need the ability to check a customer's credit

rating.

As a credit analyst, I need the ability to:

• Check the prior payment history with this customer

• Check this customer’s credit bureau status

• Calculate our internal credit rating based on history and credit

report.

Figure 7-2 The Focus of Stories

Release Planning

Allocate work to iterations in a release plan

Use stories to involve the product team in the process

Detailed Iteration Planning

Stories are broken down into technical tasks… to be used by the development team

Small stories… sufficient to implement only what is needed for the story

Not having demonstrable customer-understood stories causes project to get off track quickly…

… furthermore, by combining tasks from several stories during an iteration, most perceived inefficiencies can be eliminated

“Some stories will invariably take longer, or appear to take

longer, than one iteration to complete.

Usually when teams are pressed to decompose a “big” story into

bite-sized stories, they figure out a way.

Inability to break things down in this manner is usually an issue

of lack of experience rather than a un decomposable story.”

“Dark holes”

The danger of building technical features before customer

ones

The longer the technical team “stays dark” – building techie

stuff – the further off track the project can get before receiving

feedback from the customer team.

Story Cards

Agreements between customers and team members to discuss detail requirements during an iteration.

“Discussion is critical to understanding, which in turn is critical to estimating.”

Story Card Information (Figure 7-5)

• Story identifier and name

• Story description: sentence or two describing the feature in customer terms

• Story type (C=customer domain, T=technology domain)

• Estimated work effort… needed to deliver the story, including time for req’ts gathering, design, coding, testing & documentation

• Estimated value point (coming in Ch. 8)

• Req’ts uncertainty (erratic, fluctuating, routine, stable): an exploration factor

• Story dependencies: Dependencies that could influence implementation sequencing

• Acceptance tests: criteria the customer team will use to accept or reject the story

Stories… uncertainty and risk factors…

… influence scheduling and the team’s approach to

implementing.

High risk (erratic and fluctuating) stories: scheduled in

early iterations

… to get a handle on whether is can be implemented as

well as whether it will take more time and/or money

… there will be technology areas or features that run the

gamut from low to high risk.

… intent is to improve development effectiveness and

productivity.

Creating a Backlog

“A list of capabilities, features, and stories that the product team has identified.”

In a well-functioning agile team, collaboration among customers, product specialists, and developers supersedes documentation in importance and improves the entire req’ts understanding process.

Approaches to business/product analysis & story definition…(e.g. use cases)

Whatever… three things are essential:

1. Identifying roles or personas that exist in the customer’s environment

2. Identifying functions performed by these personas

3. Breaking that functionality down into implementable chunks – stories.

“… paving cow paths”

… means automating business processes as is, without

thinking too much about whether or not the business

processes are effective or efficient.

A “dangerous” assumption in many agile methods…

Customers have done their homework…

1. They understand tier business processes

2. They have done the necessary business process analysis

and rationalization

3. They understand how automation might change

processes themselves.

Agile teams… ignoring and becoming developer-centric

Miss the opportunity to increase delivery of extra customer

value.

Release Planning

“… the roadmap of how the team intends to achieve the

product vision within the project objectives and constraints

identified in the Project Data Sheet (PDS).”

Most traditional project management plans utilize a list of

tasks to construct work breakdown structures (WBSs) to

organize the work.

Work… concentrate first on deliverables, work- or task-driven

plans… which often degenerate into detailed, prescriptive plans.

The more quickly the link can be made between customers

and features they requested and get feedback… the more

likely the product development effort will be successful.

Release Planning (continued)

Its primary task: assigning stories to iterations, based on value

and risk.

Release planning should be a collaborative team effort – product

team, development team and executives.

The team needs executive input at the beginning of the Release

Planning… and towards the end.

Gold Plating… Standish Group presentation of two case studies…

Federally mandated state child welfare projects …

Florida: begun in 1990, delivery expected 1998, cost of $32

million with staff of 100

“last review”… cost estimated at $170 million, delivery 2005

Minnesota: begun in 1999, delivered in 2000, cost of $1.1

million with staff of 8

Two other studies …

Dupont: estimated that only 25% of the features implemented

were actually needed.

Other: 45% of the features were never used and only 20%

were used often or otherwise.

Simplicity – the art of maximizing the amount of work

not done – is essential (Agile Manifesto)

Agile… focus and balance

“… focusing on the project’s key vision and goals and

forcing hard tradeoff decisions that bring balance to the

product.

… short iterations in agile development, combined with

end-or-iteration customer review, make the entire team

– developers, customers, management – face reality.

Agile practices incorporate change into the development

process. while at the same time reducing project size by

constant and intense concentration on essentials.”

Iteration 0 … helps balance anticipation with adaptation.

Zero implies nothing useful implies that nothing useful

to the customer gets delivered initially.

What gets done in Iteration 0 (prior to launching into

iterative story development)?

Product being integrated with another app may require data

architecture work to define the interfaces

Electronic instrument work might require a preliminary

component architecture

Team using unfamiliar architecture may need training time

… some projects require more “initialization” work that

others.

Iterations 1 – N

Need to create a plan, assigning stories to iterations for the duration of the project…

completion dates, staffing, costs … other planning information

Activities in laying out this plan:

• Determine how identified risks will influence iteration planning

• Identify schedule target (the product manager’s “desired” schedule, without respect to achievability

• Develop a them for each iteration

• Assign story cards to each iteration, balancing value, risks, resources, and dependencies as needed

• Summarize the release plan in some combination of story card layout (Figures 7-6 though 7-8, page 148-9)

• Adjust the completed plan as necessary, using the tradeoff matrix as a guide.

Customer value and risk… drivers

The risk list should be reviewed.

Assessment should be made to assess the impact and how mitigation

might effect the release plan

High value stories might need to be deferred in favor of high risk

stories…

Marketing, management, or a customer might “select” the delivery

date… these expectations are “real”

In many cases a target date becomes a constraint on the project.

At the outset “there are many unknowns”… requiring development and

customer teams and executives to work together to resolve the unknowns…

For example, everyone should be looking at features to reduce in scope (or

cut)

The process of negotiating between target and planned dates works only when all

parties are working collaboratively to achieve a common goal. It does not work in a

situation in which parties are being arbitrary and capricious.

Each iteration should have a “theme”

Essential to ensuring that the team balances breadth and

depth of features.

Helps to focus the team in ways that a list of individual stories

may not.

e.g. “Demonstrate the basic instrument data acquisition capability” and

“Prove that our high-risk valve design is viable”

Techniques to ensure a reliable plan

For each iteration, add time for changes identified during the

previous iteration review… story card titled “Rework and

Contingency”

Set aside one or more iterations at the end of the project…

especially for projects with a high exploration factor

Release Planning is not prescriptive!

Prior to the start of the 1st iteration… and given the

development of the initial prioritized “Backlog” list and

the “expected” delivery date…

Iteration length is specified, expected work per iteration is

specified

… iteration “themes” are specified and the appropriate stories

associated with the each theme are assigned to iterations based

on “value” and “risk”.

The sum of the work associated with each story assigned to an

iteration should be less than or equal to the expected work per

iteration.

First Feasible Deployment

“The first iteration in which the product could

potentially be deployed.”

Customers would understand that the product has only

certain features, but they are willing to work with that

limited functionality.

NOTE. The result at the end of each iteration is “done-done,”

deployable pieces of product… they may or may not be

actually deployed.

Iteration results for Web-based systems might be deployed.

Estimating … is a guess!

The “subtleties:

• Estimating the unknown

• Estimating by stories rather than tasks

• Estimating progressively

• Estimating can be a huge time waster

• Estimating versus sizing

• Using “story points” versus staff hours

Story point (relative size) estimating is preferred… but

staff hours are also used

Team member estimates should be used for iteration plans

• Important for team development and cohesion… team

member should be responsible and accountable for

iteration plans!

• As the project progresses, team members should get

better at estimating for the next iteration…

“learning from doing… ”

Chapter 8

Final thoughts…

Three key activities needed before “story development”

1. Articulating a product vision

2. Defining the project’s objectives and constraints

3. Creating an iterative, story-based release plan

The “release plan” is constructed from the feature/story “Backlog”…

… that evolves during the Envision and subsequent Speculate phases.

“When you get the backlog and release plan done, the rest is relatively easy!”