Summary
This book is often considered to be *the* book on Agile. I have always had the opinion that this book is appealing to those that want to manage Agile development versus those that want to do Agile well. As I read, I am constantly amazed at how well written the book is. There are so many genuine insights in the beginning of the book. However as the book progresses, it does not provide insights, but goes into very short chapters on individual topics. Many of these topics have become books with more relevant information or additional insights, so as the book progressed, I found fewer and fewer insights. The estimating and scheduling techniques that are presented in the heart of the book are well beyond what I have seen most teams do, but are very well explained and defended. There are some thoughts and ideas that I see presented here that I don’t see in subsequent literature. Seems odd that things like a feature breakdown schedule and an end of iteration report are not found is later discussions. I like them and I see a lot of applicability to the government.
Top 3 Things I learned
- When initially estimating a velocity, do it as a range based on factors that come from the cone of uncertainty. Initially multiple estimate by 0.6 and 1.6, then 0.8 and 1.25 after one iteration, then 0.85 and 1.15 after 2 iterations, then finally 0.9 to 1.1
- Burndown Bar chart. This chart uses velocity as the size of the bar. You can infer quite a lot of detail, detail that is only possible if you use both a burnup and a burndown chart together.
- Feature breakdown chart instead of a work breakdown chart. Looks like a GANTT chart, but feature driven. The features always span the length of the iteration because the software is not available until then. Do not assign resources unless you are using multiple teams and then you just give it a team name.
- Okay, I’m cheating by noting a fourth item. Look at the self-assessment in the chapter before the case study.
Notes: Chapter 1: The Purpose of Planning
SUMMARY: An introduction to why we plan. Makes the argument that the purpose of planning is to arrive iteratively at an optimized answer to the ultimate new product development question of what should be developed
QUOTE: Planning is everything, plans are worthless
TERM: Cone of Uncertainty
Why Plan
- Reduce Risk: Provide insights
- Reduce Uncertainty: On time, on budget, w/initial requirements misses the reality that you probably got something wrong in the initial req.
- Support Better Decision Making: How know what to do if you don’t know cost and value?
- Establish Trust: Reliable estimates drive reliable delivery
- Convey Information: Work completed, Key assumptions, agree on measure progress
What makes a good plan? Sufficiently reliable to be the basis for decisions
What makes a plan Agile? Plans are documents, planning is an activity.
Agile Planning:
- Focus is on Planning, Off plan
- Encourages change (I would say “enables” or “supports”)
- Results in plans that are easily changed
- Is spread across the project
Notes: Chapter 2: Why Planning Fails
SUMMARY: Activity planning fails, feature planning focuses on value to the customer
QUOTE: No plan survives contact with the enemy
Why Planning Fails
- Planning is an activity not a feature: need to be feature focused not activity focused
- Activities do not finish early: work expands
- Lateness is passed down: everything early to start a dependent task early; 1 slip and everything later, late
- Activities are not independent: Increased UI time means all is more complex
- Multitasking causes delays through inefficiency
- Features are not developed by Priority: Assumption is all gets done, so order is not important
- Ignores uncertainty
Final Point: Estimates are not commitments. <– SO TRUE
Notes: Chapter 3: An Agile Approach
SUMMARY: Unlike other chapters this chapter does not provide new insights, it is more of “Just Do It”
QUOTE: A good plan violently executed now is better than a perfect plan executed next week.
Agile Approach to Planning:
- Work as one team, integrated from Product Owner through everyone else
- Work in short iteration: have value, usually 2-4 weeks
- Deliver something each iteration: potentially shippable
- Focus on business priorities
- Inspect and adapt
Introduces the “Conditions of Satisfaction” which is like a “Definition of Done”. Doesn’t go into much detail.
Notes: Chapter 4: Estimating Size with Story Points
SUMMARY: Introduces two terms and on concept. Very short chapter.
TERM: Story Point: Relative measure of the size of a user story
TERM: Velocity: Team’s rate of progress per iteration
CONCEPT: Story Points are an estimation of size, duration is derived.
Notes: Chapter 5: Estimating in Ideal Days
SUMMARY: Another very short chapter with a few concepts about ideal days.
CONCEPT: Ideal time (do nothing else, 4 quarters of football) vs Elapsed time (everything else included, include commercial time)
CONCEPT: One estimate, not many – don’t breakout by skill set if at all possible.
Notes: Chapter 6: Techniques for Estimating
SUMMARY: This chapter is all a lead-in to planning poker, the motivation for it, why it works, and how to do it.
QUOTE: Prediction is very difficult, especially about the future.
CONCEPTS:
- Accuracy never reaches 100%, rises quickly, then actually goes down as there are further inputs
- Estimates are shared, though they would be better by the person doing the tasks, but that doesn’t work for Agile
- Use a scale of numbers with gaps
- Deriving an estimate
- Seek an expert opinion
- analogy
- Disaggregation: split into smaller chunks
- Planning Poker
- Prep (stories, cards)
- Read (product owner or analyst)
- Vote
- Discuss/Re-vote
ANALOGY: If you are golfing and make an estimate of 3 to 8 shots per hole, you get a score of 54 to 144, but you will never shoot that good or that bad. Therefore a better estimate is one that says 80 to 110.
Notes: Chapter 7: Re-Estimating
SUMMARY: Lots of words to say only re-estimate when the size of a story changes
QUOTE: There is no sense in being precise when you don’t even know what you’re talking about.
Notes: Chapter 8: Choosing between Story Points and Ideal Days
SUMMARY: Discussion of pros and cons of Story Points and Ideal Days
CONCEPTS:
- Story Point advantages
- Promotes cross-functionality
- Do not decay, as you get better, size goes down
- Pure measure of size
- Typically faster to get an estimate
- Comparing ideal day size can be difficult because of differing abilities
- Ideal Days
- Easier to explain outside of the team
- Easier to estimate at first
THOUGHT: Start new teams on ideal days and quickly shift to story points
Notes: Chapter 9: Prioritizing Themes
SUMMARY: Establishes and discusses four factors to consider when prioritizing themes. In my take, more quesiotn are left unanswered then answered when combing the four factors.
4 Features
- Value: Difficult to calculate on a theme basis
- Cost: Can vary depending on when in the order it is done
- New Knowledge: Learning about product (Business), Learning about project (Technical)
- Risk: Best when combined with value
TECHNIQUE: Risk Value Matrix (2×2)
Notes: Chapter 10: Financial Prioritization
SUMMARY: A departure from earlier, easer to read topics, this one uses actual math. Introduces terems and concept to perform prioritization based on dollars. Lists terms, pros and cons.
4 Types of Revenue
- New: New customers attracted by feature
- Incremental: existing customers who will upgrade
- Retained: Keep existing cust. from leaving
- Operation Efficiency: Key with growth, replace older processes
TERM: Present Value: Value of money now
TERM: Discounting: Moving future amounts back to present value
TERM: Opportunity Cost: Rate at which discounting future money
TERM: Net Cash Flow: Cost-Revenue
CONCEPTS:
- Net Present Value:
- DEFINED: Present Value over time
- PROS: Easy to calculate
- CONS: Weak when revenue streams are different
- Internal Rate of Return
- DEFINED: How quickly a project will increase in value
- PROS:
- Compare two projects
- Don’t have to estimate a discount
- CONS:
- Does not give you an absolute money
- Does have preconditions
- Payback Period
- DEFINED: Amount of time required to earn back investment
- PROS:
- Simple calculation
- Measure financial risk
- CONS:
- Does not account for time value of money
- NOTE: If you apply Discount, then the con goes away
Notes: Chapter 11: Prioritizing Desirability
SUMMARY: Presents two different ways to prioritize based on desirability: Kano’s 3 factor method and Weiger’s relative weighting.
CONCEPT: Kano’s method
- 3 factors
- Threshold: must-have -> never achieves neutral customer satisfaction
- Performance/Linear: linear increase in satisfaction the more we have the feature
- Exciters and Delighters
- NOTE: See chart for the cross-reference for Functional and Dysfunctional rating results
CONCEPT: Weiger’s Relative Weighting
- Relative rating for having and not having the feature
- Combine for Total Value
- Get Value %
- Estimate the number of story points
- Determine Cost
- Calculate priority
Notes: Chapter 12: Splitting User Stories
SUMMARY: Some predefined rules on splitting stories
Why Split?
- Too large to fit into an iteration
- Fits, but not enough room in the iteration for everything
How to split:
- Split across data boundaries, logical groupings — logical entities
- Split across functional
- Split across CRUD
- Remove cross-cutting features and make 2 versions of the story
- Functional, then non-functional (make it run, then make it run fast)
- Split if there are different priorities
- Don’t split into tasks
- Don’t add related unless they have the same priority.
Notes: Chapter 13: Release Planning Essentials
SUMMARY: There is not much in this chapter. It defines a process for release planning, expands on the parts and gives an example. Doesn’t account for many things I have seen written in other books like the Inception Deck or perhaps that is considered “Project Planning”.
TERM: Release Planning: Process of creating a plan that covers a period longer than an iteration.
CONCEPTS:
- Conditions of Satisfaction
- Estimate the user stories
- Then in any order
- Select an iteration length
- Estimate velocity
- Prioritize user stories
- Select stories and a release date
Notes: Chapter 14: Iteration Planning
SUMMARY: Much more detail than release planning. Key to iteration planning is tasks.
CONCEPT: Strong preference to cards and other non-tool techniques
CONCEPT: Release vs. Iteration Planning
- Horizon: 3-6 month / 1-4 Weeks
- Focus: User Stories / Tasks
- Measured In: Story Points or Ideal Days / Ideal Hours
CONCEPT: Flow of velocity-driven approach
- Do in any order
- Adjust Priorities
- Determine Velocities
- Set iteration goal
- Develop all user stories
- Develop all tasks
- Estimate all task
CONCEPT: Commitment-driven approach
- Adjust Priorities
- Set iteration goal
- Iterate over User Stories
- Select User Story
- Develop Tasks
- Estimate Tasks
- Ask yourself if you can commit
- If no, remove User Story and try again
- If yes, done
CONCEPT: Task size 1 day
TERM: Iteration Goal: Unifying statement on what we will accomplish during the iteration
TERM: SPIKE: Task to gain knowledge or answer a question
Notes: Chapter 15: Selecting an Iteration Length
SUMMARY: A good chapter about what is a simple topic. Lists factors and explains how. Gives 2 examples.
RECOMMENDATION: 2-4 weeks with 2 usually being the best. One amps the pressure up too much and four is not enough pressure.
CONCEPT: Factors affecting an iteration length.
- Overall length of the release
- Want 4-5 minimum iterations
- 1 month ~ 1 week iterations
- Amount of uncertainty. If uncertainty large, need to decrease iteration length.
- Ease of getting feedback
- How long priorities remain unchanged
- Willingness to go without outside feedback
- Overhead of iteration
- How soon urgency is felt
Notes: Chapter 16: Estimating Velocity
SUMMARY: Introduces three wasys to estimate velocity and gives an example application of those ways
CONCEPT: Three ways to estimate:
- Historical Values
- Factors can change
- Only work if you have them
- Use a range
- Run an iteration
- Observed velocity
- Forecast
- Rarely your goto option
CONCEPT: Ranges based on iterations
- 1: 0.6 – 1.6
- 2: 0.8 – 1.25
- 3: 0.85 – 1.15
- 4+: 0.9 – 1.1
CONCEPT: Pomodoro technique
- 25 min work, 5 min break
- Repeat for up to 5 hours
- Only super efficient Toyota could reach 80% efficiency
Notes: Chapter 17: Buffering Plans for Uncertainty
SUMMARY: Discusses 2 types of buffers, schedule and feature
CONCEPT: Feature Buffer: must have (not greater than 75%) and optional (not less than 25%)
CONCEPT:
- M ust have (75%)
- o
- S hould have
- C ould have
- o
- W ont have
TERM: DSDM: Dynamic System Development Model
CONCEPT: Schedule buffer: add a block of time to the end
2 ways to develop a buffer
- Square root of sum of squares. 2d = sqrt [ (wi – ai)2 + …] where wi is the worst (90%) and ai is the average (50%)
- 50% – Sum average values (50%), divide by 2
Notes: Chapter 18: Planning the Multiple-Team Project
SUMMARY: Some cursory thoughts on what you need to do if you have a large team. Not much detail or thought is given on a complex and challenging topic.
CONCEPTS:
- Establish a common baseline
- Add detail to user stories soon
- Perform lookahead planning
- Incorporate feeding buffers
Notes: Chapter 19: Monitoring the Release Plan
SUMMARY: No great insights or revelations. Basically explains a Release Burndown chart and some alternatives.
3 ways:
- Release Burndown
- Release Burndown Bar (show velocity in the bar, you get the benefits of both a burndown and burnup)
- Parking lot chart (do a progress bar for completion of themes)
Notes: Chapter 20: Monitoring the Iteration Plan
SUMMARY: A very short chapter that basically walks through a version of a storyboard
Notes: Chapter 21: Communicating about Plans
SUMMARY: Title and content did not add up much. Introduces 2 concepts that I liked, feature breakdown chart and an end of iteration report.
CONCEPT: Feature Breakdown Schedule
- Similar to WBS but Feature Based
- All stories go to the end of the iteration because that is when they are available.
- No resource name except with multiple teams, then use team names
CONCEPT: End of iteration report Report
- Context
- Start Date
- End Date
- # of Working Days
- Personnel Table
- Name | # Days Planned | # Days Actual
- Sum
- Metrics
- Build results table
- Date | Results
- Iteration Burndown
- Velocity
- Build results table
- Contents table
- Story | Result | Points Planned | Points Earned
- Iteration Review table
- Action Item | Responsible Part
Notes: Chapter 22: Why Agile Planning Works
SUMMARY: A wrap up chapter. I found the guidelines to be a great self-assessment tool
- Team Planning
- List # of people on the team
- List # of people planning
- Planning at multiple levels
- Presence of a Release Plan
- Presence of an Iteration Plan
- Separate size and duration
- Show unit of size
- Show unit of duration
- Account for uncertainty
- Show how uncertainty is handled
- Replanning
- List replanning dates
- Show versions of release planning
- Show progress
- Where are the progress indicators
- Impact of Learning
- Show what was added or changed based on knowledge gained
- Right Size
- List user stories
- ID what was changed from the beginning
- Prioritize Features
- Show method
- Show evidence it has been applied
- Impact of Reality
- List observed facts
- Show impact
- Leave some slack
- Show buffer and how it is calculated
- Use of Lookahead planning
- When using multiple teams, show use of Lookahead
Notes: Chapter 23: A Case Study: Bomb Shelter Studios
SUMMARY: A case study. I only glanced through this section.