Академический Документы
Профессиональный Документы
Культура Документы
2
“The way this book was written helped me not only to understand the main ideas behind #NoEstimates
but to internalize the concept with the real examples behind the story.” – Hermes Ojeda Ruiz,
LogicalBricks
“Finally! The most meaningful text book about project management and governance! This piece of
project fiction will become the real “don’t panic” guide to project management!” – Tapio Järvenpää, Beer
Executive Officer, Hops United OÜ
"Anyone interested in deliver their projects on time should read this book. It´ll make you forget the idea
that you can predict the future with a crystal ball. Instead of that you´ll learn to use your data and be
more effective. Take of red pill!" – Emiliano Sutil, Project Manager al Xeridia S.L
“You’re doing it wrong. Estimates that is, and #NoEstimates tells you why. Most importantly, however,
the book tells you what you should be doing instead. The compelling mix of theory with story means
you’ll quickly learn the lessons and start benefiting from the book. Read, think and apply #NoEstimates
today." – Dr. Bruce Shcarlau, Senior Teaching Fellow at University of Aberdeen
“I was sold on this book after reading the table of contents of the first chapter.” – Nick Mein,
Engineering Manager, Trimble Navigation.
“Do the most important thing is not a startup thing only! In my 15 years of experience with software
development I've seen a lot of patterns of projects failing. I've experienced myself every example
described in #NoEstimates. I've worked for a startup, where it is obvious what's important without
estimating. With the help of the #NoEstimates book I can do the same within a multinational corporate
organization.” – Jeroen Knoops, Software Developer
“Trying to be more predictable by working with estimates is a seductively simple idea. After decades of
widespread use of this idea, actual results are now very clear. Estimation has instead caused reduced
predictability, lowered quality and unhappy customers. Read this book to start exploring some more
successful strategies!” – Henrik Berglund, Agile Organizational Coach, Cedur AB
"A must read for all of us that has discovered that it's in the doing of the work that we discover the work
that we must do." – Anders Lundsgård, Senior Engineer and Solution Architect, Sweden
3
FOREWORD
"Transformation comes more from pursuing profound questions than seeking practical
answers."
Peter Block
I’m pretty good at getting comfortable in my ways. Perhaps we all are. Still, I'm certain this is
not a good thing so I work hard to keep an open mind about making things better. I suspect that
our biggest problems are hidden within the things we trust the most.
A few years back I noticed there are a number of practices and techniques used in the
management of software development done "by default". That is, we do them without question.
Perhaps we assume that this must be the "right way" since everyone does it this way. Maybe
it's how we were trained for our job, or that we've been doing it so long we don't even remember
why we started. It could be it is a practice someone has documented in a textbook, or we
learned through some training sessions at a conference on "how to manage software
development." The problem for me isn't whether the practice is good or not, but rather that
many often accept it as the only way and don't question its applicability.
Simply following a practice or methodology by default indicates to me that there are likely some
hidden problems we might not be willing to uncover. Are we being willfully ignorant, or are we
unaware that we are missing something here? When the feeling of control and certainty is more
important to us than knowing the truth, and the fear of change holds us back from seeking
better, it's time to do some questioning. It's time to face our fears.
"Humans are allergic to change. They love to say, 'We've always done it this way.' I try to fight
that." - Adm. Grace Hopper
Although I love that quote from Admiral Hopper, I'm not so sure that humans are allergic to
change. I actually think we are pretty good at it, and in some things we welcome change once
we get the idea that change is needed.
Estimates are one of those things where "we've always done it this way", and there is little
scrutiny of the use of estimates. When estimates don't seem to be serving us as we wish they
would, the natural or common approach is to simply try to get better at estimates. As business
people (and as humans), we need to have confidence in the methods we use - "getting better" is
a less than meaningful approach unless we have sufficient faith in the thing we need to get
better at. And even still, we must keep a close watch on whether things are getting better
overall, and not just the estimates themselves.
So naturally, I want to dig a bit deeper. Estimates themselves are not bad, and in some
situations they can be very helpful. However, estimates are often part of an unquestioned
process of managing software development, so I want to learn more.
4
When I become aware of a situation like we have with estimation I want to question, explore,
and validate (or invalidate) the practice or method. Is it suitable for the purpose to which it is
put? To accomplish this, I start by asking questions of myself. I want to find the "profound
questions" that will lead to a better understanding.
I have a number of questions I've posed to myself about estimates. Here are a few examples of
the sort I find useful to ponder as a starting point:
• "If I found estimates are not informing the decisions they are meant to inform, what would I
change about the way I use them?"
• "If I found estimates are not useful for a purpose, in what way could that be the fault of the
estimates themselves? In what way is that an issue with the purpose?"
• "In what way would getting better at estimates help if the estimates themselves are of
questionable use?"
• "What ways can we meaningfully validate decisions we've made based on estimates?"
• "If we believe that getting better at estimates is our only choice, what are the possible
pitfalls?"
• "If the decisions that we currently think are important are not as important as we think they
are, what should we do?"
Early October, 2012: I had just met Neil Killick in Twitter, and read a blog post of his named
"Should We Estimate Software Projects… At All?" After a few Tweets back and forth, Neil
introduced me to Vasco Duarte. I believe that the first blog post from Vasco that I read on this
topic was "A better way to predict project release date!" What a great starting place. Alone, I
had my suspicions about estimates, but with others such as Neil and Vasco also questioning the
practices of estimation and use of estimates I was encouraged that some real progress can be
made.
So now there were three: Neil, Vasco, and myself. Little did I know how much I would learn from
my on-going conversations with these two. Even more wonderful was that new folks were
joining the conversation daily. One notable luminary is Ron Jeffries who has now written
extensively on the topic, and over time many others such as Allen Holub and Kent Beck have
shared their ideas on the topic. But I'm jumping ahead.
I noticed an interesting thing very early on: While we were all questioning the "de facto" use of
estimates in managing software development, we had different ideas about what the core
problems might be, and what to do about them. I took this as a good sign. I seek a broad
spectrum of ideas, especially at the beginning. We were all noticing that something was amiss.
If the use of estimates and estimation are suspect, I'm more interested in learning all about that
than what to do about it. The "how" reveals itself when we understand the "why" about the
"what." This is where the power of pursuing profound questions comes into play for me. The
"how" of estimates is a moot point if they are not serving us well. It's of little value to solve a
problem we don't yet understand;; we are just a likely to be addressing a symptom rather than
the underlying problem. Let's get that settled first, and then explore the alternatives.
5
Getting better at estimates (which the entire industry has been trying to do for a long time)
doesn't help if the underlying motivation for using them is not valid. Rather than jump to the
possible solution of getting better at estimates, I want to do whatever it takes to understand the
underlying reasoning and purpose of the estimates. That is an area worth exploring.
Along the way it became apparent to me that some of the decisions we depend on for managing
software development efforts are probably not the right decisions to be making. Why do we feel
that knowing the cost of something "up front" is useful? Is that really important, or simply just
something we've convinced ourselves that we can't do without? Why is it that we think we have
"limited funds" for software development? If we are good at generating income from the work
we do, are these limits even meaningful at all?
What if there are alternative models that lessen or eliminate the need for knowing the cost?
Consider that it might be better to become great at creating software, and delivering it into
actual, meaningful use early and often, and earning a return almost immediately. Would
knowing the cost be as important if we can start re-cooping whatever costs there are almost
immediately? Maybe by following this model the desire and interest in estimates will simply
fades away. Maybe not. Let's find out.
Estimates are used in many ways, and there are seemingly countless methods of estimation for
devising those estimates. What if we could forecast some aspects of our project without
estimates at all? This is something I find interesting, and it's a possible game-changer.
Vasco has been exploring one such alternative that is of particular interest to me, and he covers
it nicely in this book. His ideas about forecasting based on the data collected in the doing of a
project eliminate the need for certain estimates for that project, and the results are easily
verified. If we find that forecasts are helpful, what if we could find a way to forecast without
estimates that works at least as well as estimating does? What if it is actually better? And
easier? How would that change our dependence on estimates? How would that change our
regard of estimates? Should we at least experiment with ideas like this? What if we could try
this and prove it for ourselves while still working in the same way we always have? Powerful
stuff.
I'm glad you are reading this book, and exploring along with Vasco. While this is still a very new
effort, many people are gathering around these ideas and questions, and exploring for
themselves the method that Vasco shares in the #NoEstimatesBook. Business people,
Managers, "Customers", Developers, Analysts, and just about anyone will find this book useful.
We all see a need for better, and insist that regardless how well entrenched the "way things are"
might be, it's time for a change. And we welcome it.
Woody Zuill
#NoEstimates Pioneer, and Software Industry veteran
www.MobProgramming.org, http://zuill.us/WoodyZuill/
6
If you have been around Agile and Lean for some time you might be familiar with the Japanese-
born concept of “no inventories”. Between the sixties and the eighties, Japanese companies –
Toyota being one of the most prominent examples – embraced a new paradigm of production
founded on the premise of maximizing value for the customer and seeking continuous
improvement. In order to maximize value, all activities and investment that were not directly
adding value to de customer were labeled as “waste”. In this sense, moving materials from one
place to another is waste;; reworking, overworking or overproduction are waste;; fixing defects is,
of course, waste;; and unfinished materials waiting in a queue to be used (inventories) are
waste.
The golden rule to determine if something in your organization falls in the category of waste is:
“do we want to have more of this? Like double or triple it?”
Companies seldom want to ask this golden question from themselves. If you ask it too much,
you’ll find that Managers are waste - you don’t want more of them. Meetings are waste. Code is
waste.
But, if mostly everything around us is labeled as waste, shall we get rid of it? The answer, of
course, is no. The premise is that you want to have as little waste as possible, and not more.
Once you reach the state of minimum waste, you should try to go even further and reduce it a
little bit more – continuous improvement or Kaizen.
Of course, you don’t want to double or triple your inventories. Inventories are a hidden bank
account, money lying around doing nothing but deteriorate. Even worse, it requires investment
in the form of space, maintenance, rotating stocks, security… You even lose inventory pieces
due to aging, bad storage or warehouse mismanagement. You have to maintain stock records
and reconcile inventory periodically – and if you’ve ever done something similar, you know how
soul crushing this process can be.
So what’s the only reason we keep inventories? Organizational dysfunction, or so believed the
Japanese companies. People need inventories so they have access to materials between
resupplies. These resupplies were separated by several hours, sometimes days. Each resupply
needed to be huge so workers would have materials until the next resupply. Huge resupply
needed space, storage, management, rotation, movement… Waste everywhere.
The Japanese breakthrough was to imagine a company where resupplies were happening
constantly, Just In Time. By imagining how work would look like in a world with no waste, they
could forge new production paradigms like one-piece-flow, single-minute-exchange-of-die, zero-
defects or total-quality.
Of course, you could be picky and observe that each worker on a Lean factory might have a
small inventory of pieces around, maybe a handful, maybe a dozen. You could then claim
“Look! Look! That’s inventory! It is not actually true that they work with #NoInventories!” The
7
point is that these Lean factories have been able to reduce the resupply period from days to
minutes, and their stock, inventory or storage needs from stadium-sized warehouses to
drawers.
So, #NoEstimates…
It is obvious to me that estimates do not provide more value to the customer than inventories.
People who find value on estimates are just addicted to a practice (estimation) to get something
they find valuable: plans, comfort, uncertainty reduction, financial projections, sales proposals…
But, again, these are not customer value. Applying the golden question, you don’t want to triple
plans, estimates, reports and proposals. Hence, you want as few as possible – not less, but not
more. So they immediately fall under the label of waste.
Of course, you will always find someone that defends that inventories are in fact customer
value, the argument being that inventories protect the customer against accidents and company
dysfunctions. No serious Lean discussion can be forged around this argument nowadays.
Interestingly enough, when it comes to reducing the need and dependency on estimations,
people can be quite belligerent – you just have to wander around the twitter conversations
around #NoEstimates to get a taste of it.
I imagine that, in the early days of Lean, when Womack and Jones were just starting to spread
the news about this crazy Japanese production system, several people would be as baffled as
some other are nowadays with the #NoEstimates question. I can clearly imagine western
managers protesting, “just in time production? Resupplies every few minutes? Are you CRAZY?
Why are you trying to debunk the proven practice of accumulating inventories? What are you,
smarter than all of us, than all managers that have been promoting stocks and inventories for
the last four-plus millennia?”
Ah, human beings… ‘gotta love ‘em.
I have faith and patience. When some people in the Agile community started talking about zero
defects or continuous delivery, not few voices rose against such concepts stigmatizing them as
‘delusional’ and ‘misleading’. Even the ideas behind the manifesto, which are enthusiastically
defended nowadays, were difficult to promote mostly everywhere just ten years ago.
I feel there’s a natural learning curve towards #NoEstimates. It is very frequent nowadays to
hear from teams that moved from WBS-like estimation - estimating each and every task, then
adding up all estimates - to story estimates, point-based estimates, t-shirt sizes and, counting
stories and, finally, dropped the estimation-based conversations to focus on throughput,
cadence and flow.
I did my first public talk on #NoEstimates at Agile Lean Europe Berlin 2011. The audience was
crowded by several well-known European Agilists, and I could metaphorically hear the sound of
their neurons crashing into each other while I presented the idea of reducing the estimation
effort and focus on stabilizing the team throughput and using past information to drive forecasts.
People rapidly organized an Open Space around the topic, and the usual question was “yeah,
but… You need estimates, right?” Not a question, in fact, more of a desperate cry in the middle
of a withdrawal syndrome. My answer was direct – no, you don’t need estimates. You are using
8
estimates to produce some other stuff, so the question is, can we produce that other stuff in a
better way that using estimates?
Unfortunately, several people still ask for better ways to estimate. It is a flawed question. For
me, it is like asking for better ways to win the lottery, or better ways to guess what team is going
to win a sports match. But I have faith in the capacity of human beings to change, and patience
to watch that change happen.
A year ago I decided I wanted to push this change a little further and I asked my good friend
Vasco Duarte if he was up to the job of writing a first book on #NoEstimates. Vasco had
enthusiastically defended this approach based on his own experience. A few months after my
talk at ALE2011, he presented a similar topic at OOP2012, and have been very active on the
#NoEstimates debate since the very start.
We started this work together, but I had to quit after some months – my job engagements and
workload were keeping me behind the intended pace, and I was basically endangering the
project. To be honest, we also had “creative differences”, as artists say, and decided to “pursue
our own careers and personal projects”. No problem. We are still good friends, and I kept
illustrating Vasco’s work - sort of – and providing my feedback and insights. We still collaborate
on some other projects, and I’m sure we’ll keep finding opportunities to promote innovation on
the Agile world.
My final word to you, reader of this book, would be to remember the fact that mind is like a
parachute, it only works when it is properly open. Too many people have lost the track of the
#NoEstimates premise to dig into inane details. For instance, some people would say “oh, but
you are forecasting results based on past information – isn’t that an estimate?” Or maybe “oh,
but you are breaking big stories into small, one-or-two day sized stories, but in order to do that,
won’t you need to estimate the story size?” Remember that #NoEstimates is not about no
estimation ever, but about the minimum amount of estimates that will do, and then look carefully
at ways to reduce that need even more. In that sense, I love J. B. Rainserger concept of
#MehEstimates, like in “Oh, estimates… Meh!... Yeah, I guess we’re doing some, we are just
not very concerned nor serious about them.”
So, here’s to life, the #NoEstimates book. Enjoy.
Ángel Medinilla
Agile Coach, #NoEstimates practitioner, Book illustrator
http://www.proyectalis.com/
9
CHAPTER 1
C
armen came into the office bright and early in the morning. She was surprised when her boss
unexpectedly called her into his office. Any other day he would greet her; invite her into the
break room for coffee; have a friendly one-on-one chat with her, and talk about life… But not
this time.
This time her boss looked nervous, and he closed the door before he even said good morning to her.
Carmen appreciates her boss, because she has learned a lot from him. But right now she is nervous. What
could her boss possibly want that required them to meet behind closed doors? What could be so secretive
that it couldn’t be overheard by anyone else in the office?
“Carmen, we have a big project coming in. This is potentially the largest software project our company
has ever won.”
“A big project you say?” Carmen’s interest grew. “It’s about time they consider me for a big project,”
she thought.
“Yes! This project alone could finally make us profitable! And I want you on it; I trust you and appreciate
your work greatly. I know you can pull it off…”
10
Carmen was surprised. She had heard of a new, secret client project that they called Big Fish, but she did
not expect to be assigned to this project. After all, she still had the Telemark project going on.
Carmen shifted in her chair and tried to think of something to say. Something didn’t feel right.
“Well, that’s a surprise. I still have the Telemark project, which will be landing soon. I thought you
wanted me to finish that before moving on to other projects…”
“I did, but his came up suddenly.” Carmen’s boss interrupted, “I only just heard about it yesterday. Our
CEO was able to find a way for us to bid on this project. It will be huge!”
“Errr, Okay. What should I know about this project before I take this assignment?” Carmen was unsure
about this. Her boss seemed almost too eager for her to say yes to the project.
“Well, basically nothing. It’s just another software project. The only difference is that this project is
bigger than the others you’ve worked on. But this time it’s with a very more important client.”
“Well…” She felt uncomfortable. Her boss wasn’t being upfront with her.
“Is it twice as big as the Telemark project?” She asked, but her boss didn’t reply. “Five times bigger?”
11
“Actually, it is a public sector project, so I guess you could say that it’s several orders of magnitude
bigger than your Telemark project….” He finally admitted.
“Oh…” Carmen was speechless. This could potentially be the largest software project in the country, and
she was being lined up to manage that project.
“And we’ll need to present a bid by the end of next week!” Her boss looked excited. “So get your team on
it. We need to close this deal now Carmen; it could change our company’s future! We need to submit our
proposal as soon as possible!”
Do Estimates Work?
If you were Carmen, you’d probably feel nervous too! I know I would. Estimating a software
project is never an easy task, and the situation gets even worse when you have to do it without
first understanding the context or the requirements well enough. Add that to the pressure to
create a winning bid, and you have an explosive mix! And not in a good way.
When I talk about #NoEstimates I get the most serious questions from people like Carmen.
Questions such as, “How can I win a bid if I don’t estimate?”, or “My customers will not award
me the contract unless I give them an estimate!”
Fair questions, but before we tackle them, let’s tackle the real question here;; a key question for
both you and Carmen, which is Do estimates work?
Some researchers have already proposed what a “good” estimate should be. In 19861, they
proposed that a good estimation approach would provide estimates “within 25% of the actual
result, 75% of the time”.
What this means is that, for all the projects you estimate, you should complete those projects
within 25% of the original estimate for 75% of the time. Another way to put this is that you don’t
have to always be within 25% of your estimate, but that you should be for 75% of all of your
projects. Let’s examine the track record in the IT industry to see if we’re consistently able to
estimate correctly.
First we look at the Chaos report, a study that is run every few years to assess the “success” of
software projects worldwide:
1
Steve McConnell, Software Estimation: Demystifying the Black Art
12
Figure 1 – Project success rate over the many CHAOS report surveys from 1994 to 2004. Graph adapted from
Steve McConnell's book, Software Estimation: Demystifying the black art
This picture looks grim. If Carmen works for an “average” company her chances of success are
slim, about 25% if you believe in the accuracy of the Chaos report. Not good.
You can improve your chance of success by using certain software development practices like
Agile, but even then the success rate is a poor 42%2.
But let’s look at this from another angle. Even if you agree that being within 25% of the original
estimate is a good result, what about the outliers? The tasks and projects that exceed the
original estimates by so much that they run the chance of jeopardizing the entire project or
portfolio? You may think that your projects don’t have such tasks.
…Bad news…
2
CHAOS report for 2011-2012 shows 42% successful agile projects.
13
Figure 2 - Project estimates vs. Actuals (in days), track record for one organization. Graph adapted from
Steve McConnell's book: Software Estimation, Demystifying the Black Art.
Look at the project on the top-left of this chart. This project was estimated to last 7 days, but
ended up taking more than 250 days to complete. This is a difference of 1 week to nearly 9
months! While this is only one outlier, but the potential impact on the company is tremendous. A
project like this can drive a company bankrupt.
There are several examples in our industry that look like this. In a famous UK contract walk out,
Accenture avoided up to £1bn in penalties3 in a contract with the National Health Service (NHS)
in the UK. Some will argue that this is an extreme case, an outlier. But do you want to bet your
company on one project if the possible result is obliteration? I don’t think so!
Beyond the problem with outliers, let’s look at examples of sustained performance. Here’s the
project delay (in % from original estimate) for 17 different projects from one single company
spanning a period of 4 years.
3
Accenture avoids £1bn penalty for walking out of a contract with the NHS
http://www.theregister.co.uk/2006/09/29/accenture_nhs_penalty/
14
Figure 3 Percentage delay to estimates at approval, and estimates at requirements completed phase for one
organization. Adapted from data collected by me in one company between 2001 and 2003 for 17 different
projects.
This company had an average (yes, average) delay of 62% for their projects. This means, for
every project that should have lasted 3 months, it lasted nearly 5 months! As I look at the graph
above I can’t help but ask: “Can I really trust estimates as a reliable tool to manage our
companies?”
Would you bet your entire company on a work-method (estimates) that delivers 60% to 80% of
the projects late or over budget? This is the question that Carmen had to ask herself in the
scenario above. Can she, in all honesty, risk her company’s future on a method that has that
large a failure rate?
“Thank you sir, that means a lot to me.” Carmen said, while thinking: “and I may need to call on that
trust. Hopefully you are not bluffing.”
Estimates don’t really work. Specifically, not in the way the software industry practices
estimation. And not in the way that many, including in the Agile community, propose estimates
15
should be done. There are three clear, intuitive, and proven reasons as to why that is so.
Hofstadter’s Law
Hofstadter's Law: It always takes longer than you expect, even when you take into account
Hofstadter's Law.
— Douglas Hofstadter4
Douglas Hofstadter observed that, no matter how much work went into developing computer
programs to play chess against Grand Masters, the winning program always seemed to be 10
years away.
Even though Hofstadter was referring to chess programs, this observation was picked up by
several other writers, such as Brooks in The Mythical Man-Month and Beck in Extreme
Programming Explained, as a way to highlight just how difficult it is to estimate programming, or
other software development related tasks.
However, Hofstadter’s Law is only one of several explanations for the continued failure to
correctly estimate software development work.
Parkinson’s Law
Work expands so as to fill the time available for its completion.
— Parkinson’s Law
Parkinson observed that bureaucracies seemed to expand and therefore create more work for
themselves. He was commenting on the British colonial bureaucracy, but the rule was picked up
later by Alessandro Natta in Italy and Mikhail Gorbachev in the Soviet Union who famously
stated that “Parkinson’s Law works everywhere5”.
Indeed, it works everywhere;; even in software development environments where the modern
formulation of Parkinson’s Law is “work always expands so as to fill all the time available for its
completion”.
Another way to put it is: “If you wait until the last minute to complete a task, it only takes a
minute”... Or does it?
Parkinson’s Law is a description of the phenomenon that work will consistently expand to use all
the time allocated to it. In other words, projects that get delayed, rarely catch-up. This, in turn
means that if you have one task that is delayed, you should consider all subsequent and
4
Gödel, Escher, Bach: An Eternal Golden Braid. 20th anniversary ed., 1999, p. 152. ISBN 0-465-02656-
7.
5
O'Sullivan, John (June 2008). "Margaret Thatcher: A Legacy of Freedom". Imprimis (Hillsdale College)
37 (6): 6.
16
dependent tasks to take at least the time they were allocated, meaning that they will end after
the originally scheduled time. Therefore, having one task late can potentially derail the whole
project. How about that for a shot in the dark?
Accidental Complication
Another reason why estimation is so hard goes by the name of accidental complication. J.B.
Rainsberger introduced this concept at Oredev 20136.
The gist of the argument is this: every feature or functionality added to an existing project has
two cost elements (what you’ll want to estimate):
• Essential complication or g(e): How hard a problem is on its own. For example,
implementing tax handling is hard, because the tax code is complex in itself. That is what
J.B. Rainsberger calls essential complication or g(e).
• Accidental complication or h(a): The complication that creeps into to the work because –
as J.B. Rainsberger puts it – “we suck at our jobs”. Or more diplomatically, the complication
that comes from our organizational structures (how long does it take to get the approval for a
new test environment?) and from how programs are written (no one is perfect, therefore
some things need to be changed to accommodate the new functionality).
The cost of a feature is a function of both essential complication and accidental complication:
In software, estimates of cost are often done by analogy. If features A and B are similar, then if
feature A took 3 weeks, feature B will take 3 weeks. But then J.B. Rainsberger asks: “When was
the last time that you worked on a perfect code base, where the cost of the accidental
complication (how messy the code base was) was either zero or the same multiple of g(e) as
when you implemented feature A?”
He concludes that often the cost of accidental complication – dealing with organizational and
technical issues specific to that code, and that organization – dominates (yes, dominates!) the
cost of a feature. So, if h(a) is much larger than g(e) the cost of a feature cannot be determined
by relative estimation. In turn, this means that the most common estimation approach, Story
Point estimation, cannot work reliably. What this means for you is: You can only determine the
real cost of a feature by recognizing and measuring accidental complication, or – like I suggest
in this book – by using the #NoEstimates approach.
When we ask someone to estimate how long it will take to develop a feature or project
they think about how long it would take hands-on, with perfect hand-off between teams
and other staff with the specialist skillsets. This never happens. Work sits in queues;;
6
Watch the full video here (duration ~8 min): http://vimeo.com/79106557.
7
Troy Magennis writes about software projects in his blog: http://focusedobjective.com/news/
17
people work on more than one project at a time;; people take vacations. We estimate the
work, when we need to estimate how long that work takes to go through a complex
system given all of its foibles.
Systems thinkers like Goldratt, Reinertsen, and Deming understood this well. Work
spends considerable more time idle and blocked by system constraints than progressing
towards completion. Given that for inventive knowledge work the hands-on time through
a system is considered exceptional at 30%, even if we were PERFECT at estimating that
30% of the time, we would be off by a factor of 70% without compensating. Even the
commonly used doubling what you are told method would still be 20% low.
The delays involved in a complex system are unknowable in advance. Just like travelling
to work along the same highway each day, you can't know there is going to be an
accident blocking all lanes three weeks from now, you can't know that the test
environment will “catch fire” three months from now blocking all testing work. It's these
unknowable system delays that make forecasting software projects exceptionally
difficult.
The only way to estimate and forecasting a system is by estimating the system impacts
and the easiest way to do that is by observing prior history of work flowing through that
system. #NoEstimates is a strategy that considers the system on its own terms, allowing
some ability to predict completion times in advance.
What Troy refers to is a critical insight: work flows through a system. Without understanding how
that system works through metrics like cycle-time, lead-time, etc., the best we can do is
estimate a “perfect” engineering day. You and I both know how many of those “perfect”
engineering days we’ve enjoyed in our lives. Not many.
“Yes?”
“We have a lot riding on this project. It is important that we give them the right estimate for this
project!” Carmen did not fully understand the meaning of this statement.
“What does right estimate mean? Why would it be important to have the right estimate instead of
whatever else he thinks I may give? Does he want to setup me up?” Carmen’s thoughts quickly spiraled
in her mind, but she decided to keep them quiet for now, and answered: “of course!”
18
I would not like to be in Carmen’s shoes. What should she do? The average person would first
find out what the right estimate for the project was, and then deliver that. And at first they would
be hailed as heroes. But, what if the right estimate at the time of the project bid is actually the
wrong estimate in the end?
Deming8 was quoted as saying that “if you give a manager a target he will do anything to meet
that target, even if he has to destroy the company in the process”. This is why targets are so
important, but at the same time so dangerous. Carmen will probably go to her team, do the best
job she can, knowing full well that the goal is not to give the customer a realistic expectation of
how much time and money is needed to complete the project, but rather that she is responsible
for winning a contract – no matter what it takes.
Wanting to meet the target is a very strong pattern in organizations. So much so that, at the end
of every quarter we see a frenzy of meetings and busy people trying to meet that quarterly
target, be it sales or operations. Estimates are no different and help make projects prisoners of
the targets they set. And this is one reason why estimates can transform from useless but
harmless, to influential and harmful targets. Look at what happened at Enron in 20019 where the
8
W. Edwards Deming, American writer, author and coach that helped propel Japan to the most
productive nation status with his work after the Second World War.
9
For details on the Enron scandal, visit http://en.wikipedia.org/wiki/Enron_scandal
19
“compensation and performance management system [that] was designed to retain and reward
its most valuable employees, [...] contributed to a dysfunctional corporate culture that became
obsessed with short-term earnings to maximize bonuses.”
But there are more reasons and tempting shortcuts that make estimates actively harmful in
certain situations. Below are 4 situations that are possible because of the use of estimates in
software development:
• Internal politics become a problem when deadlines are set because top management wants
something done by a certain date, with fixed scope and fixed resources. Despite advises to
the contrary, in these cases the HIPPO (Highest Paid Person’s Opinion) overrules any
potentially “good” estimate created by the team.
• Estimate bargaining occurs when a team has created the estimate and defined a possible
release date, and then they suffer pressure from stakeholders to change their estimates.
Symptoms of this dysfunction include calls for “more efficiency”, or “more commitment”,
generally followed by phrases such as “we are all in this together”.
• Blame shifting happens when people outside the project team estimate the work (e.g.
experts), and then the project team members are blamed for not meeting those estimates.
• Late changes are a form of Estimate bargaining, whereby changes are added to the project,
but the schedule is not allowed to change for whatever reason.
These are only some of the possible dysfunctions associated with estimates. This list is an
illustration of how estimates can be used and abused for purposes other than actually
understanding the project and the work that needs to be completed.
Software projects present challenges that are unique to the software development domain.
Unfortunately, many in the software industry still fail to recognize this. I often hear that “a good
software project must, like a house, start on strong foundations of good architecture and good
requirements”. My usual answer is: “sure, if you consider that you can start by building a tent,
then evolve it into a hut, then increment it into a trailer, and later on deliver a castle, then yes,
you could say that building software is the same as building a house.”
Clearly, software is far more flexible and susceptible to evolution than a house. And that leads
to creating a Complex10 environment where simple A causes B causality links are not always
possible to determine. Software does not follow simple causality links. Rather, it follows complex
causality links. A complex link is, for example, when a small change (like a single line) can
10
For the remainder of the book we will use the term ”complex” to define an environment where the
relationship between cause and effect can only be perceived in retrospect, but not in advance. This
definition comes from the Cynefin model (https://en.wikipedia.org/wiki/Cynefin) developed and
popularized by Dave Snowden.
20
cause a catastrophic failure. Take Apple’s famous “goto fail” debacle11, where one simple line of
code completely destroyed all the hard work to keep their product safe.
No matter how strong the foundations of Apple’s products are, this single line addition to the
code was enough to completely destroy their foundations and security credentials. How about
that for a house project?
Apple’s example above illustrates one additional property of software systems: non-linear
causality, i.e. when a small change can have very large impact.
When it comes to estimates, and estimation in general you have to be aware that no matter how
thorough you are at estimating the work you must complete, it is unlikely you will uncover all the
small problems with disproportionally large impacts. And there’s a very good reason for that: we
wrongly perceive these examples of extreme non-linear causality to be rare12. We perceived to
be so rare we usually call them outliers. The problem is: in software, an outlier may completely
destroy all the effort that went into creating credible, solid estimates.
Does this mean that we cannot estimate? No. But it does mean that our estimates are built on
quicksand, no matter how strong we think the foundations are.
Don’t believe me? Check out this collection of quotes that emphasize how unstable the ground
underneath estimates is.
Berard’s Law13:
Walking on water and developing software against a written specification is easy if both are
frozen.
Humphrey’s Law:
The user of the software won’t know what she wants until she sees the software.
Ziv’s Law:
Wegner’s Lemma:
An interactive system can never be fully specified nor can it ever be fully tested
Langdon’s Lemma:
11
For more details on the Apple Goto Fail details, visit: http://www.digitopoly.org/2014/02/26/apples-goto-
fail-is-pretty-interesting-and-worth-reading-about/ Read also Uncle Bob’s take on the “sensitivity problem”
that software development suffers from: http://butunclebob.com/ArticleS.UncleBob.TheSensitivityProblem
12
In Black Swan, Taleb describes how often we ignore extreme conditions because we don’t consider the
nature of systems we analyze. He describes 2 types of systems: ”mediocristan” where linear causality
rules;; and ”extremistan” where non-linear causality is prevalent. He then explains how we tend to classify
the systems we study in ”mediocristan” because we don’t consider the potential for non-linear effects
which should drive us to classify those systems as ”extremistan” systems.
13
From: http://en.wikiquote.org/wiki/Edward_V._Berard
21
The 80 000 lines of code won’t fit into a 20-page contract.
Do you have some more quotes to share? Send them over, I would like to collect them. Email
me at vasco.duarte@oikosofy.com
Quotes about late changes in projects
Thank you Andres Lundsgård for the following quotes.
“A late change in requirements is a competitive advantage.” Mary Poppendieck
“The only thing certain in life is change.” Anonymous
And then there were changes. You have been there before. You work hard to try and plan a
project to the best of your knowledge. The team starts to get the hang of the project and is able
to deliver some software, only to see the changes start flowing in. First they flow in at a trickle,
one by one. But later on, as the testing progresses, changes come in like an avalanche.
22
Figure 4 Number of cumulative open defects and the daily rate for closed and submitted defects during a
project. Includes indication of development and testing phases. This is an illustration based on data
collected during the lifecycle of a project where I worked as project manager.
Hopefully you have some margin (aka buffer) in your project. Right? Sure, but how much of a
margin is margin enough? According to the definition of a good estimate cited earlier in this
chapter, you should count on at least a 25% margin - assuming the estimation was “good” to
begin with.
Are you safe if you add a 25% margin to your project? The answer is no. And if you believe it
helps, just re-read the Hofstadter’s Law again.
In software development, changes have (sometimes very large) side effects. As you discover
problems you find that the consequences of those problems go beyond what some call “bugs”,
you discover blind spots: complete sets of functionality that require rewriting;; or new
functionality that was missing. As a friend once described to me: “building software is like when
you try to unclog the pipes in your bathroom and end up having to build three more houses just
to get the toilet working again”.
Can you predict all the significant changes you will get, and the impact of those changes? If you
answer yes please send me your CV. But you will probably answer “no”, just like many people
do when asked the same question. The bottom line is that estimation is a very poor method to
predict the future, and change requests only amplify that problem.
23
The idea of the death-march project15 can be summarized like this: you estimate that you need
five days to cross a desert, so you pick five water containers, one for each marching day, and
you start walking. But, at the end of day five, you are out of water and you are still in the middle
of the desert.
What can you do? You cannot go back, as you know that it will mean five days walking through
the desert and you don’t have any water for that. All you can do is keep walking until either you
find more water;; you reach your destination;; or you die.
14
Article on the incidence of burn out and stress related illnesses in IT http://www.net-
security.org/secworld.php?id=14666
15
The idea of death-march projects was made popular by Edward Yourdon in his popular book Death
March: The Complete Software Developer's Guide to Surviving 'Mission Impossible' Projects
http://www.amazon.com/dp/0130146595/
24
In a similar way, some projects follow an “all or nothing” strategy. This strategy borrowed from
poker means that a team either delivers everything (“all”) or the project has no value (“nothing”).
In this context, the estimation process becomes a battleground between the teams and the
customers for that project. The teams want to survive at the end, and the customers want the
certainty they will get everything they want – and when they want it.
At the end of the estimation process the project will start, and the people trapped in that project
can easily fall into a death-march mentality. They battle everyday to get the project on track, but
a combination of estimation problems with constant change requests transform that project into
a constant struggle.
You work every day to the best of your ability and deliver concrete work. But instead of feeling
confident and enjoying the progress, you feel like Sisyphus16: pushing a boulder up a hill that
will invariably slide down, again and again. Making you - and the team - feel that there is no
hope. A death-march project is caused by the all or nothing mentality and a utopian faith in
estimation.
• These questions don’t assume an all or nothing mentality because, for example, you can
remove work from what is left.
• These questions don’t assume that it is possible to predict the future. Instead to answer
them, you can use data about past progress and constantly update your answer to the
questions.
• To answer these questions, you can use available data that the project team has already
collected (aka actuals) in the form of “rate of progress”, instead of having to guess at future
events without considering the current rate of progress.
In this book we will cover how Carmen will answer the question “when will X be done?” using
something else than estimates in Story Points or hours. We will also cover the main challenges
that come from the traditional approach to project estimation, and how to avoid, or reduce the
impact of those challenges. But before exploring how a #NoEstimates practitioner would predict
an end date for a project or how much work can be done by any given date, let’s review some of
what the software industry today considers “best practice” methods for software estimation. This
review will be essential for us to clarify the stark contrast between Estimates and #NoEstimates.
16
The myth of Sisyphus: http://en.wikipedia.org/wiki/Sisyphus
25
CHAPTER 2
“T
he right estimation for this project.” The boss’ words were still on Carmen’s mind as she
walked down the hallway to her desk. This was not Carmen’s first project, but until now she
had managed to give fair estimates on her projects because they were small and somehow
similar. Take this system we already installed here, then install it there. Create a customized copy of that
other system for a new client.
But this was a different kind of beast. New technologies, new client, new domain, new product. Until now,
Carmen had just looked at how long things took in the past, then added some contingency buffer that
could be accepted by the client. So far, so good. Of course, she also knew that keeping estimates ‘good’
during the project involved a strong management of the project. She was known to be very kind and
empathic with clients, but 110% uncompromising when it came to scope creep and project changes.
“Carmen delivers.” That was the usual comment of managers when they talked about her, and she liked
it.
Now, her reputation had put her in a tight spot. For the Big Fish project there was no useful historic
information she could rely on, and still she was asked to give ‘the right estimate.’
Anyway, what was the ‘right’ estimate, or the ‘wrong’ estimate? Was this a game of guessing?
Carmen sat silently for some minutes trying to assimilate it all. One thing she knew: once she would cast
a number, an estimate, it wouldn’t matter if it was ‘right’ or ‘wrong’. That number would instantly
become known as ‘the plan’ and for the following months she would be measured against it. But on the
other hand, if that number was ‘too large’ the company might lose the contract and she would be held
accountable.
Carmen opened a drawer and pulled her old project management books in search of something she hoped
would help her find the ‘right estimate’. If she failed to produce the right estimate, at least she wanted to
have the opportunity to say “hey, I did it by the book! Literally!”
It might seem like an obvious question. Everyone involved in some kind of project-oriented
environment will have much experience using, producing or asking for estimates.
Because of that experience, most people tend to form paradigms, models and pre-conceived
ideas about estimates. In order to fully understand the #NoEstimates principles, let’s contrast
them with the inherent meaning of the term estimates. What are estimates and what are they
not?
The Merriam-Webster Dictionary provides a good starting point, defining ‘Estimate’ (transitive
verb) as ‘to give or form a general idea about the value, size or cost of something’. From this,
we can deduce that estimates are ideas. Sometimes those ideas are vague, and other times
they are very precise or accurate, but they are ideas nonetheless.
Hence, estimates are guesses, not facts.
26
Every single time you provide an estimate, you are basically saying “I don’t know”. If you were
100% sure of what something is going to take in terms of time, resources or effort, then you
wouldn’t be estimating - you would be providing concrete facts. This is not the case with
estimates. When you estimate, you rely on task description, past experience and other available
information to form a general idea and provide what feels likely to be a reasonable number.
This number usually takes the form of a precise quantity, like in ten days or five thousand
dollars. As soon as the human mind understands this number, it will likely tend to stick to it and
give it the category of a fact, in an interesting form of grasping and clinging. As an interesting
piece of trivia, Buddhists believe that grasping, wanting and clinging are the source of suffering
– but that is a topic for a whole other book.
Every estimate has an undetermined amount of uncertainty included. When you estimate ten
days you would better be saying “roughly ten days on average;; it could be eight days if we’re
lucky, and it shouldn’t be more than thirteen days unless all hell breaks loose.”
Hence, every estimate is also a probability cloud17.
17
Probability cloud is used figuratively in this context to help the reader visualize an estimate as a fuzzy
construct, just like the position of an electron around the nucleus of an atom. We know the region, but not
the absolute position, and the position is constantly changing in time.
27
Figure 5 - Probability distribution for meeting a specific estimate. Note how the cumulative probability (area
of the curve) of being late is much higer than the cumulative property of being earlier.
Another important fact to understand about estimates is that, once you place an estimate on
something and there’s someone interested in that something – for example: your client – the
clock usually starts ticking and will not stop. It’s Monday, you are asked for an estimate, you say
“four days”, and your client automatically starts to expect something delivered by Thursday.
But estimates are not commitments, nor are they a promise.
Estimates will need to be carefully placed in a plan for them to make any sense at all. An
estimate of three days depends on when we are be able to spend three days on the task. It also
depends on many other facts like, for instance, if we will be able to focus on the task full time or
we will need to split our attention between several projects. For now, we just need to make the
difference between an estimate: “It will take three days”;; and a commitment: “It will be done on
Thursday.”
Imagine that I provide an estimate of five days. Then, I show up early at work every day with my
best smile, I do the best I can, I work harder and smarter than ever, I even stay a little bit later
every day… And, after five days, the task is not done. Would you say that is my fault? Of
course, it might be my fault that I provided a guess and I did not make clear to you that it was
not a commitment or a given fact.
Hence, many people tend to think “oh, what we need are better estimates;; if we have good
enough estimates, then all deadlines will be met”. Given that estimates are probability clouds,
the statement above is like playing lottery and saying “oh, what we need is to choose the right
number”, or investing in the stock market and saying “what we need is to invest in the right
stocks.”
Estimates in some very controlled and determined domains might come from a carefully
developed mathematical model, and in this case all people involved will agree to these
estimates because they agree on the model. In some other domains, people will observe the
system, notice that there is a small variance or deviation from an average behavior and then
28
use that behavior to forecast18 future outcomes – provided that there are no unknown changes
to that behavior in the future.
But for complex environments, where estimates come mostly from personal experience and
knowledge, these estimates will be different for every person. Experts might estimate some
work as easy and fast, while novices might estimate the same work as difficult and long lasting.
Some team members may see risks and estimate the impact on the schedule, while others may
ignore those risks.
Hence, in most environments estimates are personal.
Because estimates are ideas and they are personal, there are several psychological aspects
that affect them. For instance, if you are bound by your estimate and you will be judged, even
fired because of the outcome, you will tend to be more conservative. On the other hand, if
winning a project or making a sale depends on your estimate, you might be tempted to make a
more aggressive estimate.
If you add uncertainty, missing information, unknown factors that will affect the project, personal
and psychological aspects, what you have left is a very inaccurate number that will sometimes
result in an overestimation19 and, most of the time, in an underestimation.
The usual difference between the estimated duration of a task and the actual duration of that
task varies greatly depending on many factors. Some authors draw a cone of uncertainty20 with
60% variability at the beginning of the project, meaning that anything could happen between 0.4
times and 1.6 times the original estimate. In some cases, however, the difference between
estimate and actual can be closer to 400%. This means that sometimes, the cost, time or size of
the actual product ends up being four times bigger than the original estimate.
Given the wide variation of between estimated and actual values, it is impossible not to cringe
when some companies ask their people for estimates that are 10% accurate or 25% accurate.
The only way to produce such accurate estimates, we have discovered, is to actually build the
thing, then report the actual cost, size and duration as our 100% sure estimate.
Another possible strategy to create the perfect estimate is to create a huge buffer for
uncertainty. For example: estimating one month for something that shouldn’t take more than a
week. Note, however that this approach will destroy your competitiveness: your direct
competitors might be offering one or two weeks as estimates for the same work.
And you shouldn’t forget Parkinson’s Law: once the one month estimate is approved, people will
tend to use the whole month to add scope and functionality to the project – therefore increasing
the risk of being late after all!
18
Editor’s note: Please notice the difference used here between forecast and estimate. This
difference is further discussed later in the book.
19
Overconfidence as a very common bias leading to underestimation of task duration:
https://en.wikipedia.org/wiki/Overconfidence_effect Thanks to Pier Lorenzo Parachinni for the reference.
20
Cone of Uncertainty by Barry Boehm, as described by Laurent Bossavit in Leprechauns of
Software Development: How folklore turns into facts and what to do about it, LeanPub, 2013.
Note that Cone of Uncertainty idea has been discredited in the software industry by the work of
Todd Little and Laurent Bossavit.
29
as possible. You want the bare minimum, and then you should try to figure out ways to operate
with even less.
You don’t want to spend double, three times or even five times more effort in estimates. You
want to make as few estimates as possible.
And, if possible at all, eliminate them.
Hence, estimates are waste in the Lean mindset.
This is the main premise behind #NoEstimates: estimates do not directly add value to your
process, so we want to find ways to reduce the estimation process or even stop it where
possible.
#NoEstimates does not mean that there are no estimates at all, just like in Lean environments
‘zero inventories’ does not mean that there is no inventory at all. It is very usual in Lean
factories to find small inventories of unfinished goods or pieces on every production cell, but
compared to the old production paradigm these inventories have dropped close to zero.
The same is true for #NoEstimates – do as few estimates as possible, ideally none. In an
attempt to make this this concept even more clear, J.B. Rainsberger has suggested the hastag
#MehEstimates as a possible alternative to #NoEstimates.
However, the goal is clear: reduce estimation work to the minimum necessary, and then reduce
it a bit more. Reduce it until you find it painful to work without those estimates, then adapt and
reduce the use of estimates even more.
For ideas on how to do this and be successful just keep reading.
• The properties of an electrical system, which are determined by the properties of its
components, each of these properties with its own tolerances or variability.
• The robustness of a physical structure, which is determined by the strength of its materials,
which again have certain tolerance or variability.
31
• A simpler example, let’s say you want to predict how many lemons will your crew collect this
morning from your lemon tree plantation, which depends on the man-power of your crew and
the amount of lemons each tree produces.
In the examples above, and under normal conditions, you can inspect existing data and find
maximum values, minimum values, average, deviation and variability. You can then use that
data to predict what is going to happen in the future with some accuracy. On the other hand,
tomorrow may change the conditions substantially, it might rain, or some people might stay at
home ill, and you should then react and update your forecast. This inspection of the existing
data, together with building a model to predict future performance is what we call forecasting.
As a counter example, if you used your own data on how fast you collect pumpkins as a basis to
predict how many lemons a group of five people would pick, that would be estimating. You
would have to make many assumptions: the walking distances are different;; picking lemons
from a tree is different from finding and collecting one pumpkin at a time, etc. The reason for this
is that you don’t have available data on the same task and you don’t understand the possible
performance when five different people are given this new task, you assume that it will be
relatively similar to picking lemons.
However, estimation is possible and relatively easy in some domains. Let´s say that my friend
and illustrator for this book, Ángel Medinilla is an average motorcycle-racing aficionado (editor’s
note: which he is!), and he can race around the Jerez fast track in 2:15 (editor’s note: ahem!),
which is pretty fast for most street bikers. When you compare that to the usual Spanish
Motorbike Championship times that range from 1:50 to 1:42, it means that the Spanish
Champion is roughly 25% faster than Angel. And then you have the world record for the track,
which is Jorge Lorenzo’s 1:39 (only 10% better than the average championship race lap). In this
domain we observe that there is not much difference between ‘average’ race lap and ‘world’s
best’ (at least when it comes to percentages). You could forecast the time Ángel would take to
complete two hundred laps with a relatively small margin, not more than 20 or 30%. In this
domain estimation would be relatively simple and accurate.
In software projects, however, the situation is different. Even if you don’t believe that the best
developers are 20 to 50 times more productive than average, just consider the following story:
Jon arrives at the office, energized after a good night’s sleep. He is focused, and is ready to get
into the groove of delivering high-quality software. A few minutes later Karl, a star programmer,
with many years experience arrives as well. However, he just spent the crappiest night of his
life. His daughter was sick all night and he had to take care of her. He basically slept a few
minutes during the whole night and is feeling like he was steam rolled. Which of these people
will complete the tasks they had estimated with less variation to the original estimates?
Whatever your answer was: can you be sure of your answer?
In software development there are many factors affecting performance on the job, and those
factors are not predictable nor do they exhibit ‘predictable’ variation. Karl’s daughter had not
been sick for the last 5 years, now she is. Jon just lost a dear friend to cancer, and he is trying
to come back to his full potential with the help of friends and doctors. Life is not predictable, and
life is the key ingredient in software projects: our intellectual performance is the key-determining
factor of our productivity and many factors affect us.
Finally, estimation is affected by the expert knowledge fallacy. Experts are asked to estimate the
average time a task will take and some understanding of the possible variation (in some cases).
But experts can’t factor in the performance of other processes. A programming expert (e.g. an
architect) cannot predict the time it takes to allocate testing staff to a particular task. Experts are
good at predicting certain aspects of work, but you need to consider the whole flow of work
before you can have reliable data to help forecast (data from several iterations for example).
32
When you base estimates solely on expert estimation you fail to account for many aspects that
affect directly the performance of the project. When you use data from the project to update
your forecast, you are factoring in all aspects of the current project, and will be able to detect
when the project performance changes (more on that later).
• Time: when will the full scope of the project be completed given the investment and people
assigned, or how much time is needed in order to finish the project given those constraints.
• Cost: How many people, investment and resources are assigned to the project, or how many
people, investment and resources are needed in order to complete the full scope in the
projected time.
• Scope: the work that must be completed in order to consider the project finished.
These three variables are linked together: once you define scope, there will be a non-linear
equation that will give you different possibilities on time and cost - the more cost, the less time,
but with certain ‘crash points’ where spending more won’t cut time down, and using a longer
schedule won’t reduce costs.
33
These three variables define the so-called Iron Triangle. In the center of the triangle lays a big
question mark that symbolizes uncertainty. Once you understand these three variables as a
single equation, you will understand the iron law of the triangle, which is that you can fix one or
two of those variables, but you can’t fix all three of them. As a corollary, when you fix two of
those variables, the third one will absorb all the uncertainty on the project, and expand as
necessary.
34
Imagine that you want to print the complete Wikipedia. You fix scope by downloading the
Wikipedia content to a massive storage device. Then you decide to print it in the next 50 days.
At this point you have fixed scope and time, so you can start calculating how many pages,
printers and people you need to successfully print the whole of Wikipedia in 50 days. Let’s say
you calculate 9.6 million pages, 20 pages per minute with one printer, you’ll print eight hours a
day, with infinite resources of paper, toner and people, and a simple calculation will give you an
amount of just 20 printers to get the job done.
Of course, this sounds like a very reasonable, and simple calculation. What could go wrong?
But again, this is your estimate. You defined an Iron Triangle of 9.6 million pages;; 50 days;; 20
printers. In the center of the triangle, uncertainty will find a way to get into your project...
Let’s say you start printing on day one, and on day five you decide to look at the numbers… And
they show you that you are behind schedule! You call a meeting with your people and they tell
you that, yes, paper and toner are infinite, but they need to stop a printer for two minutes in
order to change paper, which happens after every 400 pages (20 minutes), and that every day
they have to change the toner, and that takes another ten minutes. So, on average, every day
there are 58 minutes where you are not printing. And, multiplied for 20 printers, that means 1
160 minutes, or 23 200 pages lost every day!
In the next weeks, several other unknown factors will affect your project - printers will stop
working, unplanned vacations and holidays, power outages, urgent tasks that will need the
attention of your people, the list goes on.
What you did when planning the printing of Wikipedia was estimation - you tried to predict what
was going to happen, taking into account some nominal values and trying to imagine how the
35
project progress would look like. On the other hand, once you started managing actual progress
data you were forecasting.
At this point in the Wikipedia printing project, you have committed scope, time and people and
resources with your client. What can you do? You cannot add more printers, as your contract
does not allow you to. You cannot add more time, as you would miss the deadline. And you
cannot cut scope down and print the Wikipedia only from A to U, you need the whole A to Z.
The common answer in the software industry would be to drop quality: print in lower definition or
make printers print two 50% size pages on every paper;; or make your people stay longer every
day to meet their planned printing quota.
The latter is a terrible idea both morally and rationally. It is reprehensible from a moral point of
view as you are asking your people to give more than they are paid for, as they were not
responsible for your failure to properly estimate this project. From a rational point of view it will
make your people angry, frustrated, demotivated and will probably increase your turnover as
people leave. In knowledge work environments – like software development – motivation is
crucial to productivity, performance, creativity and innovation. By asking people to reduce their
standards or stay over time, you destroy their motivation because of a commitment made based
on an estimate!
As this is a simple, repeatable project, the experience you gained the first time will help you
reduce uncertainty in the future. The next time you are asked to print Wikipedia very few things
will change when compared to the previous time you tried to complete that project: the content
of the document will change, but you will have the same printers, same people, same time
schedule, etc. Armed with a deeper understanding of the project: you will plan for paper change,
toner change and maybe check the ‘Mean Time Between Failure’ (MTBF)21 statistics of your
printers so you can plan for malfunctions. You can even create a risk management plan that
involves some spare parts and a limited inventory of spare printers.
Still, even the second time around, there will be some uncertainty that involves all the Unknown
Unknowns, all the things that could go wrong and you could not know about. And when the
domain of the project goes beyond a simple, repetitive, algorithmic tasks, and involves even
rudimentary knowledge skills, the task of providing an accurate estimate proves to be really
challenging, if at all possible.
The Start of a Project Is the Worst Time to Estimate Its
Duration or Cost
“How can I estimate the cost of the project or the time it will take? I don’t even have a team yet!”
“Carmen, I think you understand how critical this project is for our company. Our CEO gave his
personal commitment that this project would be done before the next election. Carmen, we can’t fail our
company or our CEO!”
“I understand sir, but I don’t even have a team yet. You can surely understand that these are not ideal
conditions to make an estimate for a project that is this critical.”
21
Mean Time Between Failure, Wikipedia:
http://en.wikipedia.org/wiki/Mean_time_between_failures
36
“Carmen, I chose you for this project from all of our project managers. I know you can pull this off. I’ve
seen how well you tackle crisis situations. This is just another one. I expect your bid ready by the end of
this week. Now I have to take a call with the board of directors.”
Carmen turned to leave, but her boss had one more thing to say.
“Oh and Carmen, don’t forget. This is our chance; one strike and we are out. Don’t let us down!”
“Tell me something I don’t know!” She thought.
At the start of a project is when we know the least about the project. Yet, in many cases it is
when we make the most important decisions. We decide on timelines, functionality, technology,
architecture, and other critical variables for the project.
Many questions went through Carmen’s mind:
• Can one developer estimate a project that other developers will work on?
• How many people do I have to assign to this project? Will other projects be starved of
people?
• I need to balance price (part of the bid) with assigned people, resources and time. How do I
do that? – In estimating we have two variables, cost and time, that are interdependent, but
how? How do we quantify that dependency? Is a larger team more productive than a smaller
team?
• What if the team changes during the project? – Other projects will be started during this
project. What if some of the people in this project’s team get assigned to another project?
How will that affect the project?
the estimated time can be orders of magnitude larger. In some cases the estimation errors can
be the 300% or 400% range, i.e. projects that take 3 to 4 times more than estimated.
Most projects, at the advice of planning textbooks, build into the schedules and plans an
uncertainty absorbing device, also known as a buffer. The idea is: we can’t know everything, so
let’s add some buffer.
A buffer adds some security margin to your project’s estimate. It can take many forms, although
all of them are closely related by the Iron Triangle rule:
• Time Buffers: once we estimate a deadline, we add some more time to deal with project
uncertainty (which also means more cost, as people will be assigned to the project for a
longer period of time).
• Scope Buffers: instead of planning for N features, we plan for N + X%, where X% is the
‘scope creep’ expected, i.e. changes, new features, unexpected requests, feature size
deviations, etc. Planning for more features means of course that you will need more time and
money.
• Cost, investment and people assignment Buffers: if you think you need a group of people
or an amount of money Y to get the project done by some given deadline, you will plan for
assigning Y+Z% money or people so you have a better chance to meet the deadline.
Equally important to buffer definition is to decide how to manage that specific buffer. The buffer
should not be just some extra time added to each task. Instead of that, every small deviation on
the original plan should immediately be logged against the buffer, so we have constant metrics
on project completion / progress rate and buffer consumption rate. Eli Goldratt described this
approach in his Critical Chain Project Management22.
Goldratt noticed that when every task estimate has some specific mini-buffer (padding),
Parkinson’s Law would kick in and all tasks would expand to consume the available buffer.
Tasks that take shorter than estimated will take advantage of the buffer and extend a little bit, or
people will see that the next task is not supposed to start until next week and will take care of
other pending tasks (HR policies, old projects, etc.) until it is time to start on the new task. Even
worse: tasks that take longer than expected will consume their buffer and a little bit more. This
phenomenon will affect the whole project. That’s the reason Eli Goldratt proposed using a single
buffer for the whole project, instead of individual buffers for every estimate.
22
See Critical Chain by Goldratt, more information at:
http://www.goldratt.co.uk/resources/critical_chain/
38
Buffers are dangerous as they give implicit permission to be late, as stated in Parkinson’s Law.
Eli Goldratt noticed this, and suggested hiding the buffer from the project team. In fact, he even
proposed to cut all estimates by half in an attempt to fight the negative effects of Parkinson’s
Law, and then use the other half as a project buffer. Success is unlikely if your project
management strategy consists of hiding information, scheming, conspiring and deceiving. And
by the way, the project team will soon find out your strategy and will balance things out by
doubling their estimates.
The sad truth is that buffers don’t solve all estimation errors. Buffers can help you balance the
expected schedule impact of bugs, rework, scope creep and other predictable risks. The type of
risks that can affect software projects go far beyond slips of schedule or unplanned down-time.
Hence why instead of managing risks, you should design strategies to reduce their impact when
they materialize. One such strategy includes having a working product (potentially shippable
increment or PSI) as early as possible. This PSI can work as an interim or ‘beta’ solution until
you finish the whole product. Later we will discuss other ways in which you can use a PSI to
actively reduce the impact of risks on your project.
she were to improve her skills as a project manager and as a leader, she wasn’t sure that there was a way
to comply with all the project constraints and requests.
She thought of just calling it quits and rejecting the project, but this would be a bad career move.
Rejecting responsibility just when everyone was relying on her to save the day would definitely force her
to look for work somewhere else.
Carmen had a reputation for facing problems head-on and being open about finding solutions. So she
resorted to the oracle of all project managers: Google.
She sighed deeply, typed “how to save a failing project” on Google and started browsing.
All she could find was the good old “get better at estimating” advice, which obviously was not an option
for her. Her project did not have more time, or more people, or some magic silver bullet to help her find
the “better” estimates all project management specialists were suggesting she should find.
Estimation continues to be the preferred method for project definition and planning.
The Project Management Institute (PMI) has been the powerhouse for Project Management in
the last decade. They issue the reputed Project Management Professional (PMP) certification,
based on their Guide to the Project Management Body of Knowledge, the PMBOK23.
The PMBOK has a full chapter for Project Scope Management, another for Project Time
Management and yet another for Project Cost Management. Interestingly enough, the chapter
on scope management does not talk about estimates – in other words, scope is implicitly
considered fixed and defined. Both time and cost management chapters have several pages on
how to estimate against this fixed, up-front defined scope. In practice most project management
practitioners will face a flexible scope in their projects, whether by design or necessity.
This difference between the prescribed approach and the actual practice creates a dilemma for
all project managers practicing their craft in software projects. They can either accept a fixed
scope approach or look for an alternative, for example, the value centered approach.
The value centered approach accepts a fixed time and cost which are most likely to be
determined by contract and availability of people and money, and accepts that scope will be
variable. In practice, this is translated into a practice of adding or removing scope from the
project as needed to compensate for unplanned work or risk events. In other words: to
compensate for uncertainty. The value approach focuses on specific practices, like prioritizing
scope and delivering the most valuable and necessary part of the scope early, leaving all the
‘nice to have’ and ‘bells and whistles’ for the last part of the project, where uncertainty is more
likely to affect the project.
23
A Guide to the Project Management Body of Knowledge (PMBOK Guide) Third Edition
40
After some hours of writing high-level work packages on a Gantt chart, Carmen decided to ask for help
estimating all of those work packages. She was looking for dependencies by dividing work into smaller
work packages and analyzing their dependencies. She needed some experts to help her.
During the following days, Carmen desperately tried to book some time with the architects and technical
leads in the company. Unfortunately, they were all too busy with ongoing projects. Other project
managers even asked her not to disturb ‘their people’. She managed to gather some insights on the
technical side of the project, but barely enough to understand the meaning of some terms – not even close
to craft a meaningful estimate.
“Darn, I need to continue to dive deeper into this project. I’ll go and interview the Business Analysts
(BA) at the client site. Maybe they can answer the questions I have from reading the requirements
document.”
Carmen picks up her jacket and starts walking to leave the office. She dials the number of the contact
person at the client.
“Caroline, hi! It’s Carmen from Carlsson and Associates. I’d like to come in and interview the BA’s for
project Big Fish. Is it ok if I drive over and meet with them after lunch?”
“Hi Carmen, nice to hear from you. Yes, you can come over but I’m afraid that the BA’s have already
been assigned to other projects and are out of the office during this week for kick-offs. Oh wait, Travis is
still here. Let me check if he is available…”
Carmen hears Caroline ask something. Silence. After a few seconds:
“Carmen? Still there?”
“Yes, Caroline. I’m here.”
41
“Yes, so you can come in and meet with Travis, but he is very new on the project and may not be able to
answer all your questions.”
“It’s better than nothing,” – Carmen thought to herself. “Ok, I’ll be there at 13:00. Talk soon.”
As Carmen drives to the client’s offices, she starts thinking about uncertainty.
“What is the uncertainty level in this project? If I could quantify it, how large would it be?”
She decided that the uncertainty level for this project is a solid 5 on a scale of 1 (no uncertainty) to 10
(complete unknown). Usually this would mean that she would give a margin of 50% to the project
estimate. But she knew it would not be acceptable this time. She thought about it and decided that a
margin of 20% was all her stakeholders would accept.
A few hours later, on the way back to her office and after having spent 2 hours grilling Travis the
Business Analyst, Carmen reflects on the questions she could not get answered and concludes: “If this is
how sure they are of the requirements of this project, then it is clear that the requirements are going to
change a lot during the project.”
“With this level of expected changes and the uncertainty on our side, the uncertainty level should be
raised to a 7 or 8, but that is not sustainable in the current situation. I’ll have to spend a lot of time
breaking down those requirements with our Senior Architect. We must win this bid.”
As Carmen enters the office her boss calls her into an empty meeting room.
“Carmen, I just got word that Accent Partners delivered their bid for Big Fish. You have an email with
the details of their bid. Make sure we win this bid. I have faith in you.”
Back to the PMBOK, the cost and time estimation sections provide several tools for crafting
estimates. A short summary of those techniques is:
• Expert judgement: as the name suggests, you find someone who is an expert on the
domain and ask about his or her estimate – which is the expert’s guess.
• Analogous Estimation: consists on using information from past, similar projects or tasks
and assume that this project won’t be very different from past projects.
• Published Estimation Data, Vendor Bid Analysis: the study of similar projects from other
organizations can provide data that we can use to refine our estimates.
• Bottom-up Estimating: the idea is to divide the whole project in small, estimable work
packages or tasks and then add them all together to obtain a whole-project estimate.
• Parametric Estimation: also known as sampling. If there are simple, repetitive tasks, then
you can estimate the duration or cost of one or a few of those tasks and multiply by the total
amount of tasks in the whole project.
• Group Decision-Making Techniques: the main rationale for this approach is that a group of
experts can produce a better estimate than one individual on his own. Brainstorming
(producing several ideas and then analyzing them) or Delphi and Wideband Delphi (asking
several people separately and then putting their estimates in common and discussing them)
are some of the known approaches.
42
24
Pivot is a structured course correction designed to test a new fundamental hypothesis about the
product, business model, and engine of growth.
44
CHAPTER 3
RETHINKING ESTIMATES
C
armen was exhausted. She had been working 14 hours a day for the entire week in order to
produce a document that made sense. She had highlighted all the risks she could think of, all
technical dependencies, all sources of uncertainty and interpretation, and all key boundaries
and constraints. Still, she couldn’t think of a good way to define a vision of success without actually
asking the client about it. Of course, the client was not available to clarify.
Carmen’s boss started to gently press her to produce an estimate three days ago. Two days ago he had
started to send her e-mails and copying all relevant stakeholders up the corporate ladder. The day before,
he had started to phone her almost every hour to ask about the progress with the document, and drop last
minute recommendations such as “oh, by the way, it is absolutely mandatory that you find a way to
introduce our Business Analysis, Automated Testing and Architectural Support consulting services into
the proposal”. This was not what Carmen needed a few hours before the proposal was to be ready.
At that moment, looking at her nightmare-ish document that already counted 300 pages, Carmen felt as if
her life was a Dilbert cartoon.
“Maybe it is because I’m exhausted,” Carmen thought, “but right now I cannot think of a reason we are
producing this monster of a document. There are too many loose ends - it will just never work the way it
is described here. Worse: everyone knows that! Very probably, even the client knows that, at this point
any fixed definition of what the future will look like is just W.A.G. – Wild A** Guess. So what’s the
reason everyone is so excited about having it as soon as possible?”
“Why don’t we just start working on it and find out what really needs to be done?”
Carmen shook her head, took a sip of her coffee and thought, “wow, I’m just losing it… I need to go on
and finish this as soon as possible. I need to focus on how we can win this contract and move on to the
next problem as soon as possible.”
It was 22:00 and she could hear the distant sound of young people partying the night away at the pubs
nearby.
Let’s review for a moment the situation Carmen is in:
• She is responsible for a bid on a very important project for her firm.
• She is being pressured by her boss and her company to deliver the project under a certain
time/cost.
• She knows that uncertainty regarding the project itself is high, and the stakeholders do not
want to have that uncertainty affect the estimate.
45
• She does not yet have a team – after all, they are only in the bidding phase.
Many projects suffer from these same dynamics. They suffer from unrealistic expectations.
How do you estimate a project like that? Can you avoid that part of the project, can you drop
estimates altogether?
The answer is not simple. When a bidding process is required, you can’t avoid providing an
estimate. And there are many ways in which you can try to be precise, honest and create an
estimate that you believe in.
But when you go through a bidding process, even if you can provide an estimate you truly
believe in, the start of the project is when you know the least about the project in all its
dimensions: content or scope, costs, technology and, most importantly, people and teams.
We need a different approach.
All parties involved in a bidding contest use estimates to “win”. Providers use estimation as a
tool to win the bid. Clients use the bidding process to create a pressure on the estimations by
the providers. Clients want to create that pressure to win the cheapest or fastest project they
can. But estimates – no matter how good they are – cannot give you what you really need:
visibility to progress;; and actionable information.
Now that we have a common base to discuss estimates, we can move to one of the
fundamental questions around the use of estimates in software projects.
46
• To know how many features we can fit in the project, given time, and other constraints.
Of course, this does not mean that estimates will help you to actually know time, cost or scope
of the project, but you can have a better idea and constrain the outcomes to a minimum or
maximum time, cost and scope.
It is important to know that estimates, on their own, have no actual value unless they can help
us understand better when the deliverables are going to be ready or how much the whole
project will cost. If there were any better way to know the answer to these questions, estimates
would be a waste of effort and time. For example, if you could know when a box is going to be
delivered by asking the courier company, it would be a waste of time to conduct an estimation
meeting and try to estimate when the box will be delivered.
But there are deeper, human reasons to estimate and ask for estimate. One is emotional - you
just need to know them so you can sleep better and reduce your stress. This is very common
when I travel. When I travel early in the morning, the night before I make a careful prediction (or
estimate) of how long it will take me to reach the airport. I check the weather and road
conditions on the way to the airport and come up with an estimate for that trip. Then I book a
taxi for a time that would give me a 30 min or so buffer because the security line at the airport
may be slow that day. Making this estimate helps me sleep better. In any case I always setup 2
different alarms to make sure I wake-up on time. Without this estimation I probably wouldn’t
sleep very well.
Another possible reason is that you might need to give some answer to your client so that he
stops calling you every five minutes, or you need to tell something to senior management and
other stakeholders so they trust your ability to manage the project.
You can probably think of other scenarios of when the people involved in the project just need to
hear an estimate – no matter the accuracy of the estimate – so that they can feel safer, or that
the project is in control. These human reasons are understandable, but they don’t make your
estimates critical to understanding the project progress. They are part of working with other
people, who have different needs.
Without really thinking what she was doing, Carmen speed-dialed her boss’ number. He picked up the
phone after just two rings – bad sign, he was expecting the call.
“Hi Carmen! Do you have news for me on the Big Fish bid? I have the client’s people all over me…”
“Er… I am almost done, sir. I understand that our company’s future depends on this project. I
understand that we must present our bid soon, but I’ve been trying to get a team together for the past few
days and no one is available.”
“Well Carmen, that’s why we put you in charge, we’re sure you’ll find the way.”
“I was just wondering…”
“Yes Carmen?”
“You know… There’s no easy way to put this...”
47
“Come on, Carmen, you know I absolutely support you, you can tell me anything.”
“It’s just that… I don’t really understand, sir. It doesn’t matter how much work I put into this document,
it just makes no sense. There are too many loose ends, too much uncertainty. Above all, why do they need
such a complete plan now?”
There was silence on the line.
“Sir?”
“Er… Yes, Carmen, it’s only that I’m not sure what your question was about.”
“It’s simple, why do they need an estimate?”
“Well, Carmen, I assume you are asking that because it’s Friday and it’s late. This is a very easy
question: they just need something to show to the business.”
“Yes, but why?”
“C’mon, Carmen, you’re kidding me… They need something that shows them that the project will be
done on time, something that makes them trust us.”
“I understand, sir, but… If this is a trust issue, not a planning and analysis issue, wouldn’t it be better
solved through communication? I mean, we don’t actually know if the project, and I mean the whole
project, is going to be ready on time. We can just give them an idea of what might get done and what’s
the uncertainty range. It’s like…”
“Look, Carmen,” her boss interrupted, “it seems to me like you feel insecure. I understand that you are
under a lot of pressure. But you know that we need to deliver the bid or we will lose the project.”
“Well, if it’s just a matter of showing something, then I could have just made up those numbers instead of
overworking myself through the last week.” Carmen was starting to feel anxious and frustrated. After all
her hard work, her boss seemed to be telling her that whatever she wrote on the document it didn’t
matter.
“Carmen… Calm down. You are under a lot of pressure, I understand.” Carmen’s boss said in a harsh
voice, “but it’s not like we could just put together some random numbers. These need to be accurate
estimates, and you will need to live up to them. We will commit to these numbers, and you will be
responsible to deliver according to them.”
“This is not fair, sir. If you are going to hang me with my own estimates, then I’d prefer to keep them
conservative. I’d rather say that we are going to do just some of the 400 features in the backlog, and that
it will take us a year to do so.”
“Carmen, don’t over react, please. We need to commit to the whole project scope. And it has to be
delivered before the defined deadline. Period. This is non-negotiable.”
“But sir…” Carmen felt her voice trembling, “you already have your estimate. All the features, right
before the deadline. It’s like we already know what the estimate should be even before completing the due
diligence work…”
“Carmen.” Her boss said and paused for a few seconds. “You know what you need to do, that’s why I
chose you. I pay you to solve the hardest problems in our projects. I know you can pull this off. Now I
better get some sleep, we have serious work to do through the weekend. I hope you will see things
differently tomorrow.”
<click> The phone line was dead…
48
What Carmen’s boss is asking her to do is to use her magic touch and convert an impossible
project into a viable one. She will do just that a bit later in the story without the use of estimates,
but before explaining how she does it;; let’s review her situation.
Winning a bid no matter the consequences is a very common anti-pattern in the vendor-buyer
relationship for software projects. The bigger the project, the more often it happens – because
there is a lot of money, status and reputation at stake. And because there is so much at stake,
we invest significant time and money to try to reduce the uncertainty of our decisions. Not
knowing what is going to happen in the future causes a lot of stress to the untrained mind.
Any projected deadline, cost or feature catalog crafted using estimates is a guess, no matter
how well researched, prepared and reviewed. These guesses help reduce uncertainty, but not
eliminate it. Sometimes, a very inaccurate estimate acts as a sedative: it will provide you with
bad information that will make you feel secure, but when you realize the estimates were wrong it
might be too late and at that point stress levels go through the roof and everybody loses their
cool.
In some other cases, estimates are used as a weapon to assign blame. In these cases, the
estimates will turn into a deadline and all involved will be blamed when the deadline is not met.
How can estimates used in this manner add value to a company? Is this a valid reason to spend
so much time and money on estimates? Is it the best way to manage projects and mitigate
risks?
Often organizations will start a project that just needs to be done, no matter what, and then will
spend some time estimating size, costs and deadlines because they need to know when it is
going to be done, or how much will it cost, or what features will be delivered. In those cases,
when you ask them what decisions will they take depending on the projected cost or delivery
date of this project, what usually happens is that they stare at you as if you were speaking
Klingon. “Because we can’t continue selling our product if we don’t do this project!” – I can hear
them say. In these cases, what is the value behind these estimation efforts? If you just need it,
start doing it and deliver something as soon as possible. You can report throughput and forecast
future results later based on the first deliveries, and this information will be much more valuable
and accurate than any estimation done at the start of the project.
In other cases the reason why you might need to know scope, cost or time is rational: you will
decide to start or to contract a particular vendor depending on the estimates. If we can have it
before this date, or if it costs less than this budget, or if it has at least these features... This is
also the case for clients who need to know what vendor to contract depending on the
information they provide on expected cost, deadline and features included. Of course, you
should notice that these decisions are being made based on estimates (guesses), and that an
estimate is not necessarily equal to a commitment.
As an example, a client recently needed to decide whether to invest time and money introducing
better engineering techniques into their team or just maintain the low quality levels but have
more chances to meet a projected deadline. As usual, they asked for an estimate: “How long
will it take to introduce these techniques? What will be the impact to the team’s velocity at the
beginning? When will the velocity stabilize and increase? And how long will it take to recover
this initial investment?”
There is no bulletproof way to know the answer to these questions in advance because the
answers depend on many factors. Instead of a guess, you need to make a trade-off decision
between short-term goals and long-term improvement you seek. If you choose short-term goals,
you should then make the necessary decisions to deal with the long-term negative impact of
49
that decision. However, if you decide to support the long-term goals, you have to make the
necessary adjustments to your short-term goals.
No amount of time invested in estimates will help you make the inevitable adjustments, because
predicting the exact impacts of either decision is impossible. Maybe your best engineer will quit
because he hates Test-Driven Development, or your best tester will quickly recruit even better
testers once she understands that you really mean quality when you say quality – thanks to your
decision to focus on quality.
In that particular case the teams were asked to invest at least 15% of their time on engineering
improvement while keeping the deadline fixed. This meant that if we thought that the deadline
wouldn’t be met, we would start cutting down on learning and training time. What happened
didn’t surprise me: velocity didn’t change a bit once we started using 15% of the time to improve
the engineering practices, while during the next six months quality increased dramatically! This
was true win-win situation, which could not have been predicted by estimating.
Magic? Not really. But it does take a great deal of experience to understand that not all activities
have a linear impact on schedule or costs. This is what Agile Software Development is all about,
exploring the non-linear relationships between time invested and benefits gained, just like
#NoEstimates.25
Some argue that the process of estimating a project, will help the team get a better
understanding of the requirements, the architecture or technologies needed to succeed in that
project. The assumption is that estimating a process will result in a better analysis of the project
details. This is not always the case. Having a conversation about the scope of a project or even
the technological alternatives is very different from the process of estimating cost and time to
implement. Estimating and analyzing are two different things, and although you might need
analysis to estimate, the contrary is not true.
Estimation and analysis are potentially linked techniques, but they are not dependent on each
other. You can estimate a project without analyzing it (like I propose in this book), and you can
also analyze a project without estimating its size or cost. The conflation of estimation with
analysis leads to sub-par analysis, and that in turn, leads to bad estimation.
25
An interesting rabbit hole for the statistic mind if the concept of Confounding variables
(https://en.wikipedia.org/wiki/Confounding). This is a concept that begins to unravel why
estimation is such a hard problem. Thank you Pier Lorenzo Parachinni for the hint to include this
reference.
50
People that evaluate their performance through those very same metrics – not surprisingly –
introduce project Driven Development to their organization. Other metrics, such as quality;;
product-market fit;; or speed of delivery end up being ignored in favor of being on time and
budget.
In these projects developers and customer support teams will feel the pain of bad quality. The
lack of product success will be blamed on the customer “not knowing what they wanted” or the
marketing team.
The negative effects of Project Driven Development will affect multiple people and teams in
different departments;; hence the blame will be distributed while the project life-cycle process –
the real root cause for product failure – remains unchanged.
The Project Driven Development paradigm is characterized as delivering any scope on time,
under budget and within the defined scope. Even if this approach might maximize your chances
of receiving a short-term bonus, in the long-term it is does not help your company or your
client’s company to be more competitive, nor is it maximizing value from the perspective of the
customer.
However, some will find a lot of value on Project Driven Development. But are they maximizing
value for their customers with this approach? A commonality between organizations that follow
this approach to software development is that they often have little or no urge to compete or
survive, sometimes because they are a de-facto monopoly in some industry. Other times
because the real goal of the organization is not survival or success, but rather to maintain their
status quo. Yet another case is when the organization is very successful despite their software
practices, and have no motivation to change because of that success. In these cases, Agile or
Lean makes little if any sense, as there is no perceived need to maximize customer value,
reduce waste or adapt to change.
For example, let’s say you approach a traditional consultancy business and tell them “hey, I can
show you how to turn that 8 year - 500 people - 250 million euro project for your customer into a
51
1 year - 10 people - 0.9 million euro Agile project.” The typical reaction will include an
incredulous stare, followed by: “Why on earth would I want to do that?”
Another example of Project Driven Development: maximizing project size, cost and perceived
outcomes instead of searching for better ways to deliver customer value faster.
26
More on the Toyota Production System at:
https://en.wikipedia.org/wiki/Toyota_Production_System, and the very enjoyable book by Liker:
The Toyota Way: 14 Management Principles from the World's Greatest Manufacturer
27
Wikipedia: http://en.wikipedia.org/wiki/Toyota_Prius_%28XW10%29
28
For a comprehensive discussion of linear vs incremental planning see Larman’s Agile and
Iterative Development: A Manager's Guide. For a discussion of complexity, see Snowden’s
explanatory video at: https://www.youtube.com/watch?v=N7oz366X0-8
52
frequently in an evolutionary manner, obtaining direct feedback from your customer as you go
and reducing uncertainty progressively.
When the Toyota Prius team started their project, the whole definition they had from Toyota's
Chairman, Takeshi Uchiyamada, was to make a green car and "question everything you know
about cars". This project gave Toyota a high-single digit or low double-digit year advantage
when compared to other automakers (exception: Honda)29.
In the Prius example we see that the project starts with a bold goal, and a clear direction. No
estimates.
When the Honda City engineering team, which averaged 27 years old30, started their work, the
project definition they got from management was "we want you to build the kind of car that the
youth segment would like to drive."
How does this compare to estimated, fixed, inflexible project plans?
Variability
The estimation process is an attempt to reduce uncertainty and variability in projects. In an
environment with no uncertainty and no variability, estimates would have no meaning - you
would always be certain about cost, time and scope.
Once uncertainty and variability kick in, it is difficult to know the exact cost, time and scope up
front. If your estimates are proven wrong this will impact heavily the results of your initial
decision. Hence why you need to constantly check how the project is performing according to
the initial estimates and re-plan and re-estimate again.
29
Wikipedia: http://en.wikipedia.org/wiki/Hybrid_electric_vehicle
30
HBR, The New New Product Development Game by Takeuchi and Nonaka:
https://hbr.org/1986/01/the-new-new-product-development-game
53
Re-planning usually results in your client and stakeholder saying “but you committed to this
deadline! You cannot change the plan now! Do whatever it takes to maintain the delivery date –
but, of course, with no changes to budget or scope.”
A lot of effort is invested into estimation, but not so much to reduce sources of uncertainty. On
the contrary, companies that apply Lean Thinking (Lean companies) have been developing
ways to reduce variability since the start of the Lean adoption. Lean companies use an
approach they call heijunka31 to reduce variability in the work where possible. This leveling out
of the work load (for example, by having small User Stories) will help you reduce variability in
task duration as well as help you identify the unexpected variability early on.
When the rhythm of work is steady enough, the estimation process loses importance and
forecasts are more useful and more accurate.
Below is a list of 8 possible sources of variability for software teams.
Technology: if a team which developed a Cold Fusion application for fifteen years is asked to
create a .NET application, all the previous data on velocity, feature size, cost and time will be
basically useless for the purpose of forecasting their throughput in this new project. On the other
hand, using technologies that are immature or buggy will dramatically increase accidental
31
A Japanese word that means “leveling.” When implemented correctly, heijunka elegantly –
and without haste – helps organizations meet demand while reducing wastes in production and
interpersonal processes. Wikipedia: http://en.wikipedia.org/wiki/Production_leveling
54
complication: the work necessary to work around that unstable technology. Lean companies try
to use only proven, reliable technologies, no matter how fancy, trendy or innovative a platform
might look. The use of established and well-maintained frameworks is a good example of this
principle on more technology or software related environments.
Domain or product: even when you don’t change the technology, there can be a lot of variation
if the team is forced to develop a new product or have to work on a different knowledge domain.
For example, if the team have been developing a micro-payment solution and now they are
asked to develop a warehouse management software they will probably need to learn many
new things, and their pace of work will vary highly until they reach a level of proficiency with the
new product domain that allows them to focus more on delivery and less on learning a new
domain.
Team composition: some often-overlooked sources of variability are changes in team
composition and team dynamics. Many people assume that, if you reduce team size by 10%,
the throughput should drop 10%, and if you double team size you should be able to cut
development time by half. This is not the case. If you have a team of 10 people and you fire the
only business analyst in the team, the effective productivity rate will drop way more than 10%.
On the other hand adding more people to a project that is late is likely to delay the project even
more because of the increased complexity and the need for the team to adapt to its new
composition. In other cases, removing someone from the team will actually increase throughput,
while adding someone will dramatically backfire. Human teams are not bound by arithmetic -
you cannot add, subtract, multiply or divide people!
User, Client and client representative: as we will see later, one of the most effective enablers
of a #NoEstimates approach, is a savvy client representative. No matter if it is a Scrum Product
Owner, or someone from your client’s organization or even a team of people performing this role
as a Product Management team: if you have someone that is able to divide your work in chunks
of small enough work-items and prioritize them according to business value, it will make your life
easier in so many ways that I wrote a book about it - this book, of course. On the other hand, a
‘bad’ Product Owner or client representative can have a very negative impact in organization by
not helping them focus on the most valuable deliverables, or worse: trying to get so much work
started that the whole organization grinds to a halt. Given the potential impact of a Product
Owner in the organizational performance, it amazes me that the main focus of many
organizations seem to be on training only team members or Scrum Masters. While they ignore
the education and improvements necessary in management and product ownership.
Workload and / or focus factor: having teams constantly changing their focus between
different projects or having to attend to bug fixes every day, small requests, or side projects can
dramatically increase variability in the pace of work. Not to mention the effect on teams’ morale,
product quality and organizational performance. In my experience, teams constantly shifting
from project to project have a significant performance decrease when compared to teams that
are allowed to focus on one project at a time. On the other hand, at the end of the day, both
teams will report ‘8 worked hours’, and many companies will consider that both teams
‘produced’ the same.
Market and competitors: introducing your products to new markets can bring variability in the
form of new requests, adaptation needs, regulations compliance and other requests for
changes. Similarly, when new competitors or new products enter our market, our plans will
change, which will inject unexpected variability in the project.
Dependencies / specialization: in environments where the norm is high specialization and
dependencies between production units, departments and even team members, variability is
higher because of bottlenecks that constantly emerge when and where we least expect. Hence
55
why methods such as Scrum advocate the cross-functional team as the unit of productive work
in software development organizations. Cross-functional teams reduce variability by reducing
dependencies. But there are also other causes of variability, for example, some companies
assume that every Story requires X% analysis, Y% development, Z% unit testing, with X,Y and
Z all being fixed. But for some items, it could be that doing a lot more analysis could even lead
to 0 development: the feature could be configured Instead of developed. Therefore the
composition of the team will cause variation in the estimation of the work being analyzed and
therefore cause variation in the overall project.32
Waiting for availability: Waiting happens when a work-item is ready to be worked on (the
requirements are ready, or the design is ready, or the code is written), but it must wait for the
people with the right skills to be available. The time work-items spend waiting to be picked up
can amount to more than 90% of the calendar time it takes to deliver the work item. These wait
times are also very hard to estimate because they depend on many factors. When you ask
teams to estimate their work, don’t forget that they will only estimate the time they actually work
on the item, not how long the item will spend waiting. These wait times can have a very large
impact on the overall schedule for a project.
With all these sources of variability in performance, it is amazing that people ask for accurate,
precise, fixed estimates and commitment at the beginning of a project. This is the time in the
lifecycle of the project when we know less about what is going to happen. And don’t forget: the
people making commitments to deliver on a particular deadline, scope and budget usually have
neither control over these sources of variability, nor authority to re-negotiate deadlines, budget
or scope when variability kicks in!
• The higher the variability, the harder it will be to predict the throughput of completed work;;
therefore, any investment on reducing variability will impact the product development team’s
reliability and predictability. Here are some techniques you can use to reduce sources of
variability in throughput for your organization:
• Stabilize your teams and avoid constantly changing people from one team or project to
another.
• Define clear priorities, reduce dependencies and allow people to work on one thing at a time,
finishing it before starting a new work item.
• Build quality into the whole production process, do not try to inspect quality in33 at the end of
the line;; ensure that no defects are passed down to the next step in the line.
• Enforce cross-functional work groups and generalizing-specialist34 teams, which can solve
problems in parts of the product for which the specialists are absent, yet focus on specific
areas where they have long-term experience (aka T-Shaped professionals).
32
A special thank you to Maikel Vandorpe for the explanation regarding dependency on the
team composition.
33 Inspecting quality in: using reviews, or quality checks to help increase quality, instead of
designing a work method that prevents mistakes from happening. The latter is often referred to
as error-proofing.
34
A generalizing specialist is a specialist that can help the team progress by working in other
areas where they are not the expert, but have enough knowledge to be able to help deliver
certain work items. This is important because it reduces wait times, a major cause of variability
in software development processes.
56
• Standardize and automate where possible. This will allow your teams to focus on actually
getting the maximum amount of work done that is possible.
• Protect the team from outside interruptions that disturb their focus and typically cause
uncontrolled multi-tasking.
• Freeze scope inside iterations and allow the team to work on delivering the most important
work, without context switching that costs them time and takes focus away from the most
important work.
In the software industry, teams and organizations are forced to adopt new technologies, to
change their domains of knowledge, or simply work in new projects. It is precisely in these
cases that the #NoEstimates approach delivers the best results. It is much more appropriate to
look at actual throughput (work delivered to the quality expected), than trying to estimate work
done in a previously unknown domain, with a new technology, a new team, for a new project or
client, etc.
For example, assume you are a competitor to Facebook or Google. Can you estimate how
much Facebook or Google are going to innovate during the next 12 months? Not likely. It is a
much better strategy to improve your capacity to respond to whatever will come your way, no
matter what your competitors will come up with, or come up with strategies that force your
competitors to respond and adapt to you instead. When you are ready to respond quickly, no
matter what your competitors come up with, you will be able to respond and adapt.
Delivering value in minimum sized increments (also known as: Minimum Viable Product or
MVP) is not just a trendy software development approach. It is a risk mitigation strategy that
uses the Agile principle of delivering working software early and often for your business benefit:
lower risk and more value.
Estimating the whole Product Backlog up front does not reduce your main risk: business risk,
also known as the risk of delivering the wrong things. But having the right prioritization will. What
this means is that you should invest your time in spotting the most valuable features in the
Product Backlog that could constitute a first, rough, small version of the product (hint: ‘all of
them’ is not the correct answer). Then make relentless progress in delivering the minimum
subset of those features that will deliver the necessary value to your customers.
Let’s say that you want to predict how the stock market is going to perform in the next ten years.
You could go study each stock and try to figure out how it is going to perform, then add all
performances together and obtain a 'grand total'. But no market analyst will advise that
approach. Instead, what they would do is study how the stock market performed during the last
100 years, then see if we can use that in order to forecast performance over the next several
years.
What would this idea look like when applied to a software project? Let's say we conduct an
analysis of the last 200 features and we end up with this kind of graph:
Let's say that you find that the average feature duration was 3 days, and there's a standard
deviation of about 1.5 days. Now let's say that there's a new project coming in and it has 100
features. You probably don't know the size of feature 1 or feature 37, since you have not done
any kind of estimation, just a functional definition. But would it be unreasonable to expect that
these hundred features will require sometime between 300 and 450 days? Compare that to an
estimate of 100 or 1000 days for the same features.
There are some situations where this forecasting can't be made, and those are the ones where
there is higher variability expected in the next project because of a change in technology, team,
customer representative… But in those cases, would a feature-by-feature estimate be more
accurate, even feasible?
Let’s do a thought experiment – a Gedanken or Gedankenexperiment. Ángel Medinilla, this
book’s fantastic illustrator, calls this the ‘Perfect Product Owner’ Gedanken.
59
Imagine a perfect Product Owner. This Product Owner has the mutant superpower of being able
to divide any project into stories of only 3 relatively small sizes. For every story size, there’s a
statistical outcome in terms of how long does a team need in order to finish it – like, for
example, small stories are finished in one to three days, medium stories are finished in three to
six days, big stories are finished in six to twelve days.
We don’t know up-front if a story is small, medium or big – we only find out when it is finished
and we realize how long it took us. If this super Product Owner existed in reality he would
produce stories so that:
• Sizes would be coming randomly – e.g. not all the small stories are at the beginning of the
project and all the big ones are at the end.
• Even not knowing if the next story would be small, medium or big, the statistical distribution
of the sizes would be constant and known over time.
You don’t know what’s coming next, but you can predict the overall behavior over time. If you
were to create a histogram, characterize the statistical distribution in the form of a median and a
standard deviation and, if a project is divided in 100 stories and the median is 3.5 days, with a
standard deviation of 1.5 days, would it be crazy to say ‘it absolutely looks like a 350 days
project, worst case 500’?
The only “trick” we required in the Gedanken was a savvy Product Owner that is able to
consistently divide projects into stories that are small enough. Even if you can’t perfectly
60
determine what’s going to happen in the future;; this ability to slice the work into “small enough”
work-items or stories will give you a very high degree of throughput predictability.
CHAPTER 4
“T
he project will be done in three months, give or take a week or two.”
I remember saying these very same words in a top management meeting. The
number – three months – was not arbitrary. It was the result of in depth analysis,
task breakdown (yes, even I did waterfall in my day), and a lot of internal meetings
to get people assigned to the project “at the right time”.
The
managers in that meeting were happy. Very happy. This was also the number they wanted to
hear. They were so happy they did not hear how I completed that phrase:
“But only if everything goes according to plan. We have no buffer with this schedule.”
62
This is not a unique situation. All of us that have managed projects have been in a similar
situation. We’ve all been influenced by overt and covert expectations from our superiors. In
some cases, we’ve also been in Carmen’s shoes, managing a project on which the company’s
future depended on. A lot of sleepless nights follow.
How can we answer this question? How to know when the project will be done without
estimating all the work? That is the key question. (“When will the project be done?” can be
replaced with “how much will it cost?” the process we go through is the same).
Past approaches to estimation have not worked well, in chapter 1 I shared the data. At one of
the companies where I worked, projects were, on average, 62% late. An average 100 day
project would last 162 days! And even worse, several projects took longer (or much longer) than
162 days!35
Would you bet your company’s future on that kind of track record? I wouldn’t. And neither will
Carmen.
We need a better way to predict the end date (or final cost) for our projects that is not
dependent on moody managers coming down and putting pressure on project managers to
“improve” the estimates.
Two months later…
“Carmen, we have a review of the project with the Client next week. How are things going, what kind of
progress can we show them?” Asked her boss.
“Good Morning sir. Yes, we do have the requirements delivery and the Earned Value Management
reports that I showed you just yesterday.”
“That is great Carmen, but I was asking if we can show them working software. You know, to make a
good impression.”
Carmen felt the ground disappearing from under her feet. The requirements for this project had been
written in a way that the software could only be demonstrated after most of those requirements were
implemented. They were only two months into a 12 month development phase, there was nothing to show!
The testers hadn’t even been hired yet. What could she do now?
“Sir,” she started, “you knew from the start that this was going to be a project with a long development
cycle. It is quite impossible to show any working software until we have requirements implemented in all
architectural layers. We only just started to develop the first layers like database, services, etc. We have
nothing to show…”
“I’m sure you can think of something for next week, you always do!”
35
Thank you to Troy Maggennis for helping me correct the conclusion in this paragraph.
63
How can Carmen show the real progress of the project? When requirements are written in a
layered fashion, progress can only be assessed at a component level.
64
More importantly, overall progress at the project level can only be assessed when all layers of
the software have implemented a larger part of the overall functionality. How can Carmen show
progress? She could count the number of requirements implemented;; the costs incurred, and
compare that to the baseline that she created when estimating the project (how many, and
which requirements should have been implemented by now? And how much money should we
have spent by now?) But the truth is that these are very misleading measures of progress.
Let’s look at an example.
Here’s the graph from a project that followed the same implementation strategy that Carmen is
following. Take a look at the number of open bugs found. If you were the project manager for
this project, when do you think the project would be ready for release?
Figure 6 - Data from a project using Rational Unified Process (RUP), a linear process model. This represents
the project bug, or defect-curves (cumulative open, Submitted, and Closed) at the end of development phase,
and beginning of validation phase (phases are used in RUP).
That’s right, no one can say when that project will be done. In fact, we can see from the graph
that all requirements were implemented long ago (the development phase already ended), but
the number of open issues just keeps growing and no one in their right mind would release that
software. If we batch (accumulate and delay) the fixing of bugs to the end of the project – which
65
we have to do if we take the layered approach – we will not know the real progress until we start
fixing those bugs, and very likely later than that.
A simpler way to see this is: if you have a 800 man/hour project, and someone says that you
have actually invested 400 man/hours, can you say with confidence that you are 50% done?
Is there an alternative that Carmen can use? Yes! You have the #NoEstimates alternative that
creates true visibility to progress in a software project.
Visible Progress
The main goal of my approach to #NoEstimates is to help evaluate progress in a concrete – and
easy to implement – way.
There are many ways to specify a project. For example, we can start by doing a business
analysis and create a requirements document. The requirements document can be useful in
generating consensus on what the project should deliver, and what are the concrete problems
you will tackle with the project. However, requirements – in their classical form – are not
practical when trying to assess progress (aka progress follow-up). Remember the vertical vs.
horizontal division of work graph above?
If you have started (but not completed) 50% of the requirements in your project how far away
are you from completion? Many people in the world today still think that work that is started (but
not completed) is progress in a software project. That is wrong. Code (implemented
requirements) is only a liability. It turns into an asset only when a user can create value with it!
“Working software is the primary measure of progress”
- From the Agile Manifesto
66
Following this principle from the Agile Manifesto requires us to write requirements in a way that
allows you to do two very important things:
1. Requirements need to be written in a way that allows you to measure progress early and
often during the project.
2. Requirements need to be written in a way that provides you with the necessary flexibility
to make decisions on what part of each requirement will be implemented later, when you
better understand the system, and the business needs.
Let’s look at what happened in the example we started studying above:
Figure 7 - Data from a project using Rational Unified Process, a linear process model. This represents the
project bug-curve at the time of release.
In the chart above you can see that development stopped about 1/3 of the way through the
project. If you had asked the developers they would have said that at that point the project was
almost done. After all, they already had implemented all the requirements they were asked to
implement. In reality they were not even close to 50% completion. Here’s why: when you
implement all of the requirements you have only completed a small portion of the work that
needs to be completed for the functionality (or capabilities) of the system to be useful to the end
user. When a developer says “I’m done” what they mean is: “I’ve coded in what I think is the
meaning of the requirement you gave me.” After this work is done, you need to verify two things:
1. First, you need to verify that the developer has the same understanding as someone else –
typically a tester – who looks at the software from the customer point of view.
67
2. Second, we need to ask the end customer if what is implemented really solves the
problem that it was intended to solve.
Even in the best-managed projects the first of these verifications is often done too late, but
rarely anyone cares about the second type of verification until it is truly too late to recover
without major impact on project schedule, project cost or both.
The consequences of the failure to execute these two verification steps are:
• You don’t have actionable information that allows you to effectively measure progress.
Remember this: you are not done, when you think you are done, but only when the customer
says you are done.
• When you finally find out that the project is late, you don’t know what can be dropped from
the scope of the project (you may even have all requirements implemented like the example
above). And even if you know what needs to be removed, you can’t remove it because all
requirements are implemented and they depend on each other. The required functionality is
implemented;; it just does not solve the problems they were supposed to solve.
With my #NoEstimates approach, I try to avoid these problems by using the following progress
criteria which is based on work by many people in the Agile software development community:
• Always implementing independent Stories (more on that below). Stories are requirements
68
(written in a specific format) that explain what is the problem the user of the software needs
to solve.
• Following progress every day, not by milestone completion. In Figure 6 we see a project that is
“feature complete” – one of the key milestones in most software projects still today – but has
nothing that can be delivered. Here’s the key take away: progress in software is measured by
running (it can be demonstrated live), tested (high quality and user-accepted) software, i.e.
Running-Tested-Stories. RTS, Running-Tested-Stories is the only metric that reliably
describes the progress in a software project36.
You can implement progress follow-up by delivering completely each piece of functionality (I call
them Stories) in a way that fulfills the two criteria listed above. Here’s what the original chart
above would have looked like if the project had been measured by the number of Running-
Tested-Stories delivered every day:
Figure 8 – RTS (Running-Tested-Stories) burn down for the project in Figure 2
36
Others in the agile community have used a similar metric. I have found the first reference to
Running Tested Features (similar to RTS) from Ron Jeffries’ blog in 2004:
http://ronjeffries.com/xprog/articles/jatrtsmetric/ And the first reference to Running Tested
Stories from a presentation by Simon Baker in May 2006: (PDF)
http://computertrainingcenters.com/wp-content/uploads/2012/09/IntroductionToScrum.pdf
69
Even if the Stories take longer to implement than one day, they should follow some
#NoEstimates slicing principles:
• There should be no ‘huge’ Stories (e.g. in Scrum: bigger than half a sprint counts as ‘too big’
and should be split.)
• Several independent Stories should fit into a Sprint or a period of 2 weeks if not using 2-week
Sprints or Scrum. Six to twelve Stories delivered in a 2-week period is a good rule of thumb.
• The statistical distribution of small-medium-big Stories should remain constant through an
extended period of time - i.e., not having all the big items at the beginning of the project (like
one story about “setting up infrastructure”) and then all the small ones at the end.
However, even if we follow progress the right way, we still need to prepare for surprises. Of
course certain things will take more than we expected (remember Hofstadter’s Law?). So,
following progress with #NoEstimates is not enough. We also need to have actionable
information.
Actionable Information
Actionable information is information that allows you to make decisions that positively affect the
success of the project. It is information that is typically expressed in a way that offers a
conclusion. For example: Because we only have 3 Stories implemented (Running-Tested-
Stories or RTS’s), but we should have 6 Stories implemented at this point, we must reduce the
scope of this release if we want to deliver on time.
RTS (Running Tested Stories) is the metric in #NoEstimates that allows you to act on the
progress and manage the project to meet a particular release date. It is the equivalent to
‘Working Software’ in the Agile Manifesto, and hence it is the main measure of progress, the
only one that really counts.
70
In the case above we see a typical project delivery rate (in a burn-down chart). By looking at the
chart above one can easily see that the project presents some risks of missing the deadline, but
is not in a critical situation. If your project follows a similar burn down trend, you know that you
need to reduce the scope. Reducing scope can only be done if the work left in the backlog is
independent from each other and from the functionality already delivered. The opposite of
independent Stories in software is the concept of layered requirements. Layered requirements
are requirements that build on each other (different layers of the architecture, for example) in
order to deliver the necessary functionality.
• I: independent Stories are Stories that can be implemented separately without depending on
other Stories. You create independent Stories by slicing the project into vertical requirements
(Stories) that can be verified individually.
• N: negotiable Stories are Stories that define a very clear capability for the system, but do not
37
The INVEST mnemonic is credited to Bill Wake and his article INVEST in Good Stories, and
SMART Tasks
71
dictate an implementation strategy, or very specific functional requirements. This property
allows the development team to select an implementation strategy that best suits the project
when the time comes to implement that Story, and allows the customer to be engaged in
defining the detailed functionality later on based on the running demo of the software.
• V: valuable Stories are Stories that have a concrete value to the customer or user of the
product being created. The opposite would be a story that helps the developer but not the
customer.
• E: Essential, meaning that every story is absolutely required for the product to be viable. To
be Essential, a story must not only be valuable, but it’s removal must make the product
unusable or unsellable. Earlier INVEST definitions included ‘Estimatable’ in the sense that
there would be some understanding and specific definition of the story that allowed us to cast
an estimate if we wanted to. #NoEstimates focuses on value instead. The goal is to do only
what is essential to the project’s success.
• S: small Stories are Stories that are well understood by the team and can be implemented in
a short time frame. With the #NoEstimates approach I advocate that Stories should be
between 0,5 and 1 man-days of effort. Establish that as your target, and slowly move towards
that size. Your visibility to progress and quality will slowly increase as the size of the Stories
decreases. To determine if a story is small enough I ask: “Tom, can you get this story done
by tomorrow?” There’s a world of difference in this question, when compared to “Tom, when
could you have this story done?” The first question is intuitive (some call in Flashtimate), and
not a result of a detailed analysis of each of the component tasks for that Story. Another
difference is that we don’t ask this from all Stories in the backlog, but only the Stories that we
will start working on immediately.
• T: testable Stories are verifiable. They include, for example, a set of criteria that define when
the story is done. These criteria are called Acceptance Criteria and expressed from the point
of view of the end-user or customer.
INVEST Stories give the project team information and the tools necessary to actively manage
the scope of the project because:
• Each Story can be dropped from the project without affecting the overall project delivery.
• Each Story is small enough and all Stories are typically pretty homogeneous in size, which
means that you can focus on their value, instead of their cost when making a decision. Value
is an important input for decisions (actions), and can be easily assessed by discussing the
use/benefit of a particular Story directly with the customers/users.
• By making Stories small you also get faster feedback on the progress of the project. The long
term rate of delivered RTS’s should converge to 1 RTS per team member per day. When the
number of delivered RTS’s is zero for one team more than 1 or 2 days you know you have to
act.
How does this help Carmen? Let’s take a look.
“I need to find a way to measure the real progress of this project. All these requirements that are in
progress really give me no information about what is actually ready to go, or what is just started. Where
could I find ideas on how to measure progress?”
It is dark outside, all her colleagues have left for the day, but Carmen is stuck. She’s been scratching her
head to come up with a verifiable progress metrics for her project. There are only a few days left to the
progress report meeting with the customer. A lot is at stake.
72
38
More on Earned Value Managment: https://en.wikipedia.org/wiki/Earned_value_management
74
How do you recover from a situation like this? How can the use of #NoEstimates help get a
project on track? That’s the topic for the next chapter.
76
CHAPTER 5
“Y
ou’ve reached Herman, how may I help you?”
“Herman, hi! It’s Carmen.”
“Hi Carmen. What’s up? Are you at the office?”
“Yes, I meant to ask you if we could … Er… have a chat…”
“Sure, when?”
“Right now?”
“Wow. Must be something important.”
“Yes, it is…” Carmen said, sounding unusually serious.
“OK, I’ll come right over.”
Carmen had just left the meeting with her boss. The stakes were very high. She had committed
to show progress in the project during the meeting next week. How can she define progress in a
way that is actionable? How can she ensure progress in a project that was almost two months
in, and had a flat line of Running-Tested-Stories (RTS)?
77
“Herman, I have a serious problem that I need your help with.”
Herman stepped back and asked: “Erm, OK. What problem?”
“I presented the RTS line for the Big Fish project to my boss. The line was flat. We have already spent
almost two months on this project and have nothing to show for it”
“You… you did what?” Herman looked shocked.
“Yes, I finally read up on that #NoEstimates ideas that you have been talking about. I must confess I
thought that was just airy-fairy stuff, but I did it. I applied it to my project. I broke down the requirements
into INVEST Stories. I plotted the progress by Running Tested Stories (RTS) and the line is flat! What
should I do now?” Carmen looked accusingly.
“Well, why didn’t you ask me before doing that? I could have told you from the start of the project that
your RTS line would be flat at least for the first few months. That’s how waterfall projects normally
behave. A lot of work on developing separate horizontal layers of the software that, hopefully, at the end
come together in actual running software.” Herman tried to explain.
“I know, I know. You told me that same story many times. But now it is a real project…” Carmen
stopped. “I’m sorry Herman, I did not mean to say that. I’m just stressed out. My boss allowed me to use
your #NoEstimates approach, but now I need to show progress in 1 week!”
“OK, let’s start from the beginning, Carmen. Describe the situation to me.”
Carmen explained the project situation, just like she had done minutes before to her team. Herman looked
concentrated, asked a few questions and then stated:
78
“Looks like you need to start cutting scope out, or at least delay work to the second delivery later this
year.” Herman looked convinced.
“How can you say that? I mean, we just worked on this project for a few months, the whole project may
take a lot longer. It’s just…” Carmen hesitated.
“Just what?” Asked Herman. “You need to be honest with me! I can’t help you if you don’t tell me what
is at stake.”
Carmen needed Herman’s help. Herman had been managing projects for at least as long as she had. And
he had applied #NoEstimates in all of his projects. Sure, all his projects were relatively small because no
one would trust him to manage a large project on account of the unorthodox #NoEstimates approach he
used. But the stakes were high and Carmen’s mentor, her boss, was not a viable alternative to ask for
help right now. Not after she made the strong statement about progress earlier that day. Carmen decided
to tell him everything. Once she had told Herman everything…
“Wow, that’s heavy stuff!” Said Herman and sighed. “Anyway, I know you need my help, so let’s get to
work.”
“But, you have your project ongoing, don’t you need to check your calendar?” Asked Carmen, not
believing her luck.
“My projects are easy, the teams have a clear way to check progress and they can make scope decisions
without me. I’ve built a system for them that they can easily use. The truth is that most of my projects run
very well on auto-pilot.” Said Herman with a wink. “This project however… Let’s just say that it will be a
challenge to get it on track, but I believe we can do it.”
Herman picked up a piece of paper and started asking questions.
Herman wants to help Carmen, but before he can do that, he needs to understand what is at
stake. Both in terms of project delivery as well as short-term customer relationships. Here are
the questions he will ask Carmen:
1. What are your intermediary deliveries going to be used for?
2. When does the project need to go live with the first release?
3. What does the customer expect to accomplish with that first release?
4. How many, and which, Running Tested Stories (RTS) do you need to deliver until that first
release?
5. How many RTSs have you successfully delivered during the last 2 months (the length of the
project until then)?
With these questions Herman is trying to establish the following:
1. What is the most important value to be delivered by the project from the customer’s
perspective? This may include a significant cost-saving functionality;; a new Feature that will
make the product win awards, or something that is otherwise significant for the customer.
2. What is the amount of work that needs to be completed in number of Stories to be delivered?
Note that without the INVEST properties for each Story we could not use the number of
Stories to assess the delivery rate or assess future progress. If each Story is only complete
when an arbitrary number of other Stories are delivered, then all those Stories need to be
delivered before we see progress.
3. When should the next delivery of the project happen? Delivery means something that will go
into use by the customer. You may have many project deliveries during the whole length of
the project, but those will be internal or testing deliveries.
With the answers to questions 2 and 3 we can build a progress “yardstick”. For example, if you
have 10 weeks to the next delivery and you have 20 Stories that should go into that delivery,
you know you need to deliver an average of 2 Stories per week to make that delivery. If you
79
deliver less, you should then evaluate the scope and make the necessary reduction. If you
deliver more, you are on target and may be able to deliver more functionality at the end of the
10 weeks.
However, the first question about the purpose of each release is the most important. By
understanding the goal of your customer you will be able to “steer” the delivery by evaluating,
prioritizing and ultimately removing Stories from that delivery.
Without an answer to the first question, the most important tool for the #NoEstimates
practitioner (scope management) will not be available.
“Wow, we have way too many things to deliver for the first delivery! No way I can show this graph to the
customer when we have the progress review next week. He’ll think we haven’t done anything!” Carmen
had just realized the extent of the project delay. There were too many Stories to deliver, even for the first
release! Especially when she considered that she had zero RTSs delivered so far because of the layering
of requirements and implementation.
“But the first action that you need to take seems clear Carmen,” said Herman, and waited for her
reaction.
“Is it? I can’t see what to do, I feel overwhelmed,” replied Carmen.
“That’s OK. It’s normal to feel overwhelmed. After all, you just discovered that your project is in
jeopardy. But now you know that you don’t have visibility to the rate of RTS delivery,” tried to lead
Herman.
80
“Precisely! I don’t know what our progress rate is because we haven’t yet delivered a single RTS, we’ve
worked in many requirements, we’ve worked for months and have nothing to show for it.” Carmen was
frustrated.
“Don’t despair Carmen. This is not good news, but it is actionable information.”
“Actionable in what sense? I don’t get your point.” Carmen sounded angry.
“You know that your first action should be to find what is your project’s rate of progress,” – Herman
said, “until then you are flying blind, so to speak.”
“Right, but how do I do that?”
“We need to get your Stories to be small enough, the current Stories are too large to give you any insight
into progress. We have to make those Stories smaller. What Stories are already in progress?”
“These here at the top of the list, I’ve highlighted them,” said Carmen, while pointing to the list of Stories
she had created the previous night.
“Right, let’s make sure those are small enough. We’ll worry about the rest later”
“And how do I do that?”
“Simple. Take this first one: As an enrollment nurse, I want to add the health record of my patient to the
database, so that the doctor can later read the answers to the questions we ask when the patient arrives to
the hospital.”
“How would you break that down?” Asked Carmen curiously. “I mean it can’t be smaller than that,
right? That’s a pretty simple Story, and it will probably take multiples weeks to get it implemented
because we have the UI team involved, then we have to run some tests with the nurses, and the doctors.
Then we have to run a live test, whereby a business analyst will actually be at the hospital to play the role
of the enrollment nurse and test that the system actually works, etc.”
“Wow, calm down, you’ve covered many things already that we can use to split this Story. Let’s take them
one by one. Do you really need the UI team involved before you start designing a UI for this
functionality?” Asked Herman.
I have a personal experience with an 18-month project. There were 30 people in that
project in three different teams. When we looked at the data we saw that there were
between 1 and 3 Stories delivered by every team in each 2-week period.
Even though there was some variation from week to week, a consistent average of 5 to 6
Stories were finished every two weeks by the three teams.
As we compared that to our backlog (which contained about 300 Stories) we realized that
there was an obvious risk of not delivering 90 to 125 Stories over the next 35 sprints (2
week periods). So we decided to focus on the most important 200 or so Stories as soon
as possible. After prioritizing the 200 most important Stories we just ourselves: “does this
Story feel like it could fit into a 2-week sprint?” If the answer was yes, we took it in, if not,
then we broken it down further. This was what some will call “blink estimation”, and it
worked for us in that project. Not much time was wasted in those conversations;; the goal
was to get started doing the work to assess if we were indeed able to deliver that Story in
2 weeks.
Nine months into the project, a working version with roughly 120 Stories was available.
The company decided to go live and the project was stopped while the company re-
planned and focused on a more important project with Features that made more sense
than the ones that were identified and committed a year ago. There are a lot of lessons to
be learned from this story!
Ángel is right, this short story has many lessons to be learned. One such lesson is that it is only
when we start working on a Story that we actually know how long it will take to deliver.
Another lesson is that breaking down Stories helps us assess progress at the project level
faster, and make the necessary (and inevitable) scope decisions. Not all Stories are critical for
any project. Discovering which are, and delivering on those is where the value really is.
Finally, having a consistent rate of progress is more important than estimating a project. This
consistent rate of progress will help us steer the project in a very concrete way: reduce work or
re-prioritize work based on actual progress data, instead of a guess at a plan that will invariably
change. This consistent rate of progress will be a key tool for Carmen as well.
In her project, Carmen had to deliver visible progress information in 1 week therefore she did
not have the luxury of waiting several days to complete one Story. Her goal was to deliver
several Stories that week so that she could show progress as well as assess the time it takes to
deliver multiple Stories, which would in turn help her forecast future progress.
Slicing Stories to be small enough is a critical skill upon which successful software projects
build. There are many techniques that you can use to achieve a decomposition into INVEST
Stories that are small enough for your needs. In this example we will take the Story at the top of
Carmen’s backlog to explain some of the techniques.
82
1. Slice along functional dependencies
In the Story above Carmen mentions a dependency on user interface design. This is a classical
example of functional dependency where one team (the developers/testers) is dependent on the
work of another team (User Interface specialists) before they can complete the work. We can
slice the Story so that we create a clear division between those two types of work or functional
expertise. If we were to use this technique the resulting Stories would be
a. First, the original Story now without a dependency on the UI: As an enrollment nurse, I
want to add the health record of my patient (using the draft user interface), so that the
doctor can later read the answers to the questions we ask when the patient arrives to the
hospital
b. Then, the second Story with the dependency on the UI: As an enrollment nurse, I want to
have the User Interface optimized for information input when I add the health record for
my patient, so that I can concentrate on asking questions and documenting the answers.
Note how the first Story can be completed without involving the User Interface specialists, and
therefore be quickly completed;; while the second Story focuses on the role of the User Interface
design for that particular user (optimize for information input)39. The second Story could focus
on reducing the “movement” needed to introduce information by, for example, designing an
interface that guides the nurse through the enrollment process in a way that does not require
the use of a mouse.
2. Slice to separate quick from time-intensive functionality
Another possible division of the original Story is to separate the quick implementation aspects
from the time-intensive ones, in order to be able to complete part of the work by separating what
39
Editor’s note: It is worth noting that the ability to separate these stories hinges on skills like:
Design Patterns;; Automated Unit Testing;; Software design;; and others. These skills are usually
not part of the skill set HR personnel look for when recruiting programmers. They are never part
of the skill sets specified when consultancies and clients make business deals. The ability to
slice stories hinge on a lot of other skills. This may cause problems if no one is aware of the
need for those skills.
83
can be done quickly from what requires a longer implementation cycle. In this case we could
assume that the database – which is used by the existing legacy application – will require much
more work to be completed, so we may decide to separate the input (data entered by the
enrollment nurse) from the database persistence strategy (entering that data to an existing
database that interacts with other applications beyond our control). The new Stories could look
like this:
a. As an enrollment nurse, I want to create the health record of my patient (using a
temporary data storage), so that the doctor can later read the answers to the questions
we ask when the patient arrives to the hospital.
b. As a doctor I want the data that is entered by nurses when receiving a patient at the
hospital to be available in the same application that I use for prescriptions, so that I can
easily review patient information during the consultation.
In this division of the Story we see that the data entered by nurses is kept in a different storage
solution (maybe a temporary database), and then we add another Story that changes the
storage strategy so that the data is finally stored in the final database. This strategy for slicing
may be useful if the operational implementation of database changes is a common bottleneck
for the organization.
This approach may add work to the project, however, it is also an effective risk mitigation
strategy. When you follow this strategy, you may decide at some point to go live with the
temporary solution (the temporary storage in this example), and later change the
implementation, or pursue other high value Features instead. Not being able, or willing to use
this strategy may lead your project into a death march: where you are committed to implement
the permanent solution, but can’t deliver anything until such solution is ready. Add some
dependencies to other functions (like the “storage team” in the organization and you have in
place the ingredients for a death march.
3. Slice along user/role separation
Not all acceptance criteria need to be included in one Story. A strategy for slicing may be to
explicitly exclude some of the user-specific acceptance criteria into a Story to be implemented
later so that we can quickly show progress and receive feedback. The remaining Stories can be
added to the backlog and prioritized accordingly. One example is the live test that Carmen
referred to in her explanation, as well as the changes we expect to come from that live test.
Implementing this slicing heuristics could give us the following Stories
a. As a nurse lead user (a user that tests the product for the nurses), I want to add the
health record of my patient, so that the doctor can later read the answers to the
questions we ask when the patient arrives to the hospital.
b. As a enrollment nurse (the actual nurse at the hospital), I want to have an intuitive and
quick input method for the information I collect from the patients, so that it is comfortable
to enter information even in time-critical patient situations.
In the example above we’ve introduced a few concepts (nurse lead users and time-critical
patient situations) in order to separate out the aspects that affect the applicability of acceptance
criteria. By separating out the performance and user interface optimization into a different Story,
we are able to deliver some work without performing the live test, one of the original acceptance
criteria.
Another possible approach would be to separate the mandatory form (without which data could
not be entered) from the final form design implementation. You can start by tackling the basic
database operations, and later on invest more time (if you have time) in improving the user
interaction design for the form. While the final design may significantly improve the functional
value of the application, you may still go to market with the initial implementation, and later add
84
the necessary changes. This approach has the advantage that you will have feedback from the
users and will therefore understand better what needs to be improved with the new design.
On the other hand, if you run out of time, you can still go live with the original implementation,
significantly reducing the risk of not being able to deliver the product to the market.
• Each slice is independent (the I in INVEST). In other words, each Story can be delivered
independently from other Stories, and accepted on its own.
• Even if each Story may not be “sellable”, it must be testable and final, i.e. the team can make
sure that a particular User Story has been successfully completed according to a Definition of
Done. This Definition of Done is a litmus test that will allow you to classify tiny parts of the
whole project as completed, before the whole project is done.
The focus on completing thin slices of functionality every day (or as often as makes sense for
your project) is what allows you to collect the progress information you need to assess progress
in your project, and therefore show progress towards the final goal.
Early in each project, your top priority is not to ship something meaningful to your customer, but
to obtain information on capacity, throughput, and backlog size. If you are able to slice your
Stories so that you can deliver 1 or 2 Stories per day, that will dramatically increase your ability
to both track, and steer your project! But even if you are not able to reach this state, being able
to deliver multiple Stories per team for every iteration (in many cases iterations are about 2
weeks long) is also a good start to reduce your estimation needs and have more tangible
progress information.
85
For more heuristics on how to slice Stories and some examples, look at the resources at the
end of the book and the links to blogs and sites that explain how other people are able to slice
large pieces of work into thin slices of functionality.
Now, let’s get back to our story.
“But Herman, now that I have these 10 small Stories instead of the one we started with I still have a
problem: I don’t know how much time all the rest of the work will take! This was only one Story!”
Carmen was not convinced.
“Absolutely correct! In fact you will not know how long the whole project will take until you have either
the whole backlog of INVEST Stories sliced up (a bad idea) or until you have enough historical
information that you can infer the cycle time for every backlog item, independently of size,” Herman
explained.
“Oh, do you mean that this slicing of one Story is just a way to have visible progress for this one Story,
but not for the whole project?”
“Yes!” Herman answered.
“But I need to know the progress at the project level, not just for this Story.” Carmen was still not
convinced.
“I understand Carmen. But before you can assess progress for the whole project you need to first
understand what is the throughput of your project. In other words you need to know how many of those
INVEST Stories you created last night actually get delivered in a week.”
86
“OK, let me see if I got this. I will work with the teams to implement these thin slices of my INVEST
Story; by the end of the week we’ll have an idea of how many slices of an INVEST Story we can deliver.”
“Correct!” Confirmed Herman.
“And then I’ll just guess how many thin slices each of the other INVEST Stories has? Isn’t that
estimating?” Carmen asked.
“Not really, but that is something we need to cover next,” continued Herman. “Right now the most
important step for us is to get your project to show some progress. The data we get when we show
progress will help us to predict or forecast future progress, but we will need more of those INVEST
Stories to be delivered before we can be sure we know the actual progress rate.”
“But doesn’t that mean that – even if we deliver a few of the slices we just created – we will not know
when we will deliver the Features we need for the first release?” Carmen was puzzled.
“The idea with #NoEstimates is that you should focus on value, and use the available data to forecast
future progress. But the first step is to focus on value to be delivered. Once you are clear on the value you
need to deliver you should then worry about forecasting future progress. The first question is: what is the
most important piece of work we need to deliver now? You just answered that. Let’s focus on that first
and talk again tomorrow,” Herman stated. “I have to run, meet me for breakfast tomorrow morning,
we’ll look at the rest then.”
Carmen was not happy, but she trusted Herman and was happy to have been able to slice the INVEST
Story – which seemed huge – into smaller items that she was confident the team could deliver in a shorter
time. Her next step was to get the teams to start on the thin slices of functionality she and Herman had
just defined.
87
40
Thank you to Troy Maggennis for highlighting how important it is to recognize that a small
number of data points or samples is enough for us to be able to make useful predictions
regarding future progress. For more on the problem of inferring a discrete uniform distribution
through sampling see the German Tank Problem entry in Wikipedia, which explains that the use
of sampling and statistics can improve on human estimates:
https://en.wikipedia.org/wiki/German_tank_problem
88
Figure 9 - Run chart of Stories delivered by one team in a long (21 iterations) project. Notice how useless it
would have been to set a target of 10 User Stories for this team...
In this project the average velocity during the first three weeks was enough to predict very
accurately how many RTSs the team would deliver over 21 weeks. In your project that may not
be the case, so you should constantly update your forecast based on the latest information you
have.
The graph below shows a shorter project where the first three iterations (not weeks in this case)
could not be used to reliably predict the number of RTSs that project would deliver. However, as
the project progresses we see that the velocity stabilizes. By updating our forecast based on the
latest data available, we progressively become more accurate in our forecasting.
89
• How many User Stories can a team deliver on an average week? (The User Story velocity).
• How many Features can our project deliver on an average week? (The Feature velocity).
Both these metrics will help you forecast the progress for your project. While the User Story
velocity metric will help you assess when a certain Feature might be ready;; the Feature velocity
will help you assess when the project might be ready.
What this means is that, even if you estimate, you are very likely to get it wrong and chances
are you will get it wrong by under-estimating the work that needs to be done.41 Because we are
more likely to underestimate the duration of a task, the delays in the project continue to
accumulate even if some tasks are finished quicker than estimated.
How to avoid this phenomenon? Wrong question. We should instead focus on defining work
based on how much time we think it should take. For example, if a project were likely to
generate a maximum income of $100,000 it would be a bad idea to spend more than that to
implement it, independently of what your estimates say.
When it comes to following progress for a project this concept is applied by hard-limiting (time
boxing) the duration of certain parts of the work. If all Features take one month to deliver (by
definition or time box) you know that in a year you will deliver around twelve Features (assuming
you work in one Feature at a time). The project may deliver a few less Features, or a few more
Features, but close to twelve.
However, if instead you try to estimate the Features to take 1 month you will be a victim of
Parkison’s law, which dictates that each Feature will most likely take at least 1 month to deliver.
Let’s take an example. When delivering an IT ticketing system (to handle requests coming in
from the users of the services IT provides) we may decide to list a number of Features and then
estimate their size. Alternatively, we may decide to list Features and not worry about their size.
As long as all Features are increments of value for your customers, what matters is that you
start immediately delivering that value.
As the teams develop the Features, the Features are sliced into smaller Stories, with each Story
being in itself an increment of value.
41
One significant reason for this large spread for task estimation is that we tend to estimate the
actual work it takes to complete the task, but are unable to predict the time that task spends
waiting to be picked up. In Chapter 1 we cite Troy Maggennis email where this phenomenon is
further explained.
91
When we get closer to the end of the mandated one-month Feature calendar duration, our focus
will turn to making the Feature under development “sellable” (i.e. ready to be used by end-
users), even if not all the functionality could be delivered. The functionality that did not fit the
one-month mandated calendar duration for the Feature is said not to “make the cut”.
This functionality may still be valuable or not. If the remaining functionality is considered to be
valuable it is then grouped into one or more new Features (also with the same mandated
calendar time duration), and added back to the list of Features to be developed. If, on the other
hand, the remaining functionality is not considered critical, then it should be dropped from the
list of work to be completed, or at least placed with low priority on that list.
As we add the remaining functionality back to the backlog we will see the remaining work grow.
This phenomenon is very normal and to be expected in software projects. In fact the work to be
done in a software project will increase unless the project team makes a decision to actively
remove work from the backlog. This constant addition of work to the backlog of a project is one
of the causes for schedule overruns and even has a pet name in the software industry: “scope
creep”. Of course, that name does not reflect the reality of software development. Adding work
to the backlog is not “scope creep”, it is just a natural outcome of our constantly changing and
improving understanding of the problems we need to solve with the software we are creating.
Instead of “scope creep”, we should really use the term “value discovered”.
Mandating the maximum calendar duration for an item is also used for User Stories. In my
practice I advise teams to have 1-day User Stories. The reason is simple. If you were wrong
about the time it takes to develop your User Story you will know it already tomorrow! And can
therefore act to either remove the obstacles or reduce the scope of that User Story. Following
this maximum allowed calendar duration for Features and User Stories requires practice in
slicing larger pieces of work into small increments of value. Don’t be discouraged if at first you
don’t succeed. Rather than increase the mandated size of a Story, practice slicing your User
Stories more often, ask for help from a more experienced colleague or ask Google. Someone
out there has already cracked that nut and can help you do it. See the resources at the end of
the book for ideas on how to improve your skills in Story slicing.
Figure 10 - Plotting the velocity over time for two teams. Above: throughput for a team that explicitly limits
the calendar duration of their Stories. Below: the velocity for a team that does not limit the calendar duration
of their Stories.
There is no magic here. The reason limiting work to a fixed time works is simple: it forces you to
increase the frequency at which you collect feedback, and evaluate progress.
The moment you realize that a Feature or a User Story cannot be fully delivered within the
allotted time is the moment you get to decide whether to accept that additional work or to
discard it. That is a powerful moment in your effort to contain the project scope and focus on the
most valuable work. Why wouldn’t you use it?
Figure 11 - Accounting for the Stories delivered within one Feature during an iteration. Notice that the
Feature increases in number of Stories as time goes by, this is a very common scenario. Work is discovered
as previous work is completed.
“But I don’t know how much work is left. How many User Stories does each of the Features to be
developed have? I don’t know.” Carmen was not impressed.
“That is correct, but let’s review our goals for this week. We wanted to show progress. Here you have it!
You have software you can demonstrate to the customer and you have a pretty good understanding of how
much software you can deliver on a regular week. We have to expect that this User Story velocity will
change. If the team, the technology or any other key factor in your project changes your velocity will
change. That’s normal. But you have a ball-park figure that helps you forecast progress.” Herman
continued, convinced of the value of the data collected.
“But Herman, I need to show progress at the project level. All I have now is progress at the Feature
level.” Carmen pointed out.
“Correct. You can only show how long this one Feature took and is likely to take. However that
information is valuable for the project as well. As of today you can assume that every Feature in the
backlog will take between one and two weeks to deliver.”
“No I can’t!” Carmen interrupted. “We’ve worked only on one Feature, which is not even completed.”
“Sure, but you can speculate based on that observation. Right? I mean when you look at the backlog, do
you think this was the lowest effort Feature you have in the backlog?” Herman asked.
“No, this is by far not the smallest Feature.”
“Is it the highest effort Feature you have in the backlog?” Continued Herman.
“No, this is quite large, but not the largest.”
“There you go! Now you can speculate that this Feature is somewhere in the middle, which gives you a
good range for all the other Features. Let’s assume, for the sake of argument, that this Feature is about
average in effort. Now you define an interval for the other Features. Let’s say Features will take
anywhere between one week and three weeks to deliver. Take those numbers and multiply them by the
number of Features you have in the backlog, what do you get?” Herman waited for Carmen’s answer.
“Well, making those assumptions I could say that the Features we have left will take anywhere between
one year to deliver to four years – which is unacceptable!”
“Wait!” Herman interrupted, “you are going too fast. Even in the case of one year being too much you
have not yet applied the most important tool you have as a Project Manager.”
“What’s that?” Carmen was puzzled.
“Scope Management!” Herman waited for her reaction
95
“Are you joking? How can Scope Management help me when even the lowest end of the interval is too
much?” Carmen was not impressed.
“Good point. But you are talking about Feature progress information. Don’t forget that each Feature
itself can have its scope managed, so that even if you can’t remove some of the Features in the backlog
you can manage what each Feature will include in order to meet your target schedule,” Herman
continued.
“Oh, I see! What you are saying is that I should forecast progress based on the data at different levels of
granularity. At User Story level so that I can manage the scope for a Feature and at the Feature level for
the project…” – Carmen explained.
“Yes! Now you are getting the hang of it.” Herman continued, “the idea is that you have to collect the
information you need to make significant project decisions, and as you know, scope management in a
project is one of the few things the project team really has power over; especially if the team can forecast
progress during the early days of the project. After all, the customers are never happy to drop Features
or even Story-level functionality at the end of the project, but I’m sure they will consider your suggestions
if you bring them early enough in the project.”
“Yes, of course. Now I understand what you mean by ‘showing progress’. You actually meant that we
have to show enough to help us forecast future progress against today’s backlog so that we can see if we
are over the schedule at all times!” Carmen looked happy.
Herman continued, “yes! And now you can bring actionable information to your boss when you review
the progress of this week! The first question you should ask yourself now is how many Features you
96
would need to cut out of the backlog to be reasonably sure, according to your forecast, that you can
deliver the first release on time.”
“Great! Thank you Herman, now I need to go prepare the presentation.” Carmen left the room with
decisive speed.
Here some of the key takeaways from Carmen’s story so far:
1. Use multiple levels of granularity to establish flexible requirements.
2. Use historical data to assess progress and forecast future delivery.
3. Cost is a multiplier of time (mostly);; the only real variable the project team can control
actively is value (in the form of scope).
5. Build histograms. Keep track of your average duration for Stories and Features. Simply
record the day the team starts to work on each Story or Feature and the day that Feature or
Story is complete. This information can later be used for progress forecasting.
6. Use the average cycle times for Stories of different size to start producing Story-based
forecasts. Count how many Stories go into every sprint and make a histogram-based
forecast of how long will it take. Use it also to forecast small projects (one to three months)
that can be sliced into small-medium-big Stories. If you can prove these numbers to be at
least as reliable as the estimations you gave, you’ll have the case for #NoEstimates right in
front of you!
7. Finally, work with Stories as if they all had the same duration. Simply count Stories and
project progress based on how many Stories the project was able to deliver in the past:
average Stories delivered per iteration or per week.
Try each of these steps in your own project. Some steps will be easier, but when you find a step
that is hard to implement ask “why?” In some cases the requirements will be the impediment –
maybe they are still horizontal requirements? In other cases the hard part is to learn to slice the
Stories. In fact, slicing Stories is probably the most effective tool to manage scope, and very few
projects are using this approach effectively today. I call this the “lost art of Agile Software
Development”.
But the next question is: even if you can slice the Features and Stories into smaller work items,
that you can deliver regularly into a production-like environment, how can you use that
information in a project negotiation? Carmen’s next challenge is just that: how to use the
actionable information she collected to negotiate the project delivery with the customer. Let’s
see how she does that in the next chapter.
98
CHAPTER 6
“C
armen, I’m impressed with what you were able to do during this week. Your presentation
of the project’s progress was very clear, and is just what we need to make good
decisions.” Carmen’s boss smiled.
“Thank you! I think I’m starting to get the hang of these #NoEstimates ideas, that Herman has been
talking about, and I really think it will help…”
“What?!?!” Interrupted her boss. “That’s not acceptable! You can’t be talking about that to the client!
They will think we are not following the process and may sue us!” Her boss was not amused.
“But, that’s the truth. It is thanks to Herman’s ideas that I was able to finally get a grip on the real
progress of the project. Without his help and his support we would still be in the same situation as we
were last week. Why can’t we say this to the customer?” Carmen was not happy with the need to hide
#NoEstimates from the customer.
“Carmen, I’m sure you mean well. And I’m sure that whatever ideas Herman has told you they have only
helped you realize that you needed to work harder. This #NoEstimates is simply not credible! Why do you
think I transferred Herman out of my team? We can’t run the risk of him talking to a customer about his
ideas, we’d lose all credibility we have in the market!”
99
“I see…” Carmen’s mind was racing, she was at the same time disappointed and angry with her boss for
not listening and dismissing the ideas that she had been learning about. Maybe this disappointment was
due to her own incredulity before she went through the process of losing faith, and then regaining it again
by looking at the actual data that she had been able to collect in the last week.
“Look, you’ve done a great job this last week.” Her boss continued, “don’t spoil it by scaring the
customer with immature and irresponsible ideas. I’ve been in this industry for many years and have seen
many successful projects. I know estimation is a key practice in any project. All the indicators of project
failure point to bad management, not the estimation process as the root cause for failure. Keep your game
together and work hard, I have faith in you.”
At that moment, Carmen would realize later, a bit of her died. She stopped respecting the knowledge she
knew her boss had. She had found a different way to look at project management, and specifically at
assessing progress over time. And she was not about to throw that away just to please her boss. She knew
now that Herman was right, and she was about to prove her boss wrong. But before that she would need
to improve her diplomatic skills to counter her boss’ unwillingness to deviate from the old process.
Client meeting day had arrived. It was show time!
The meeting started with Carmen giving her overview of progress as she had prepared the day before.
She did not mention #NoEstimates even once, but gave a clear indication that the project would very
likely be late.
Carmen showed a graph illustrating progress with a burn down chart that only mentioned “Work to be
done” and “Months”, as had been agreed with her boss the graph did not mention Features or User
Stories.
100
Figure 12 - Carmen's projection for Big Fish project. The optimistic and pessimistic projections.
“The most optimistic expectation right now is that the project would, with the current scope, be finished
in 16 months or around 12 months from now.” Carmen explained, “as you can see in this forecasted line
of progress.”
“Carmen,” the client interrupted, “what is that other line that ends 4 years from now? What is that
referring to?”
“Great question, and well spotted. That other line is the worst-case scenario. Given what we know now
about the progress in the project, it could take up to 4 years to deliver the functionality that we have in
the plans today,” Carmen added.
“Joseph,” said the client, turning Carmen’s boss, “I believe we had an agreement on the live date for the
project, didn’t we?”
“Yes, we did Mr. McNeal. And I assure you we still have that agreement. What Carmen is showing is
important information. As we are at this early stage in the project it is important to have a discussion
about what is possible, and that is what we are trying to do here.” Carmen’s boss tried to help Carmen
save face.
“Indeed, Sir.” Carmen concurred, “there are certain measures we can take to try to increase the
probability of delivering within the original date, but we will have to do some work to analyze and decide
which requirements we will either remove or delay”
“I don’t like the idea of removing requirements as this is pretty much the minimum set of requirements
that we need in order to have a successful launch. Especially since the elections are shortly after this
system is scheduled to go live. I’ll have Travis contact you about the work he has done. But for now I
want to have a closer look at progress. Please send us updates every week,” finished Mr. McNeal.
101
“But, Mr. McNeal. There is so much work to do, preparing reports for your review every week will hinder
our ability to manage the project at the best of our ability,” Carmen’s boss added.
“OK, let’s make it every two weeks then. By the way, I liked the software demo you did today, let’s have
one of those every month.”
“Certainly, Mr. McNeal!” Carmen’s boss added with a forced smile.
42
Research into the ”on time” delivery of software projects shows that a large % of projects are
delivered after the agreed delivery date. For more data see Chapter 1 of this book.
102
to compromise, and when the technology is still flexible enough to be able to manage the scope
effectively (very few dependencies are created, unlike at the end of a project where removing
some functionality may be harder than adding it in the first place).
The key for Carmen now is to find out how to implement an effective scope management
strategy.
Carmen knew she had to start reducing the scope of the project if she was going to deliver that project on
time. Now was time for action. She felt confident that she would be able to reduce the scope of the project
after talking to Travis the Business Analyst, so she rang him up and set a meeting for the next day.
The next day, the meeting started with the bad news.
“Travis, I need to reduce the project scope massively. We have a very low chance of getting this project
done with the current backlog size.” Carmen stated.
“OK, I can see that.” Travis concurred while looking at the progress burndown that Carmen had shown
him just a moment ago.
If I understand this graph correctly we need to remove at least the equivalent of 2 months of work given
the best estimate, right?”
“Actually Travis, this is not an estimate. It is a forecast,” Carmen corrected.
“What’s the difference? If it gives me a delivery date it is an estimate.”
“There is a big difference which we can’t go into right now,” Carmen stopped short of mentioning
#NoEstimates. “But for now I can say that this is a forecast based on actual data, not estimations made
by the team.”
“Oh, you mean this is like that Earned Value Management graph but upside down?” Asked Travis
referring to the fact that the progress lines were pointing downwards.
“No, this is not the Earned Value curve. It is concrete, validated progress data, but never mind. The
important thing is that the data we have tells us that we will need to remove between 50% to 80% of the
existing set of functionality.”
Travis looked at Carmen and said: “Are you trying to get me fired?”
“Look, Travis. I know this is a lot, but if you really want to have this project live 10 months from now we
need to scale down the expectations.”
“Carmen, I may be able to negotiate the scope down a bit. But never 50% let alone 80%.”
“You do realize that we are fighting a losing war trying to get all of this scope delivered, right?” Carmen
interrupted.
“Sure, but that is your problem. You’ve committed to this bid, now you need to figure out how to pull it
off. From the list you have there I may be able to remove 5-10 Features, if that is what you call those, but
not more!” Travis continued.
“OK, please work with your management team to remove as many as possible and get back to me later
this week. I’ll see what I can do on my side.”
“OK, will do. Talk soon,” – said Travis as he exited the room.
Carmen lost the optimism she had found in the meeting with Mr. McNeal the day before. The full
implications of the project being late were just now hitting her. She felt as if she could do nothing to
improve the situation. It was time to get back to Herman. Maybe he had some ideas.
103
As she walked to Herman’s office, Carmen remembered the conversation with her boss about
#NoEstimates and decided to meet Herman outside the office. The last thing she wanted now was for her
boss to think that she was still using #NoEstimates methods and tools.
Carmen picked up her phone and dialed Herman’s cellphone.
“Herman, hi! Carmen here. Can we meet outside the office today for a discussion on #NoEstimates?”
“Sure Carmen! I’m going to a #NoEstimates meetup later today. Would you like to join?”
“Sounds like a plan,” Carmen replied, “when and where?”
“Downtown, at the Ritz at 7:30pm. Let’s meet just before the meetup, there’s one person I want you to
meet.”
“Oh, great. See you then Herman.”
Later that day, at the Ritz…
“Carmen, over here!” Herman shouted.
“Hi! I was looking for you.” Carmen was happy to be out of the office, and to be able to again talk freely
about what was worrying her.
“Carmen, I want you to meet Julia Matthews.” Herman introduced the speaker for the event. “Julia has a
long experience in project management and is one of the very few experienced #NoEstimates
practitioners. I briefed her on your project and she be may be able to help you.”
After the introductions, the conversation started with a quick overview of the project and the conversation
that Carmen had earlier that day with Travis, the Business Analyst.
“So, I understand that I need to reduce the scope of the project to be able to meet the committed release
dated. But I don’t see how I can do it when the business analyst himself tells me that he may be able to
reduce only 5 to 10 Features from the backlog.” Carmen reported.
“Carmen,” Julia started. “First of all, let me tell you that you have come a long way. By having
transformed the requirements into RTS’s you have created visibility into your progress that is uncommon
in most software projects today. Congratulations for your work, you have the key tools you need to
manage your project successfully. That list of Features and User Stories gives you a concrete list of
valuable items that your customer wants, and you have a concrete way to measure progress against that
list. Many projects are still measuring progress against a plan. You’ve started measuring progress
against concrete, expected value.”
“Thank you, Mrs. Matthews.”
“You can call me Julia, Carmen.”
“Thank you Julia. But I need to be able to reduce the scope of the project, and now I’m puzzled. Travis
can’t see how to achieve the necessary reduction in scope.”
“That is very normal, even predictable,” Julia interrupted. “People are used to think about project scope
as a list of dependent items, requirements. Usually even a layered architecture is used, and the
requirements scattered in those layers. It is very hard to imagine a project where all the requirements
would be independent from each other when you are used to this layered approach, where requirements
build on each other, and are therefore dependent on each other. It is therefore hard to understand that
when you have a list of Independent items, like User Stories and Features as you defined already,
reducing scope is not only possible, but can be achieved in several ways. For example: you have the
possibility of reducing Features as you asked Travis to help you with. But you also have the possibility of
104
reducing the scope for each Feature separately. I call that Flexible Requirements Management43. I use
the prefix “Flexible” because it is not about managing one list of functionality, but rather a matrix. Let
me draw this for you to try and make it clear.”
• New possible situations in which the existing requirement could be used.
• Requirements that have a direct impact on how other requirements can be implemented, and
therefore expand the scope for those other requirements.
The list goes on. As we know more about the project, the users, the technology, etc., we will find
information that we could not have considered when the project started. That information will
need to be reflected in the work to be done, the requirements list, in the form of additions to that
list.
What I propose is a similar approach to the management of Features and User Stories, but with
the opposite goal. I propose that, as we know more about the project, a Feature or a User Story,
we question the need for that work, and if possible remove that work.
When we understand more about the project or the problem we are trying to solve we can
question if certain Features are needed. For example, when implementing an IT ticketing
system we may have a Feature that calls for the users to log-in and manage their list of open
tickets so that they can review what IT has done for them. Alternatively we can have the list of
the last 10 tickets in each email that we send to the users of the system, therefore removing the
need to have the user-facing web-site. By removing the web-site page for the “open tickets”
Feature we will no longer have to implement other Features, such as user creation, user
authentication, password renewal, etc.
Here’s a way to visualize the project in its different dimensions:
43
Flexible Requirements Management is inspired by a technique that Jeff Patton popularized,
called Story Mapping. Story Mapping is used at the start of a project to envision the product as a
whole and decide what should be released in each of the product releases. Flexible
Requirements Management is the application of the story map concept to the day-to-day scope
management of a project. For more on Story Mapping: http://jpattonassociates.com/the-new-
backlog/
105
Carmen needs to start considering all the possible dimensions of scope before she is able to
realize that, even fixed scope projects, can have a lot of flexibility in the list of requirements, if
that list is expressed as a two dimensional matrix of Features and User Stories.
“As you describe the scope of your project in the form of a matrix, instead of a list you are able to see
possible options for reducing scope much more clearly than if you only consider the list of Features.”
Julia continued.
“Oh, I see. You mean that instead of reducing scope by removing Features, I can also reduce scope by
reducing the User Stories associated with each Feature.”
“Correct.” Julia responded.
“OK, but I don’t have that list of User Stories, so I can’t do that at the moment. And it would take a great
deal of work to go and list all the User Stories for each Feature,” Carmen was still not convinced.
“Don’t worry about the User Stories for now. Your first step should be to look at the list of Features and
find Features that you can remove from the project. Once you’ve done that you review the list again to
check if, by having removed those Features, there are some Features that are no longer needed. For
example, if you remove a Feature that uses a particular database, you may not need to support that
database anymore, which would probably remove related work in other Features or even some Features
related to administrating that database.”
“Oh, I see. You mean that I should first try to list and remove the Features that require a large amount of
work or possibly impact indirectly other Features if they are implemented.”
“Correct,” responded Julia.
“OK, I get that. But, even if I do remove several Features the fact is that I would need to reduce 50% to
80% of the Features. The client is certainly not going to agree to that,” Carmen worried.
106
“When we start discussing scope reduction we never have an easy conversation ahead of us. However,
because you started very early, the client will be able to make decisions that may have a significant
impact on the list of Features. You have to continue that discussion and find the right Features to remove.
It will not be easy, but the alternative is certain failure. And no one, not even the client, wants that.” Julia
assured Carmen. “You’ve taken the hardest step in any project. You’ve started the conversation with your
customer. Now it is time to continue that conversation.”
“OK, I’ll have to give it a try. But even if I remove some Features from the list, I will not have enough to
complete the project on time,” Carmen expressed her concern.
“That is a possibility, but before you get to that point give the Features a good scrubbing. You may be
surprised with what you find. And when you find that Features alone will not be able to impact enough
your project then it is time to take the scope scrubbing to the detailed User Story level,” Julia
commented.
“Apologies. I need to interrupt you. Julia, the session is about to start,” said Herman as he signaled Julia
to enter the room.
“Julia, can I contact you later?”
“Sure, it would be a pleasure to help you Carmen. Good luck and talk soon.” Julia headed towards the
room where the evening’s presentation was about to start.
Carmen was still not comfortable with the situation, but at least she knew what to do next. She would
have a discussion with Travis the next day and use what she had just learned to remove, not only the
Features Travis had been able to remove, but also Features that may have been there to support the
Features that could be removed. Carmen was sure that it would not be enough, but she had to give it a
try. She might be surprised, as Julia pointed out.
The next day at the office Herman tried to meet Carmen several times but was unable to find her. She was
not in her room, did not go to lunch to the usual place. It was as if she had disappeared.
“Carmen, what’s up? I’ve been the whole day trying to find you to discuss what you heard from Julia
yesterday. Are you busy?” Herman asked, surprised to find her in the corridor.
“I am busy, but I’d also like to review with you what I learned yesterday, but we can’t do it here in the
office. Let’s meet later. I’ll explain why we can’t discuss here.” Carmen added while looking to see that
her boss was not around.
“I’ll meet Travis from the Big Fish client today. How about meeting near their office at 5pm?”
“OK, meet you there. But tell me, why is this secrecy about us meeting necessary?”
Carmen felt ashamed as she confessed “Well, my boss told me about his history with you, and how he
thinks that the #NoEstimates ideas are crazy and that I should not mention #NoEstimates to the
customer.”
“Ah! Ah! Well, he is right about one thing: you should not mention it to your customer. It is our
responsibility as professional and competent Project Managers to deliver the projects on time and under
budget. #NoEstimates is our secret weapon to achieve that goal. They will be happy when you provide
transparency they’ve never seen, and the project on time and under-budget. Don’t worry about the label.
Just be transparent and accountable to your client. I have a feeling your boss won’t mind you surpassing
your client’s expectations!” Herman winked, and turned away.
“He is right!” Carmen realized. “I will focus on delivering this project on time and providing more
transparency and accountability to the client, and I even know how to do that now!”
Carmen drove up to Travis’ office to discuss the project.
107
“Travis, hi! Thank you for meeting me on such short notice. As you know we have our next progress
review with Mr. McNeal in 2 weeks. I need to show an updated progress report based on what we discuss
today,” Carmen started.
“Sure. I know that. I did some work since we spoke yesterday. Here’s a list of the 5 Features we can
remove from the scope of the project. I tried, and tried to get a commitment to more Features, but that
was not possible. This is the best I could do since yesterday. We may be able to remove 1 or 2 more over
the next weeks, but for now this is the best we can do.” Travis announced while passing a paper to
Carmen with the list.
“Thank you Travis. I can work with this. I’ll have to review the implications of removing these Features
on the remaining list of Features. Can I come back to you later with questions about these?”
“Sure, let me know if I can help you in any way. But as I said, these are the Features we can remove
now.”
“Thank you. Talk later,” said Carmen as she exited the room. She felt a bit more confidence in the
process since she had that conversation with Julia, but she was not yet fully comfortable with the
situation. She knew those Features would not be enough to bring the project end-date back to the original
12-month time frame. And now she was responsible for the delivery, as her boss had clearly reminded
her. The stakes were high. She needed to act.
The meeting with Herman later that day started with a charged atmosphere.
“I just can’t see how I will be able to pull it off, Herman.”
“Don’t worry about the project release for now. Let’s work with what we have right now. We have a
concrete scope reduction of 5 Features. Where does that leave us in terms of release date?” Herman tried
to cheer Carmen and focus her on the information she already had at her disposal. “Let’s review your
release forecast, do you have that?”
“Yes, here it is,” Carmen pulled out the graph. “The previous forecast as well as the one I created earlier
today, that already accounts for the Features we’ve just removed.”
108
Figure 13 - Current forecast (overlaid on the original forecast), already taking into account the Features
removed by Travis
“Great. Do you see any Features in the backlog that would be unnecessary now that you’ve removed
those other five Features?” Asked Herman.
“Hmmm, hard to say at this point. I supposed I could bring this back to our team and collect a few more
ideas on what Features we could remove.” Carmen was unsure that this was the right course of action,
but she wanted to sound more positive.
“Then do that. You may find some Features that can be removed now that were not possible to remove
before. Then there’s the next level, we have to analyze the next level.” Herman added cryptically.
“What do you mean by next level?”
“What I mean is: at first you can manage the scope by removing Features. Once you are done with
removing Features there’s still a lot of scope that can be removed when you look at the stories under
those Features. There are many ways in which a Feature can be delivered. The stories under a Feature
represent one way to do it, but you can find other ways by thinking about the functionality from your ideal
customer44 perspective,” Herman explained.
“What do you mean by ideal customer? Is that a new concept?” Carmen asked, puzzled.
“No, it is not a new concept, but it links back to the vision of your product. A product exists to serve
several types of customers, but it always has a specific customer type without which the product would
not even exist. That is your ideal customer. When you think about the product from your ideal customer’s
perspective, you will have a clearer focus and will be able to decide what is indeed needed, and what
44
In this context ideal customer is a term used to designate the target customer of the product
or service being developed. This should be as specific as possible, and not generic terms like
consumer or business owner. Examples: a consumer that has purchased from our shop before;;
a small family restaurant owner.
109
could be removed because the ideal customer can use the product without that particular functionality.”
Herman looked at Carmen waiting for confirmation that she had understood.
“OK, let me see if I understood this right. What you are saying is that in a particular Feature there are
stories that include functionality that the ideal customer needs, and other functionality that the ideal
customer either does not need or can live without, right?”
“Right,” Herman smiled, “this is what we call flexible requirements management. We have different
levels of abstraction at which we can manage the scope of the project. Typically projects tend to balloon
in scope, because we discover functionality at lower levels of abstraction that we consider ‘important’,
and just add to the backlog. However, we can use the same approach to remove items from the backlog.
Think of it like negative scope creep.”
“I see… That’s a good insight. But won’t that require a lot of work?”
“Yes, and constantly. But when your other option is to miss the delivery date, I’m sure you can see why it
is worth it,” Herman commented.
Carmen sighed and looked at Herman.
“That means one more long night for me…” Carmen said.
They parted and Carmen went to work on the backlog to find the stories that could be removed from the
ideal customer’s point of view.
• As an employee, I want to be able to submit issues to IT, so that I can fix a particular problem
that prevents me from working.
The Feature above is what I would call a “binary” Feature. Either the employee is able to submit
an issue to IT or not. This simple Feature can have large implications in terms of the amount of
work required to implement it. Specifically the chosen “input” solution (how the issue tickets are
submitted) can make the difference between a simple and very complex and long-winded
implementation.
Taking the Feature above and breaking it down into several smaller Features or stories will
allow us to make decisions regarding the implementation order, or delaying certain parts of the
implementation. Let’s look at an example:
• As an employee I want to be able to submit an IT issue to the IT department so that I can
have a fix for a problem that prevents me from working
• As an IT helpdesk employee, I want to have a queue of issues to handle, so that I know what
items I should be working on at any given time.
110
By slicing the original Feature in this particular way we unpacked the functionality under the
term “submit issues” in the original Feature into two different Features: send submission
(replaces simple submit above) and Queue of issues (replaces the receiving end of the
submission process).
We’ve potentially reduced the scope of the initial Feature (for example no need to have a
system to enter IT tickets, just use email as the submission tool), and we’ve given ourselves the
option to implement a solution based on standard tools. The two Features we created allow for
a solution based on email and a spreadsheet program with shared editing. For example, we
could use Google Docs to manage this queue and get started today!
These two stories could still be implemented with a full-fledged IT issue tracking system, but
that is an option and not a mandatory outcome of the initial Feature.
Slicing Features into separate functional parts helps us actively manage the scope by creating
different implementation options 45that are often implicit and non-negotiable when we have
larger Features in the backlog.
45
For more on options thinking, and the work that inspired this approach I recommend the work
by Chris Matts and Olav Maassen and their book: Commitment http://commitment-thebook.com/
111
It is only when we start to actively manage the options we have (slicing the work into INVEST
stories) that we truly gain control of the work we must complete. Finding the next most important
story to develop is the core of my #NoEstimates approach. Slicing the stories and prioritizing
them regularly is the process. But there is more to that. How do we communicate the progress
to the customer, especially in critical projects? How can we help customers make decisions
regarding which work to keep and which work to delay or drop? That’s the next step for Carmen.
The pressure is increasing and the stakes are high.
112
CHAPTER 7
C
armen was re-arranging her papers repeatedly as she waited for the team to come to the
meeting room. She had prepared the room for the workshop with flipcharts on the wall, the list
of Features on one side and the slices of those Features underneath. She wanted to know if her
effort to slice the Features was understood and accepted by the team. When everybody was in, she started
the meeting.
“Thank you all for coming at such short notice. As you know we have a very challenging project ahead of
us. I’ve been focusing on how we could keep this project on track both from the scope and time
perspective, but also so that we don’t have to work over-time for the next 9 and a half months. No one
would like that, least of all me.” She felt her team’s attention and a huge responsibility at the same time.
“I reviewed the backlog in the last few days, and as you know, concluded that we can’t possibly make the
release date in 9 and a half months with the current amount of work. We have two options, increase our
throughput of Features per iteration, or we can remove content from the backlog.”
“Increase the throughput? Are you serious Carmen? I’ve been working over-time for a week to get some
progress visible to the customer in our next progress report. I can’t possibly work any harder,” Albert
was not amused.
“I understand Albert, and I thank you for your efforts. Without your and everybody else’s extra
contribution we probably would be in big trouble right now. I understand that. That’s why I wanted to
focus this meeting on creating options for us. I would like to review the backlog with you and list possible
Features we could drop based on what was dropped already, and slice the remaining Features to see if
we can find functionality that we don’t need to deliver for the first release. I’m not asking for miracles
here. I know what can be done. Now I’d like to focus on what we can avoid doing, in order to meet our
deadline.”
After the introduction, several groups were formed. One of the groups reviewed the Feature slices that
Carmen had created the night before, and the other groups focused on trying to unpack the remaining
Features into slices that could be prioritized for later or dropped altogether. It was an intense workshop.
The atmosphere was charged. People asked themselves if there was a practical, and realistic solution to
the conundrum they were in.
“Thank you all for your help with this process,” said Carmen as she prepared to close the workshop.
“We have learned a lot about the project in this workshop and, not surprisingly, we were able to remove
some work that was ‘hiding’ inside the big monolithic Features that we had in the backlog. Although we
are no better than we were a week ago (we now have 73 Features in the backlog, compared to 64 a week
ago) the fact is that we have a good idea of what we can remove further from the backlog and may have
impacted our throughput by reducing the scope of the current Feature set. This last comment needs to be
validated in the following weeks, but now I have a good idea of what I can suggest to the client can be
removed further. Thank you all.”
113
Carmen was happy with the outcome of the workshop, but she knew there was a long and hard road
ahead to convince the client about what could still be removed and to show concrete, and constant
progress. The first progress review was only one week away. Now it was time to let the team focus on the
work they had at hand and prepare the meeting with the client.
Carmen was prepared. She started: “Mr. McNeal, unfortunately, and although we had good progress
since our last meeting two weeks ago, we can’t say that we are closer to the original estimate now than
we were then.”
“Can you explain what you mean Carmen?” Mr. McNeal did not sound as angry as Carmen had
expected after her conversation with her boss.
“Sure. In the last progress review we reported that we had started, but not finalized the highest priority
Feature.”
“Remind me again Carmen, what is a Feature. Is that what you call requirements these days?” Mr.
McNeal interrupted.
“No sir. A Feature is something you can show to the users of the system and they understand it from the
point of view of their use of the system. Unlike a requirement, a Feature is a self-contained, testable piece
of functionality that can be delivered independently from the other Features in our list,” Carmen
explained.
“Oh, I see. That means I could actually deliver some Features to production before we have all the
Features completed?”
“Yes, sir. That is the idea. To be able to deliver each Feature independently to production and validate
that it fulfills the needs for use. Once the Feature is tested and the users give feedback, we consider the
Feature validated,” Carmen continued.
“But wait, you could deliver this feature to production within 3 months, couldn't you?” – asked Mr.
McNeal with a sudden interest.
Carmen was surprised by that comment and thought: “Does this mean that Mr. McNeal is interested in
delivering early? He never expressed so much interest in the content of the project during our previous
meetings”.
“Correct!” Confirmed Carmen, trying hard not to give a hint of her surprise.
“You are saying that you could – if I asked you – deliver to production before the final release date,
right?”
“Correct. However, I must also say that it requires some readiness on your side to be able to do that. We
can test that the functionality works as expected, but your team will need to confirm that it is the
necessary functionality or deliver back to us the list of changes for that Feature.” Carmen was unsure if
she was speaking too fast. She was excited about the idea of incremental deliveries. Would Mr. McNeal
buy that idea?
“Sure, sure. Of course they can do that. Show me the list of Features please. I want to check something.”
“Here you go, sir.” Carmen said as she handed over the list of Features that had been created after her
workshop with the team.
Mr. McNeal started to look attentively through the list. He seemed to be reading each Feature. Once in a
while he stopped and asked a few questions about one Feature and said “OK, that’s not the one”.
Everybody was puzzled. First it was a surprise that Mr. McNeal, who usually did not interact much with
the development team was paying so much attention to a simple list of Features. Second, nobody expected
that he would read the whole list of Features in a progress meeting. Everybody expected him to be tough
and demanding, and requiring over-time to be paid by the vendor to meet a deadline that had been
agreed in the bidding stages of the project.
The next ten minutes felt like an eternity. But finally Mr. McNeal raised his eyes from the list, looked at
Carmen and asked: “When is this Feature going to be delivered?”
115
Carmen looked at the Feature that Mr. McNeal was pointing to and said: “I can’t be sure Mr. McNeal.
With the current rate of progress it is unlikely that we will have that Feature ready in the next two weeks,
but I can get back to you with an estimation later today or tomorrow if you like.”
“I would really like to know when this Feature will be ready, so please hurry up your estimation meetings
and let me know by the end of today when you will be able to deliver that Feature.” Mr. McNeal was back
to his demanding self.
“We will try.” Carmen’s boss interjected with a smile.
“Try as you may, I want to have an answer today. Now, if you will excuse me I have to run. Carmen,
great work on the use of Features, this is the first time I see any project using this approach, and I must
say I like it. Now please let me know when that Feature will be delivered.” Mr. McNeal thanked all in the
room and left.
It was as if a huge pressure cooker had just been opened. The room suddenly felt serene and calm again.
The fear was gone, and Carmen knew what to do next.
A few hours later in a restaurant nearby, Herman and Carmen were debating heatedly about how to solve
the problem of answering Mr. McNeal’s question: when will this particular Feature be delivered?
“But Herman, we really need to estimate every Feature in the backlog. Mr. McNeal wants to know when
this Feature will be delivered, but next week he will ask about another Feature. If I don’t have a Gantt46
chart with the Features and assignments I will not know when the Feature is ready,” Carmen insisted.
“Carmen, let’s look at the data you have. You have been able to deliver 2 Features to your validation
environment in 3 weeks. This Feature that Mr. McNeal wants is currently the tenth Feature from the top,
this isn’t that hard. If you complete between 0,6 and 1 Feature per week on average, it will take 10 to 16
weeks to deliver that Feature. It is that simple. Trust the data.” Herman tried to convince Carmen.
“Sure, but that is a rate. Not a specific work sequence. I can’t be sure that this Feature is number 10 in
the list if the earlier Features can grow or shrink between now and when we start that Feature.”
“Correct, but you will have a good indication of the delivery window. You will also know when the
window for delivery changes, and you can react to that! Be it with reprioritization or removing content
from Features that are earlier in the list,” Herman continued.
“But what if we make a commitment to Mr. McNeal and we are late? He seems to be very interested in
that functionality. Maybe we should move it up on the list?” Carmen was unsure
“Whether you need to move it up the list or not you will know as soon as you report the rolling wave
forecast with the window for that Feature.” Herman commented.
“Rolling what? What did you say?” Carmen asked.
“I said that Mr. McNeal will let you know if you need to reprioritize your list of Features once you tell
him when the Feature is forecasted to be ready.”
“No, what did you say about rolling wave forecast?” Carmen insisted.
“I said that when you present the rolling wave forecast to Mr. McNeal he will let you know if he is happy
with the delivery window for that Feature.”
“What do you mean by delivery window?”
“OK, I’ll backtrack bit. First, you should have a rolling wave forecast for your project. Say you have
windows of two weeks (because that is your iteration length) and total project duration of 12 months. You
46
http://en.wikipedia.org/wiki/Gantt_chart A commonly used graphical representation of work
and dependencies between different work packages in a project.
116
should show your project as a sliding window over the 12-month timeline. Like if you were projecting two
weeks in detail and have a rough indication of the rest of the work that is possible in 12 months.”
“But the project is not 12 months now. It was only at the start, we only have 9,5 months now.” Carmen
was confused.
“Sure, you can also have a total timeline of 9,5 months, but if you do, you will not show clearly what does
not fit anymore in the project. Let me draw you an example.” - Herman picked up a piece of paper and
started drawing.
“See this window here?” Herman asked pointing to the grey rectangle in the drawing he was creating.
“This is the work that is likely to be delivered in the next two weeks, the rest is shown in priority order.
And the work that goes beyond the planned release date for the project is then highlighted in red, to show
that it is likely it will not be completed within that time frame.”
“OK, I got it. So I show a window of two weeks to list the Features that are likely to be delivered in the
next two weeks. But the Feature Mr. McNeal was interested in will not be ready in two weeks. How do I
show that to him? Should I have multiple two week windows on the graph?” Carmen asked.
“You could, but you could also have bigger windows. For example, you could have a two week window in
green to show that it has a higher certainty, then a 1 month window in yellow, to show less certainty and
finally a grey 3 month window. That way you give Mr. McNeal an indication of what Features will be
delivered in different timeframes.” Herman paused, and then continued. “Of course, this is just me
speculating. Maybe Mr. McNeal is interested in different time windows of 3 and 6 months. You should
ask.”
“OK, I got it. I have to go now and send that email to Mr. McNeal. Thank you again Herman for your
help. I was about to call an overnight meeting with the team to build a Gantt chart with tasks,
dependencies and resource balancing. But what you say makes sense and is completely in line with the
way we are reporting progress right now. I have to try that. I will let you know how Mr. McNeal reacts.
Wish me luck!” Carmen said as she was leaving.
“Let me know what he says!” – Herman said while waving goodbye.
117
The rolling wave forecast that Carmen will prepare will give her client:
• Actionable information.
The same information that helps a project team make decisions, will also help the customer
prioritize and decide on the scope of the project. The rolling wave forecast further helps you see
what is possible to deliver in multiple time frames. Given that each Feature will have a different
cost-of-delay47, this information is critical to decide which Features to keep in the backlog and
which to delay or remove.
• Accept the forecast and follow-up the delivery by getting an updated forecast.
• Refuse the forecast and ask for changes in prioritization of work so that the Feature he wants
can be delivered earlier.
Independently of what decision Mr. McNeal will make, the cost to produce the forecast is very
low, and the information it provides will be enough for him to make a decision. Following the
47
http://en.wikipedia.org/wiki/Cost_of_delay Note that cost of delay is a rough measure of how
much value is lost by delaying the delivery of some functionality. Each type of work will have a
different cost of delay curve. For example a software program needed for the Football World
Cup will have a very steep cost of delay curve around the day that software needs to go into use
because the Football World Cup will start at the right time, even if the software is not ready.
Other type of software will have a different cost of delay curve.
118
decision, Carmen will be able to adapt the plan by re-arranging the order of implementation of
the Features (they are independent) to meet the need or expectation from the client.
If Mr. McNeal decides that a certain Feature should be delivered earlier than the forecast
suggests, adapting the plan to that decision is a simple process of moving the Feature up in the
priority order. The team is then notified and work continues. Contrast this with a Gantt chart. A
detailed, and linear planning tool like a Gantt chart requires you to update the order of work for a
detailed plan, and that typically involves sequencing, detailing, designing the work and then
assigning it.
Your goal should be to make changes to the plans easier. Why? The simpler the planning
process, the faster and more easily your projects will be able to accommodate the inevitable
changes.
A key Feature of choosing a low overhead, yet accurate, forecasting mechanism for your project
is that you can update the plan at all times. In the case of the Big Fish project, and thanks to the
measure of throughput that Carmen uses to forecast the project, she can update the project
progress information (rolling wave forecast) every week, because every week she has new
information that she can add to the report. In turn, this provides actionable information for the
project leadership to make concrete decisions about what Features or stories to move higher or
lower in the priority order.
This forecasting mechanism allows the project team to know when they are likely to deliver a
certain Feature and therefore also coordinate work with external project contributors. This is
necessary when the project team depends on external teams. For example: the project team
may need to coordinate their work with a marketing team that implements the marketing
campaign, or a field testing team that works with final users to collect feedback for a large
rollout, etc.
Finally, the rolling wave forecast also provides us with a varying scale of precision whereby the
forecast is relatively more precise in the short term, and loses precision as we look into the
future. Giving a measure of certainty that is different for different time scales. This is achieved
by picturing the forecast for different values of the progress metric. Carmen uses her throughput
range to give a widening range of outcomes over time as seen below.
119
Regards.”
120
Carmen was at first happy. After all there was no anger in the email. However, the last phrase made her
very anxious. Why was Mr. McNeal asking for a meeting now? What was going on?
She called Mr. McNeal’s secretary and scheduled a meeting for later that day.
As she entered Mr. McNeal’s office she felt her legs shake. She had a gut feeling that this was an
important meeting. She sat down in the meeting room and waited for Mr. McNeal as she was instructed.
She waited for a few minutes, which felt like an eternity. She tried drinking a glass of water, but her hand
would not accept the order the brain had sent. Carmen decided that she was too nervous to drink water
and sat on her hands to keep them from shaking.
A few minutes later, Mr. McNeal entered the room. But he was not alone.
“Hi Carmen, thank you for coming here on such short notice.” Mr. McNeal said.
“Hello, sir. I understand. What is the matter…” Carmen stopped as she saw the person entering the room
behind Mr. McNeal was her boss. He seemed serious. “Hello sir, I did not expect to see you here,”
Carmen said while looking at her boss.
“I wanted to have both of you here for this meeting,“ Mr. McNeal explained. “The reason is simple. I’ve
made the decision that from now on the Big Fish project will be handled internally in my department.”
Fear struck Carmen. Her fear of being fired was coming true. She thought: “My god! They are kicking us
out of the project. Will my boss fire me now? Oh no...”
“I want to keep a close watch on this project,” Mr. McNeal continued, “it is a very important project for
me and for the Prime Minister. We can’t accept anything less than an on-time, high quality release. As
you know this system is scheduled to go live just before the election. Any failure to deliver this project can
cost us the election and we would not want that.”
“I guess our company is out of the project, then.” Carmen was sure that this was the golden handshake
moment.
“I want to guarantee that this project is a success and that is why I’ve asked your company and Joseph
here to move you and your team to our premises here, in our building. Effective Monday you will work
here and report directly to me.” Mr. McNeal announced. “I’m very impressed with the clarity and
transparency in this project, and I’m aware that you, Carmen, created that. You have been able to deliver
more visibility and clarity regarding this project in 2 months than any of our other projects ever
delivered. I’m impressed and I want you to help me bring that same kind of transparency to other projects
here. Joseph has graciously agreed to let you and your team work directly with us here at our offices until
further notice.”
After a pause, Carmen said: “I don’t know what to say sir. I’m glad that you are happy with the progress
the team has shown, but the visibility was created thanks to a colleague of ours that has been helping me
and without whom I would not have been able to create this level of transparency.”
“Bring him with you as well! We start on Monday! This is the most important project you will ever work
on. I want the best people in charge.”
“But Mr. McNeal,” Carmen’s boss tried to interrupt.
“No buts Joseph, bring that fellow with Carmen and the team.” Mr. McNeal was not taking no for an
answer.
“Very well,” Carmen’s boss acquiesced. “We will bring Herman in as well.”
Carmen was smiling inside. Her hands did not shake anymore and she felt confident.
121
“And Carmen,” Mr. McNeal continued. “Next week we have a presentation about this project to the
council of ministers. Let’s get ready for that. You are in the big leagues now.”
THE END
122
ACKNOWLEDGEMENTS
A project like this is never easy, and could not succeed without help and support from many
people. So here is my heart-felt thank you to all, including those I have unintentionally left out in
this acknowledgement. You made this project possible!
To my family, who was so patient with me through the process of writing this book.
A special thanks to my partners at Oikosofy who’ve helped and supported me through the
difficult process that is writing a book, especially a controversial one as this.
Luis Gonçalves, aka the web-master, who helped me create the web-site and product pages
for this book and all the additional material that is available with the book.
Sven Schnee, who helped the #NoEstimates movement progress with his blog post on the
topic.
Veronika Gonçalves, who helped me get the first book page up and running and was patient
with me when I could not answer her questions because I was immersed in the writing of this
book.
Fernando our investor who made Oikosofy possible!
Woody Zuill, a dear friend whom I met in Skype first, and then later in several conferences. We
organized workshops together and brought attention on twitter to a very important topic in our
industry.
Ángel Medinilla, the amazing illustrator for this book and the person who helped me get started
with the book.
Neil Killick, Henri Karhatsu, Chris Chapman, Sven Ditz, Diego Cenzano, Clinton Keith,
Markus Hammarberg, a big, big thank you for being available and willing to contribute to this
project with incredibly insightful video interviews that bring the whole idea of #NoEstimates to
life from so many points of views.
Tomas Rybing and Evan Leibourn, a very special thank you for the insightful essays that are
now part of this project and will help countless people take these ideas into practices.
All Beta Readers that invested their time and attention in making this project much better with
their questions, insights and comments. This book would be much worse without your
contribution.
To the twitter friends I made during these years where #NoEstimates went from a crazy idea,
to a wide-spread cry of dissatisfaction with the status quo in the software industry. You make
me believe we can improve our industry!
123
124
Vasco wants to transform product development organizations into product business
organizations. He does that by focusing the work of the product development teams on the end-
to-end life-cycle of their products. From Concept to Cash and Back!
Currently a Managing Partner at Oikosofy, Product Manager, Scrum Master, Project Manager,
Director, Agile Coach are only some of the roles that I've taken in software development
organizations. Having worked in the software industry since 1997, and Agile practitioner since
2004. I
Vasco was one of the leaders and catalysts of Agile methods and Agile culture adoption at
Avira, Nokia and F-Secure and other companies where he consults teams and management.
Vasco is also the host of one of the most popular Scrum podcasts at: http://scrum-master-
toolbox.com/ Follow that podcast for interviews with Scrum Masters from all over the world.
You can read more at: http://softwaredevelopmenttoday.com/
You can join Vasco on twitter: @duarte_vasco
125
"This is a must read book to software managers. It is call to responsability to managers to not estimate
but give actual data to clients. Following the #noestimates principle will make the life of people around
software industry happier." – Enric Jaen
"The debate surrounding the need, or not, to provide detailed estimates to clients is one that courts
contention, argument and confusion. Undoubtedly these emotions will continue to prevail, but Vasco
Duarte clearly and concisely reveals the virtues of an alternative approach to estimation." – Andy
Deighton. Scrum Master
“You may not be able to implement all aspects of the #NoEstimates approach but you will be able to take
away insights that improve your current estimation approach, reduce waste and provide more valuable
information to your stakeholders.” – Paul Seaman, Principal QA, SS&C Technologies
“Many businesses perform estimations as a matter of routine. But this can be a time consuming activity,
and doesn't always have a good return on investment. So it is wise to also consider the alternatives. This is
the book to present that for you.” – Kevin O'Shaughnessy, senior web developer, and blogger at
zombiecodekill.com
“#NoEstimates is not just about estimates. It is an important step in the paradigm shift from a plan-driven
to an empirical approach to software development.” – Georg Raeder, Lean Facilitator, EVRY, Norway.
“#NoEstimates has been an interesting, if not divisive topic on Twitter. The “NoEstimates” movement
aims to explore questions around the usefulness and applicability of estimation in software, in particular
in an Agile context. #NoEstimates tries to challenge unexamined assumptions around a widely used
practice in the software development business.” – Oluf Nissen, Scrum Master, HP
“This book makes you wonder why you are still believing that an estimate is a fact instead of what really
is: an opinion.” – Ernesto Cárdenas Cangahuala, DevOps & Cloud Consultan
“Vasco's NoEstimates book makes a clear, thoughtful case for planning and delivery based on a sane and
realistic view of software development instead of the traditional wishful thinking based methods.” –
Derek Graham, Principal Developer
“To question something that most people in our industry see as a necessity takes courage. The ideas
presented in this book will hopefully give you the inspiration and courage to change our industry for the
better. Nothing less.” – Jess Bring-Larsen, Senior Systems Engineer, Systematic
“Stop wasting time in long discussions about how many days it’s going to take and start generating value
for stakeholders using #NoEstimates, have your team love the method and your customers enjoying the
delivery. Read this book full of great illustrations.” – Christian Delez, Agile project leader & cloud
architect.
“#NoEstimates explores some major deficiencies of estimates and a simple but effective alternative approach for
managing expectations and building trust is introduced, taking into account the complex nature of software
development. If you're struggling to accurately estimate your projects and keep your promises to customer, this book
is for you!” – Yavor Nikolov, Software Developer & Agillist from Sofia, Bulgaria
126
“I wanted to rethink how we estimated projects at work, and #NoEstimates provided a well thought out
alternative to death-by-hours that we did. You owe it to yourself to check it out.” – Carl Anderson,
Application Developer, USA
“I had the pleasure to be one of the beta readers for Vasco's new book on NoEstimates. I had decided I
would read it with an open mind and anxiously awaited to read the first chapter. I have to confess I was
hooked. This stuff was real, I could relate to the story about Carmen and the book hit so many
dysfunctions I have experienced in the past. My understanding and my stand on #NoEstimates has
changed; I am starting to get it. This book will be on top of my recommenced reading list going forward.”
– Mikko Sorvari, Sr. Agile Consultant, USA
“Excellent read, well articulated and clear. For the first time I can see how we might move closer to
achieving #noestimates at a digital agency. This book places value and quality at the heart of everything.”
– Matt Thornhill, Senior Digital PM
“#NoEstimates book is precious reading for all those professionals interested in delivering real value to
their customers rather than trying to predict the inevitable 'unknown unknows' in every software project.
Put in other words, #NoEstimates is all about getting things done.” – Alessandro Ronchi, Owner at
Webgriffe
“#NoEstimates is a must have book for anyone interested in improving their delivery of value to
customers using Agile practices. With a focus on priority, predictability and collaboration it fits any agile
approach.” – Jon Eversett, Scrum Master / Agile Coach at Landmark Information Group
“#NoEstimates began as a simple hashtag on twitter. It has generated hundreds of passionate discussions.
The #NoEstimates book is a major contribution to the debate: the Pros and Cons will get a very clear
overview of #NoEstimates in action.” – Nicolas Umiastowski, Agile Coach and Consultant, France