Delivery of value is more important than getting estimates
2024-08-10
Previous article
Context
You’re on a team that is rewriting an existing system; you’ve spent time during Discovery to plan out the new UX, UI, and have estimated the core aspects of the needed development. There will be a new front end to for the people using it, along with new middleware and back-end services supporting it.
You’ve estimated it to be about eight months of work. You started a month late, and you’ve been asked to deliver the product a month early. So you’re down to about five months.
Since you’re replacing an existing application, feature parity and some new functionality is expected, and the time constraint is non-negotiable.
Classic waterfall. Since the current system was studied, you’ve estimated the rework, and given the time constraint, everyone is eagerly awaiting to see the app in production on the launch date.
However, something was learned in the first few sprints: the estimates are worthless. The assumptions have been identified as wrong, the development environment and the integration eco-system present friction, causing a lengthy PR process and causes rework and high lead-times.
Based on the team’s velocity, and the scant information in the few hundred stories that were mapped during Discovery, it’s evident that the team cannot meet the deadline.
Chicken and Egg between Engineering and Product
You inform your stakeholders, who are supportive, but ask you to re-estimate the delivery, so that they may reduce scope in order to meet the deadline. You’d rather ask them about MVP and then see how you can deliver it.
You indulge Product and start conducting re-estimation sessions with the team. Not very productive, because of those one-liner stories and unknown flow and implementation details. You spin your wheels while Product waits to hear from you.
You’re stuck.
The cone of uncertainty
The “Cone of Uncertainty” describes the reduction of uncertainty over time. Basically, uncertainty reduces as you get closer to deployment. You’re way on the left, where the cone is at its widest. Product is asking you to estimate when you’ll get to the very tip of the cone, way on the right. I don’t think much needs to be said that if we don’t find a different way to deliver, you’re in a stalemate, and as time goes on, it is being wasted on fruitless estimation instead of being put to use in delivery.
Thin slices to the rescue
The roadmap you’re following is “incremental” in nature. You wanted to prove parity feature by feature. So the roadmap takes your stakeholders on the journey as their customers experience it. Within the context of a feature, they move from one page to the next, and with UAT testing, they will validate that the implementation is correct.
Herein lies their need to get the estimates for the end date. Their expectation is to see the effort for each Epic because their product is the sum of those Epics. That makes sense from their point of view.
This is risky even though you’re in a “parity” development effort, where all the features are supposedly known in advance. The risk is that your product owners are flying blind in the sense that they are presented with outputs (tasks being completed) without the counterweight of outcomes (a pleasant and effective customer journey).
A more effective approach is “iterative” delivery. Each iteration will deliver working software that crosses multiple Epics, showing the end-to-end customer journey iteratively.
This is more effective than “incremental” because the slices will defined by Product, which implies that they are in an MVP state of mind. They’re basically tell you “I want to see this first, over that other thing”. It’s more effective for you as well, since you’ll be on the far right of the cone of uncertainty, since scope is much smaller in each iteration.
You’re now delivering to Value, not to Estimates
Your stakeholders will resist at first, since the conversation is focused on delivering value iteratively, and each iteration may deliver insufficient value to their customers. However, this delivery model relinquishes control to Product by allowing them to “cut” a feature-set they deem as production ready. In the “incremental” model, Product had no control till the end of the last increment. Using this approach, Product has control at the end of each “iteration”, which could be, if well executed, at the end of each sprint.
Conclusion
To me, this should be the de-facto method of delivering products, and books have been written about this since the introduction of Scrum and agile. Our Stakeholders sometimes veer off this course, influenced by design agencies that occasionally place the Whole Product and nothing but the Whole Product as their output.
Iterative delivery ensures Product due-diligence because it obliges us to question its outcomes at each iteration, allowing quick pivots and re-assessments, this time not of estimates, but rather of customer value.
Previous article
Filed under
Product Management
- A path to accelerating value realization
- A review of software development metrics
- Agile programme management brief
- An alternative to current product development metrics
- An alternative to the current product development governance model
- Express initiative kickoff formula
- Inceptions revisited
- Managing multiple stakeholders
- Pre-prod activity - Futurespective
- Value Stream Mapping
- When planning, it's not only about relative complexity
Project Management
- A path to accelerating value realization
- A review of software development metrics
- Agile programme management brief
- An alternative to current product development metrics
- An alternative to the current product development governance model
- Command & Control Management - The Party Killer
- Express initiative kickoff formula
- Inceptions revisited
- Managing multiple stakeholders
- Pre-prod activity - Futurespective
- Value Stream Mapping
- When planning, it's not only about relative complexity
Risk Assessment
Value
planning
Other Tags
API GW
AWS
- Programming ESP32 using MQTT with AWS and FreeRTOS
- Quick AWS IoT Setup and test
- Set up AWS API GW with a Typescript authorizer and logging
- Use AWS CodePipline to execute CloudFormation templates
- Use GitHub Actions to deploy your SPA hosted on Amazon S3
- Use an AWS CloudFormation script to create and host an SPA on S3 with SSL and apex/subdomain redirection using CloudFront
- Writing an Alexa skill using Ruby and AWS Lambda (Part 0)
ActiveRecord
Agile
- A review of software development metrics
- Agile programme management brief
- An alternative to current product development metrics
- An alternative to the current product development governance model
- Command & Control Management - The Party Killer
- Document Driven Development
- Inceptions revisited
- Managing multiple stakeholders
- Returns Driven Development
- The tip of the (good) iceberg
Alexa
Analysis
Ansible
BDD
BLE
C
CAB
CloudFormation
- Set up AWS API GW with a Typescript authorizer and logging
- Use AWS CodePipline to execute CloudFormation templates
- Use GitHub Actions to deploy your SPA hosted on Amazon S3
- Use an AWS CloudFormation script to create and host an SPA on S3 with SSL and apex/subdomain redirection using CloudFront
- Writing an Alexa skill using Ruby and AWS Lambda (Part 0)
CloudFront
CloudWatch
Cross-compile
Cucumber
DevOps
Devops
DotNet
Embedded
Fitbit
GNU
GitHub Actions
Governance
How-to
Inception
IoT
Javascript
Jest
Lambda
Mac OS X
- Bluetooth Low Energy (BLE) Implementing a peripheral on Mac OS X
- Cross-compiling for Raspberry Pi on a Mac and debugging using NetBeans
- Drobo will not mount in Finder
- Quickie - ssh dynamic port forwarding to avoid unsecured public networks
- Remote compilation, execution and debugging Raspberry Pi from a Mac using NetBeans
- Weekend warrior - MacRuby and rSpec, Mac OS X Lion, Xcode V4.3.2
MacRuby
Metrics
MySQL
NetBeans
Objective-C
PMO
Product Management
- A path to accelerating value realization
- A review of software development metrics
- Agile programme management brief
- An alternative to current product development metrics
- An alternative to the current product development governance model
- Express initiative kickoff formula
- Inceptions revisited
- Managing multiple stakeholders
- Plan for value delivery
- Pre-prod activity - Futurespective
- Value Stream Mapping
- When planning, it's not only about relative complexity
Programme management
Project Management
- A path to accelerating value realization
- A review of software development metrics
- Agile programme management brief
- An alternative to current product development metrics
- An alternative to the current product development governance model
- Command & Control Management - The Party Killer
- Express initiative kickoff formula
- Inceptions revisited
- Managing multiple stakeholders
- Plan for value delivery
- Pre-prod activity - Futurespective
- Value Stream Mapping
- When planning, it's not only about relative complexity
Quality Assurance
Rails
Raspberry Pi
Remote compilation
Remote debugging
Remote execution
Risk Assessment
Route 53
Ruby
- Alexa on Rails - how to develop and test Alexa skills using Rails
- Arduino programming using Ruby, Cucumber & rSpec
- How to reconnect to a database when its connection was lost
- Oh, the places you'll go...
- Quick AWS IoT Setup and test
- Weekend warrior - MacRuby and rSpec, Mac OS X Lion, Xcode V4.3.2
- Writing an Alexa skill using Ruby and AWS Lambda (Part 0)