This week, Dan Neumann is joined by George Dinwiddie, an Independent Software Consultant and Coach who works with organizations both large and small to develop software more effectively. He strives to help organizations, managers, and teams solve the problems they face by providing consulting, coaching, mentoring, and training at all levels.
Dan and George will be taking a deep dive into George’s newest book, Software Estimation Without Guessing: Effective Planning in an Imperfect World, which addresses both the technical and sociological aspects of estimation. In this episode, George takes listeners through several chapters of the book, key points and best practices, as well as myths and misconceptions, all to help your organization achieve its desired goals with less drama and more benefit!
Key Takeaways
What is software estimation?
A tool to estimate for the particular need you and your organization has
Estimation in comparison to past experience and by modeling the work mathematically (or a hybrid of both)
One of the big purposes of making estimates is for the business to build a look ahead and make decisions
What are not estimations?
Commitments
Negotiations
Plans
“Estimations are wrong; if they were right, they would be called measurements.”
How to estimate/estimation best practices:
It’s important to track progress with your estimates to create a feedback loop (burn up charts are an easy way to do this)
It’s okay to be wrong in the estimates
With sprints, you want to be more 50/50 with the estimates
Communication is critical
Having contingency plans in place is a good idea
Estimations are not the same as plans — estimate, and if it is critical, then put in some contingency buffers
Allow for some space for the unexpected
When you find out that your estimate is wrong then that means some assumption that you’ve based your estimation on is wrong (so there’s a lot of value in analyzing what assumption is untrue and to learn from it)
For simple estimations (like how much work to take on for the next two weeks) you don’t need a lot of precision or accuracy
Set near-term estimates
Be clear about how far along you are (“...otherwise, you’ll be fooling yourself”)
Have a good measure of what is done or not (you can use test automation for this)
A model can be very helpful but if it doesn’t really track reality then it’s going to lead you astray
The book’s purpose:
It strives to help people work with estimates (given a desire to have things come out well)
Provides a guide for comparison-based estimates
It’s not very recipe-driven; it more so provides things to think about and options to consider
A how-to on estimating for unknowns
Rather than walking people through a series of steps, George’s book aims to help people think about what they’re trying to accomplish and how what they’re doing is accomplishing that
Approaches to estimation:
Enlisting Expert Estimators
Using a model such as the COCOMO model (which is encoding how you compare it to other experiences)
Utilizing function points
Notes about the social side of estimation:
Having in-person communication skills are just as important as your programming skills
The better you can balance a concern for the needs of self, the needs of the other, and the needs of the context, the better things will be (even if the other person is not doing a good job of balancing them)
Mentioned in this Episode:
George Dinwiddie
Software Estimation Without Guessing: Effective Planning in an Imperfect World, by George Dinwiddie
Agile Estimating and Planning, by Mike Cohn
Planning PokerFibonacci Sequence
Agile2020 Conference
James Grenning
Software Estimation: Demystifying the Black Art (Developer Best Practices), by Steve McConnell
COCOMO Model
Burn Up Chart
Gerald Weinberg
Donald Rumsfeld — Unknown Unknowns
Virginia Satir’s Concept of Congruence
The Fifth Discipline: The Art & Practice of The Learning Organization, by Peter M. Senge
Want to Learn More or Get in Touch?
Visit the website and catch up with all the episodes on AgileThought.com!
Email your thoughts or suggestions to [email protected] or Tweet @AgileThought using #AgileThoughtPodcast!