Вы находитесь на странице: 1из 126

1  

2  

What others are saying about NoEstimates, The Book

“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  

THE  #NOESTIMATES  PREMISE  

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  

THE  PROBLEM  WITH  ESTIMATES  

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.”

“How much bigger project are we talking about?” Carmen asked.

“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  

Still no comment. “Ten times bigger?”

“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?    

Why  Don’t  Estimates  Work?    


“Carmen, I want you to know that you have my full trust. I know that you can pull this project off.”

“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:    

cost of feature = f(g(e), h(a))

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.  

As  Troy  Magennis  7shared  with  me  in  an  email  conversation:    

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.  

More  Than  Meets  the  Eye:  Why  Estimates  Are  Actively  


Harmful  for  Your  Project  and  Your  Company  
“Carmen, one more thing.” Her boss said as she was about to leave the office.

“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.  

Entangled:  How  Complexity  Destroys  Predictability  


The  biggest  conundrum  of  all  however,  is  how  to  deal  with  complexity.  How  complex  
dependencies  in  software  projects  hide  the  really  big  risks.    

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:    

Requirements  will  never  be  completely  understood.  

Wegner’s  Lemma:    

An  interactive  system  can  never  be  fully  specified  nor  can  it  ever  be  fully  tested  

Langdon’s  Lemma:    

Software  evolves  more  rapidly  as  it  approaches  chaotic  regions.  

Medinilla’s  Law  for  Software  Contracts:    

                                                                                                     
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  

Change  Requests,  Change  Everything  

 
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  

All  or  Nothing:  Death  March  Projects  


Estimations  can  become  a  life  or  death  game  for  teams  and  companies  alike.  But  nowhere  is  
the  effect  of  bad  estimation  more  visible  than  in  the  statistics  of  mental  health  problems  in  
overworked  and  overstressed  IT  industry  folk14.  

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.  

Is  There  Hope  for  Software  Projects?  


If  it  is  so  hard  to  estimate  software  work,  can  you  predict  when  a  particular  project  will  end?  Yes,  
you  can.  And  that  is  the  right  question.  Instead  of  asking  how  long  the  project  will  take,  ask  
instead:  “given  the  rate  of  progress  so  far,  and  the  amount  of  work  still  left,  when  will  the  project  
end?”  Or,  a  similar  question:  “Given  the  rate  of  progress,  how  much  of  the  work  can  be  finalized  
by  date  X?”  

These  are  much  more  powerful  questions.  Here’s  why:  

•   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  

WHAT  ARE  ESTIMATES?  

“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  

#NoEstimates  as  #NoInventories  


Estimates  are  seen  as  useful  by  many,  but  even  those  that  want  to  continue  to  use  estimates  do  
not   advocate   that   we   spend   as   much   time   as   possible   estimating   a   project.   This   type   of  
activities,   where   more   is   not   necessarily   better,   is   labeled   as   waste   in   Lean   Manufacturing  
(Lean).    
Lean  defines  waste  as  any  activities  that  don’t  directly  add  value  to  the  product  from  the  client’s  
perspective.  Companies  that  adopt  Lean  work  to  eliminate  or  reduce  waste  to  a  minimum.    
Inventories,  for  example  –  partially  produced  or  fully  produced  products  not  being  delivered  and  
instead   kept   in   the   warehouses   –   are   a   well   known   example   of   waste   in   Lean   Thinking.   But  
meetings  are  also  waste.  Consider  this:  if  we  double  the  amount  of  meetings,  we  are  probably  
not  giving  a  proportional  amount  of  more  value  to  the  client.  
Use  this  heuristic  to  label  waste:  anything  that  we  don’t  want  to  do  more  of  in  order  to  make  our  
customer  happier  is  waste.  Some  people  say  “oh,  but  meetings  add  value,  and  inventories  are  
valuable  in  some  situations”  -­  and  they  might  be  right.  But  from  a  Lean  perspective,  you  don’t  
want  to  have  as  many  managers  as  possible,  as  many  meetings  as  possible,  as  much  inventory  
30  

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.  

Estimating  vs.  Forecasting  


Although  these  two  words  are  used  many  times  as  if  they  are  synonyms,  they  are  significantly  
different.
The   Merriam   Webster   dictionary   defines   forecasting   as “to   calculate   or   predict   (some   future  
event  or  condition)  usually  as  a  result  of  study  and  analysis  of  available  pertinent  data”.  If  you  
compare   this   with   the   definition   of   estimates   (“to   give   or   form   a   general   idea   about   the   value,  
size   or   cost   of   something”)   you   can   see   that   there   is   a   fundamental   difference   between   the  
terms:   in   the   case   of   forecast,   we   use   actual   data   to   make   calculations   instead   of   using  
experience  and  other  information  to  guess  at  something.    
Hence,   when   you   study   estimation   methods   you   can   divide   them   into   pure   estimates   and  
forecasting  methods  –  those  that  use  specific  data,  correlation  and  system  dynamics  to  predict  
future  outcomes.    
Another  way  of  looking  at  the  difference  between  estimates  and  forecasts  is  that  forecasting  is  
viable  only  when  uncertainty  and  variability  are  understood.  For  instance,  let’s  say  that  you  are  
trying   to   predict   the   behavior   of   a   system   that   is   bound   by   certain   physical   variables.   Some  
examples  could  be:  

•   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).    

The  Iron  Triangle  


Carmen realized that she had no way to forecast results for this project. There was no team selected, so
there was no past information on performance. There was also no previous experience with this client,
technology, product, or domain… There simply wasn’t any historical data.
Undoubtedly, the amount of uncertainty in this project was too big to create an accurate estimate, if that
was even possible. According to her experience, uncertainty would find it’s way into the project, usually
in the form of delayed deliveries or increased costs. On top of that, she knew most of the time many of the
requested features were never used, so maybe having some sort of variable scope would be a better way
to deal with uncertainty; but as usual this was out of the question: this was a government contract after
all. Old school. Closed contracts, up-front definition, zero tolerance to deviations from the original plan
once this plan was given the GO-decision.
As Carmen thought about the best approach to this project she doodled a triangle on a blank page.
A   discussion   on   the   topic   of   estimation   is   incomplete   without   some   mention   of   the   well-­known  
figure  of  the  Iron  Triangle.    
The  Project  Management  Institute,  in  their  Project  Management  Body  of  Knowledge  (PMBOK),  
described  nine  domains  for  project  management.  Those  are  integration,  scope,  time,  resources,  
risk,  quality,  communication,  human  resources  and  procurement.  But  it  is  commonly  understood  
that  there  are  three  main  variables  that  will  place  your  project  in  the  ‘project  space’,  and  those  
are:  

•   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?  

Uncertainty  and  Buffers  


Carmen had a just a couple of facts to work with. Fact 1 was the expected delivery date: this was a fixed
date, as the system should be ready for a major integration event with another project – which of course
was out of Carmen’s control. Fact 2 was the scope defined in the request for quotations. The scope was
particularly problematic because of the way it was written. Just like any other written document, there
were many ways to interpret that document. For example, in some paragraph you could read ‘the system
shall be able to export information to the most common data interexchange formats’. Of course, if this
meant to create comma-delimited files, this wouldn’t be a problem, but she could recall projects where
similar clients asked for PDF, Excel, OpenOffice, XML and even some really arcane formats. How could
she tell up-front what was the meaning of this high-level scope definition?
One way to try to limit the impact of the lack of scope understanding was to make some assumptions on
the proposal and try to delimit what was included and what was not, but anyway there would always be a
certain level of uncertainty and lack of definition. So no matter how many disclaimers she added, at the
end the successful mutual understanding of the scope would be down to feature-by-feature negotiation,
customer collaboration, win-win relationship and good will.
“How likely is this client to behave this way? Not much…”, she had to acknowledge.
Carmen realized that she needed more ways to deal with this project’s uncertainty. She needed new ideas.
Every  project  has  some  uncertainty  in  it.  In  some  domains,  this  uncertainty  can  be  constrained  
in   a   way   that   ensures   the   project   should   (under   certain   conditions)   not   be   off   by   more   than   a  
predictable  margin  –  for  example:  plus  or  minus  20%.  But  in  other  domains  the  deviation  from  
37  

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.  

Classic  Methods  for  Crafting  Estimates  


As Carmen worked on the project plan, things started to make some sense, but as understanding
increased, her intuition told her that the overall size of the project was getting bigger and bigger. Even if
39  

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  

Estimating  in  The  Agile  World  


Agile   practitioners   have   suggested   several   agile   specific   practices   and   tools.   Possibly,   one   of  
the   first   approaches   was   the   Extreme   Programming   planning   game,   which   used   a   group  
decision   technique   to   decide   on   how   much   work   to   take   on   into   an   iteration.   Team   members  
would   discuss   and   collaborate   to   describe   the   work   they   were   considering   undertaking,   and  
finally   decide   on   what   they   could   commit   to.   The   discussion   and   conversations   during   the  
planning  game  helped  build  a  common  understanding  among  the  team  members.  

Poker  planning  and  estimating    


Another   well-­known   technique   is   the   planning   using   cards   with   numbers,   in   which   team  
members  will  select  and  later  discuss  around  the  size  and  complexity  of  work  the  team  wants  to  
plan  for  a  particular  iteration.  This  approach  is  often  called  planning  poker,  and  helps  the  team  
discuss  each  work  item  (typically  user  story),  followed  by  a  blind  estimation  vote  to  avoid  team  
members   from   being   influenced   by   other’s   votes.   Once   the   vote   is   completed,   the   team   will  
discuss   the   highest   and   lowest   estimates   to   try   and   reach   a   consensus   or,   if   needed   they   will  
estimate  again.  
Once  the  team  agreed  on  a  particular  size  and  complexity  for  a  user  story,  they  would  assign  a  
story  point  value  to  the  user  story  and  discuss  the  next,  until  they  felt  they  had  reached  the  limit  
of  possible  work  for  the  next  iteration.  
Planning  poker  is  typically  used  by  agile  teams  to  do  relative  size  estimation:  the  relative  effort  
necessary   to   one   work   item,   when   compared   to   other   items   in   the   team’s   backlog.   This   gives  
the  team  a  measure  of  size  and  complexity  in  the  form  of  a  story  point  value  assigned  to  each  
story.   All   stories   of   similar   size   and   complexity   will   have   a   similar   story   point   value   associated  
with  them.    

Using  past  velocity  to  estimate  future  capacity  


The  Scrum  framework  also  introduced  the  term  velocity  as  a  measure  of  the  team’s  capability  to  
deliver   completed   (aka   Done)   work   in   each   iteration.   After   collecting   some   data   from   several  
sprints,  then  teams  can  use  the  average  velocity  to  analyze  a  prioritized  and  estimated  backlog  
and   forecast   delivery   dates   and   costs.   The   caveat   is   that   the   understanding   of   the   work   to   be  
done  changes  over  the  course  of  a  project,  which  in  practice  means  that  some  teams  end  up  re-­
estimating  their  backlog  items  several  times  during  the  project.  

Prioritization  vs.  estimation  


These  tools  and  techniques  assume  that  some  kind  of  prioritized  backlog  has  been  created  with  
the  customer  or  their  representative.  However,  most  frameworks  fail  to  establish  a  prioritization  
technique,  they  just  assume  that  the  client  will  know  what  is  more  important  and  valuable.  This  
is   a   major   flaw,   but   fortunately   frameworks   and   tools   –   like   the   Lean   Startup   ideas   –   were  
developed  to  formalize  prioritization  methods.  
These  prioritization  methods  are  very  much  in  line  with  the  ideas  in  this  book.  Most  noticeably  
Kanban  and  Lean  Startup  place  a  greater  emphasis  on  the  prioritization  process  than  on  having  
estimates  of  the  backlog  items.  The  rationale  is  that  once  you  know  which  is  the  one  single  most  
important  thing  in  the  universe  for  your  company  right  now,  there  is  little  value  in  knowing  how  
much   is   it   going   to   cost   when   compared   to   other   items   in   the   backlog.   For   these   methods   the  
value  of  the  work  in  the  backlog  is  the  driver  for  decision-­making.  
43  

Estimation  vs.  flow


Lean,   and   Kanban   highlight   the   importance   of   limiting   the   work   in   progress   and   helping   the  
system  flow.  Flow  improves  as  we  reduce  the  number  of  work  items  in  progress,  which  in  turn  
reduces  the  time  to  complete  each  individual  work  item.  Once  there  is  a  prioritized  list  of  work  
items,  the  Kanban  ideal  is  to  be  able  to  process  work  items  one  at  a  time,  non  stop,  and  do  that  
with  as  little  delay  as  possible.  As  a  way  to  help  the  work  items  flow  from  backlog  to  production,  
variability   in   the   work   and/or   processes   should   be   addressed,   understood   and,   if   possible  
reduced.   The   use   of   historical   data   for   flow   metrics   can   then   be   used   to   forecast   results,  
deadlines  and  projected  costs,  without  having  to  estimate  every  individual  work  item.  

Selection  method:  riskiest  assumptions  first  


Lean   Startup   focuses   on   identifying   the   most   important   assumptions   about   your   business  
model:   those   that,   if   proven   wrong,   would   invalidate   your   whole   project.   It   then   urges   you   to  
define   experiments   to   prove   those   assumptions   right   or,   if   they   are   wrong,   create   new  
assumptions  through  a  pivot24.  These  validated  learning  cycles  should  be  performed  as  quickly  
as   possible,   ideally   several   times   a   day.   If   you   are   able   to   perform   this   series   of   strategically  
critical  experiments  so  quickly,  then  spending  time  trying  to  estimate  the  length  or  cost  of  each  
experiment  is  pointless.

When  are  estimates  reliable?  


Estimates  are  often  used  in  agile  projects  to  provide  information  that  helps  prioritize  the  backlog  
of  work  items.  However,  those  estimates  are  so  often  wrong  that  the  only  appropriate  use  is  to  
separate   clearly   the   items   that   are   sufficiently   different   from   each   other.   This   clear   difference  
would   help   us   with   the   decision   to   drop   one   of   them.   For   example,   if   one   item   is   estimated   to  
last  one  week,  and  another  item  is  estimated  to  last  for  10  weeks,  then  it  is  easy  to  believe  the  
first  item  will  be  delivered  faster.  However,  if  the  difference  in  estimation  is  small  (e.g.  10  weeks  
vs.   12   weeks),   the   errors   in   estimation   can   easily   defeat   the   purpose   of   making   a   decision  
based  on  the  estimated  duration  of  that  item.  

Focusing  on  value  


Additionally,   experience   shows   that   only   a   fraction   of   all   product   features   deliver   the   bulk   of  
customer  valuable  functionality.  Identifying  which  features  are  the  ones  that  deliver  most  value  
is  therefore  more  important  than  finding  which  of  them  are  small  and  which  are  big.
In   essence,   cost   is   not   proportional   to   value.   Once   the   cost   difference   between   features   is  
reduced  (by  splitting  the  work  into  small,  verifiable  work  items  focusing  on  value),  prioritization  
based  on  customer  value  for  each  work  item  provides  better  results  than  deciding  which  are  the  
cheapest  or  the  most  expensive  work  items.
But  don’t  we  need  to  estimate  to  know  when  the  project  will  be  done?  This  is  the  most  common  
objection  to  #NoEstimates  that  I  hear  over  and  over  again.  In  the  next  chapter  we  explore  the  
reasons  why  this  question  is  asked.  In  other  words:  why  do  we  really  need  estimates?    
   

                                                                                                     
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  

The  (Alleged)  Need  for  Estimates:  Deadlines,  Costs  


and  Scope  

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  

Why  Do  We  Need  Estimates?


Common  answers  to  this  question  include:    

•   To  know  when  the  work  will  be  completed  and  delivered.  

•   To  know  how  much  the  project  will  cost.

•   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.    

Project  Driven  Development


The  reasons  discussed  above  as  justification  for  estimation  are  part  of  what  Ángel  Medinilla  
calls  Project  Driven  Development,  a  term  he  coined  to  clearly  distinguish  this  approach  of  
developing  software  from  other  approaches.    
In  this  approach,  the  most  important  project  goals  are  not  customer  value,  quality,  product  
success,  time  to  market,  adaptation,  learning,  market  share  or  even  profit.  The  important  goal  is  
to  meet  the  established  deadline,  within  the  defined  budget,  with  all  scope  included.  Simple.  

                                                                                                     
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.  

Set-­Based  Design  vs.  Point-­Based  Design


One  of  the  many  things  that  distinguished  the  most  productive  car  company  in  the  world,  Toyota  
and  its  Toyota  Production  System26  from  its  American  counterparts  was  the  use  of  Set  Based  
Design,  sometimes  also  called  Set  Based  Concurrent  Engineering.  In  this  approach,  the  
Japanese  designers  of  new  products  would  go  to  great  lengths  to  make  design  commitments  as  
late  as  possible  in  the  project  (a  goal  of  set-­based  design).  In  contrast,  the  Americans  were  
committing  to  sub-­optimal  decisions  very  early  in  the  project,  and  then  having  to  re-­work  those  
designs  due  to  unforeseen  performance  or  quality  problems  (point-­based  design).    
At  Toyota,  the  production  engineers  would  simultaneously  start  to  design  the  production  line  
and  prepare  manufacturing  long  before  the  new  car  designs  were  finished  (hence,  concurrent  
engineering),  instead  of  waiting  until  all  decisions  about  the  design  were  closed.  This,  in  the  
end,  provided  Japanese  manufacturers  with  an  astonishing  competitive  advantage  that  let  them  
design  and  produce  the  Toyota  Prius  in  about  3  years27,  from  idea  to  first  sale!  When  the  
industry  average  for  the  time  it  took  to  introduce  an  improvement  in  an  already  existing  car  
model  was  closer  to  four  years.  
I  sometimes  wonder  if  this  principle  of  “defer  commitment”  was  not  influenced  by  Japanese  
martial  arts.  When  training  Kenjutsu,  Ángel  Medinilla’s  Sensei  often  says  “you  have  to  wait  until  
the  last  responsible  moment;;  if  you  move  too  early,  your  enemy  will  spot  your  movement  and  
neutralize  it;;  but  if  you  wait  too  much,  your  opponent  will  strike  you.”  
Making  hard  decisions  early  in  the  design  process  –  when  we  have  the  least  information  –  may  
force  us  to  take  the  wrong  path  very  early  in  the  project.  Later  on  some  of  those  decisions  will  
be  very  hard  to  reverse  as  decisions  stack  on  top  of  each  other  as  the  project  progresses.    
When  you  keep  the  scope  flexible  and  do  not  limit  features  by  a  pre-­defined  estimation,  you  will  
be  open  to  explore  new  possibilities  as  you  gain  more  knowledge  on  the  project.  This  will  enable  
you  to  explore  different  solutions  for  the  critical  decisions,  which  is  one  way  to  use  Set  Based  
Design  
If  your  company  is  asking  for  detailed  plans  before  any  work  actually  begins,  there's  a  good  
chance  that  you  are  practicing  a  linear  method,  aka  waterfall.  Product  development  experts  
nowadays  advise  against  this  approach  in  complex  environments28.  If  you  don't  have  a  clear  
and  detailed  blueprint  of  what  you  need  to  build  (like  in  cars,  motorcycles,  bridges  or  buildings)  it  
would  be  far  more  productive  and  safe  to  start  with  a  low-­fidelity  prototype  and  iterate  it  

                                                                                                     
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.  

Estimation  vs.  Prioritization


Scrum  teams  all  over  the  world  are  asked  to  estimate  the  Product  Backlog.    
The  Product  Backlog  should  be  a  description  of  the  product,  feature  by  feature  in  priority  order.  
Once  you  know  what  is  the  most  important  functionality  to  help  your  customers  and  grow  your  
business,  you  then  break  that  functionality  down  –  in  priority  order.  And  this  is  a  very  important  
approach  when  you  want  to  focus  on  business  value:  prioritization  comes  before  estimation.    
It  is  common  that  managers  and  business  people  say  “I  need  to  know  the  estimate,  the  cost  of  
every  feature,  so  I  can  properly  prioritize.”  The  immediate  consequence  of  this  statement  is  that  
estimates  become  the  real  “value”  for  a  feature.  No  one  wants  to  commit  a  team  or  a  project  to  
a  long  feature  because  we  have  “lower  hanging  fruit”.  This  dynamic  will  slowly,  but  surely,  
destroy  the  value  of  your  product  and  lead  you  to  create  a  mediocre  product.  No  matter  what  
you  try  to  do,  the  estimates  for  features  will  drag  you  down  to  mediocrity.  And  the  reason  is  
simple  and  easy  to  understand:  because  it  is  so  easy  to  do  first  what  is  considered  “cheaper”.  
My  advice  is  simple:  focus  on  value  first,  and  then  figure  out  how  to  deliver  that  value  as  quickly  
as  possible.  Don’t  estimate  your  way  into  excuses.  Deliver  it,  bit  by  bit,  incrementally.  
57  

   
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.  

Walking  at  Random


The  traditional  approach  to  estimating  a  project  consists  of  breaking  the  project  into  work  
packages,  creating  a  list  of  tasks,  studying  dependencies,  estimating  every  task,  adding  them  all  
together  to  see  when  the  project  could  be  completed.  When  asked  for  a  more  accurate  
estimate,  teams  will  estimate  to  an  even  finer  level  of  granularity,  perhaps  estimating  tasks  that  
could  be  implemented  in  2  or  4  hours.  Then  they  add  them  all  in  order  to  have  a  more  accurate  
estimate.  
But  that  is  not  the  only  way  of  doing  things,  nor  the  most  advisable  in  many  situations.  
58  

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:    

•   There  would  be  nothing  bigger  than  ‘Big’.  

•   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.  

So…  Rethinking  Estimates


What  are  you  really  trying  to  achieve  with  the  use  of  estimates?  What's  the  intrinsic  value  of  
estimates?  
Can  you  really  use  estimates  to  accurately  predict  what  is  going  to  happen,  when  is  the  project  
going  to  be  ready?  How  long  each  work-­item  is  going  to  take?  How  much  will  the  project  cost?  
And  how  many  people  and  what  resources  will  be  needed?  
In  this  chapter  you  read  about  the  concerns  regarding  the  accuracy  or  value  of  estimates.  Even  
if  you  estimate  your  project  with  great  investment  of  time,  those  estimates  will  not  help  you  
manage  the  surprises  that  inevitably  come  up  during  a  project,  and  in  fact  can  make  your  work  
much  harder  if  certain  hard-­dependencies  cannot  be  resolved  because  of  an  error  in  estimation.  
Invariably  plans  fail,  or  need  to  change,  and  estimates  must  change  with  them.  
A  better  way  to  manage  your  projects  is  to  acknowledge  uncertainty,  embrace  change  and  fix  
the  hardest  constraints  (time  and  people  plus  resources)  while  letting  uncertainty  be  managed  
through  a  variable  scope.  Focus  on  delivering  the  most  important  part  of  your  product  early  in  
the  project  and  delay  the  less  important  and  'nice  to  have  features'.    
This  approach  allows  you  to  work  on  features  identified  after  the  project  has  started,  when  you  
find  that  these  features  are  more  valuable.  This  approach  also  allows  you  to  drop  features  that  
might  be  considered  less  valuable,  dedicate  more  time  to  the  most  valuable  features  and  reduce  
scope  of  others.    
This  approach  has  also  been  in  use  by  many  in  the  Agile  community,  and  some  call  it  "value  
driven"  software  development,  as  opposed  to  "scope  driven"  software  development.  

The  Predictability  Paradox


“The  best  way  to  achieve  predictable  software  development  outcomes  is  to  start  early,  learn  
constantly,  commit  late,  and  deliver  fast.  This  may  seem  to  cut  against  the  grain  of  conventional  
project  management  practice,  which  is  supposed  to  give  more  managed,  predictable  results.  
But  predictability  is  a  funny  thing;;  you  cannot  build  with  confidence  on  a  shifting  foundation.  The  
problem  with  conventional  approaches  is  that  they  assume  the  foundation  is  firm;;  they  have  little  
tolerance  for  change.”
Mary  Poppendieck  -­  The  Predictability  Paradox
Predictability  is  the  impossible  quest  of  management.  Predictability  is  important  because  we  can  
base  good  decisions  on  what  we  know  to  be  predictable.  Predictability  is  what  we  seek,  but  how  
can  we  achieve  it?  And  what  does  predictability  really  mean  for  a  software  project,  especially  
one  in  crisis  like  Carmen’s?  
   
61  

CHAPTER  4  

HOW  NOESTIMATES  CAN  HELP  YOU  


MANAGE  A  PROJECT  IN  CRISIS  

“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.    

What  are  Independent  Stories?      


In  the  Agile  World,  User  Stories  were  widely  adopted  very  early  on.  But  few  understand  the  
immense  power  of  that  tool.  Stories  should  have  a  set  of  properties  commonly  called  as  
INVEST37:  

•   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  

“Hi Carmen! What are you doing here so late?”


It was Herman. “But why is Herman here at this time?” Carmen asked herself. “Err… Herman, why are
you here? Did you come back to do some work?”
“No way! I value my private time!” He smiled, “I came back to pick up that #NoEstimates book that
Jerome asked about last week. I have another friend who wants to read the book and we were just
downstairs having a few beers, so I decided to pick up the book immediately. When somebody asks, I want
to give them the book right away, so they don’t have time to lose interest!” He winked.
“Wait, #NoEstimates? What is that all about?” Carmen asked.
“You don’t know? Oh my god! You are working on Big Fish, you absolutely must read the book. Do you
have a kindle?”
“Yes…”
“Right, go to Amazon and buy the book immediately. Check chapter 4 today, before you go home. It is an
easy read – the author created a very good story that helps follow the concepts in a fast-paced manner.
Read chapter 4 and let’s talk more tomorrow. Have to run now.” Herman left to meet his friend. Carmen
was interested and checked the book, bought it and started reading Chapter 4.
“Running Tested Stories…” She repeated while reading the book, “can I apply this to my project? It
seems like a good way to follow progress, and I can see the similarities to the Earned Value Management
ideas I’ve used in the past. But where should I start?”
Many  projects  have  only  a  list  of  requirements  as  the  definition  of  scope.  If  you  want  to  use  
RTS’s  as  a  way  to  measure  progress  you  must  define  the  capabilities  of  the  system  in  the  form  
of  INVEST  Stories.  Remember  that  each  Story  must  follow  the  INVEST  properties!  
Once  you  have  a  list  of  RTS’s  for  your  project,  you  can  then  plot  the  progress  of  the  project  by  
completing  each  INVEST  Stories  in  order  of  priority.    
How  did  Carmen  do  it?  Let’s  watch.  
“I have to count the RTS’s we’ve delivered so far… How can I do it? I know! I’ll list the requirements
that are expressed as functionality into a list of INVEST Stories. Then I’ll group each of the other
requirements under the relevant Story. If some are left, I can create more Stories for each of them. Let’s
get to work.”
Many, many hours later…
“Great! I have my first list of INVEST Stories!
“The project feels so much clear now.” Carmen felt she had just climbed Mount Everest on a clear day.
And what she saw was an amazing landscape. She could see her project clearly for the very first time!
“Now to plot the progress,” she thought.
Carmen started to analyze each Story to classify them into “done” and “not done”. After some more
hours of detailed analysis and searches through her inbox she came up with this:
73  

“Flat line…” She could not believe her eyes.


“So much work has been done in this project, so much has been invested and no RTS progress… We’ve
written many, many pages of requirements documents, test specifications, design document. We’ve spent
countless hours in meetings making decisions that will affect the project. But the RTS count tells us that
we have no progress. Nothing to show for all that effort!” Carmen did not say what was in her mind out
loud, but her body language said it all: the shoulders dropped, her eyes looked gloomy and she sighed.
She was the image of frustration.
“What can I do now? Why haven’t we delivered any RTS?” It was too late to answer those questions. She
only had time to dash home, take a quick shower and come back to the office in time for the weekly
progress review with the project team.
Later that day…
Carmen goes through the progress using the Work-Breakdown-Structure and the Earned Value
Management38 presentation she had prepared. The audience was mute. Very few questions were asked.
After all the information was “neutral”, there were no big visible disasters in the project. A few questions
were open, but nothing that the project team was not familiar with. But then…
“However,” Carmen continued, “after reviewing and redoing the project plan for many hours during
most of last night, I found that the progress reports we are using are completely inadequate to show us
the real progress of the project from our customer’s point of view.” She waited to see the reaction of the
audience. Nothing. Just silence and puzzled looks.

                                                                                                     
38
 More  on  Earned  Value  Managment:  https://en.wikipedia.org/wiki/Earned_value_management  
74  

“What do you mean? “ Finally asked her boss.


“Well,” started Carmen, “the fact is that our requirements are indeed being implemented. We do see
progress from an EVM point of view, but…”
“But what?” Insisted her boss.
“But, the truth is…” Carmen hesitated. “The truth is that we have nothing actually running that we could
show the customer in the progress meeting next week. We have many requirements implemented, but if we
look at the project from the point of view of the end-user we have nothing, really nothing, we can show!”
“How is that possible?” The whole team asked in unison.
Carmen continued. “Remember when we reviewed the requirements document back when we were
creating the bid? Herman asked us, how we knew we were done with each requirement. And we answered
that we would know when we would put them all together for the first system testing rounds, right?”
“Yes, but I’m not getting your point,” commented a team member, “that is how we’ve always done it. And
it worked!”
“Correct, it worked before.” Continued Carmen. “But for this project we are being asked to report
progress with running software every month. That is new. We’ve never had to do that before because
most of our projects were small and we went from start to end without having to demonstrate progress.”
Carmen stopped for a moment, and then decided to show them the RTS progress graph she created. The
flat line was about to come out of the closet. She was nervous…
“Here’s how our progress from a user perspective looks like.” Carmen showed them the same graph she
had prepared during the early hours of the morning.
Albert couldn’t be silent anymore: “How is that possible? I’ve implemented at least 10 of the
requirements, and I’m only one of the 20 developers in the team!”
“You are right Albert,” Carmen reassured him, “but the requirements you’ve implemented are all in the
database and service layers. In fact most of the requirements we’ve implemented are in those areas. The
fact is that we don’t have one single end-to-end capability implemented.”
“If we look at the capabilities we need to deliver,” Carmen listed the INVEST Stories on the screen, “we
can see that we have started working on five of the 64 capabilities we need to implement, but we have not
finished any of them. Albert, tell me, how many of your requirements have been tested by Janet and her
testing team?”
“None, they are still writing the test specification,” replied Albert.
“Exactly! We have done a lot of work, and we’ve started many things. But the truth is that we have
finished nothing from our end-users point of view.”
By  plotting  the  progress  of  the  project  in  RTS’s  Carmen  is  giving  her  team:  
•   Clear  and  verifiable  progress  information.  
•   Actionable  information.  
“Carmen,” started her boss, “what do you suggest we do now?”
“That’s what I want to discuss with you and the team. I have an idea, but you all must be on board or it
will not work.”
Carmen explains her ideas to the team, and at the end they all committed to working as she proposed.
“You have the go ahead, Carmen. But I want to see some progress by next week already or we will have
nothing to show the customer!” Finished her boss.
75  

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  

THE  FAST  TRACK  TO  NOESTIMATES  

“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.

Slicing  User  Stories  to  Assess  Progress  and  Manage  


Scope  
During  the  conversation  that  follows  Herman  will  help  Carmen  slice  the  User  Story  she  just  read  
into  smaller,  runnable,  testable  Stories.  The  most  important  attribute  of  those  Stories  is  that  they  
be   small.   How   small?   That   depends   on   your   need   to   assess   progress.   If   you   need   to   assess  
progress  every  day  in  a  project  that  lasts  a  few  weeks,  for  example,  then  your  Stories  should  be  
completed  at  the  rate  of  several  per  week.  As  an  example,  you  could  aim  to  have  about  1-­day  
time  boxed  Stories,  so  that  every  day  you  can  see  that  some  Stories  are  delivered  (or  not!),  and  
everyday  you  can  assess  progress.    
If  your  project  is  several  months  long,  then  assessing  progress  every  week  may  be  enough  and  
your  Stories  may  be  time  boxed  to  a  few  days  (say  2-­3  days).    
Here’s  a  story  of  how  my  friend  Ángel  Medinilla  used  some  of  these  concepts  to  save  a  failing  
project:  
81  

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.  

Other  Slicing  Heuristics  


There  are  many  possible  slicing  heuristics  that  you  can  use  to  take  a  large  User  Story  and  slice  
it  into  manageable,  and  most  importantly,  progress  uncovering  parts.    
As   an   example,   you   can   slice   following   your   user   journey   steps   (login,   search,   select,   modify,  
accept,   etcetera);;   you   could   use   different   scenarios,   roles,   or   personas;;   you   could   slice  
according  to  input/output  data;;  you  could  divide  according  to  complexity,  interfaces,  current  level  
of  knowledge,  test  case.  And  the  list  goes  on.    
Even  when  a  Story  looks  like  it  can  not  be  divided  further,  there  is  always  a  way  to  bring  it  down  
to  smaller,  independent  pieces  that  can  be  developed  and  tested  separately,  giving  you  a  better  
idea  of  progress  than  the  amount  of  hours  you’ve  put  into  a  Story  versus  the  “estimated”  effort  
to  complete  it.  If  you  estimated  40  hours  and  you’ve  put  in  4  hours,  can  you  really  say  that  you  
are   10%   done?   On   the   other   hand,   if   you   divide   the   Feature   in   ten   separate   slices   and   you  
complete  two  of  them,  that’s  a  far  more  tangible  progress  indicator.    
“Working  software  is  the  primary  measure  of  progress.”    
Agile  Manifesto  
The  most  important  aspects  of  slicing  are:  

•   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  

Determining  Progress  from  Historical  Data  


Carmen  asked  some  very  important  questions:  how  to  assess  progress  when  we  actually  break  
down  an  INVEST  Story  into  smaller,  thinner  slices?  After  all  they  are  not  the  same  size  as  the  
original   INVEST   Stories   and   those   slices   may   not   even   be   “sellable”,   i.e.   ready   to   go   into  
production.    
The  lack  of  historical  progress  information  is  a  very  common  obstacle  when  applying  the  ideas  
behind  #NoEstimates.  We  don’t  always  have  enough  historical  information  that  we  could  use  to  
model   the   future   progress   of   a   particular   project.   The   reasons   are   varied:   we   may   not   be  
working   with   the   same   technology;;   we   may   not   be   working   with   the   same   team;;   we   may   not  
have   a   stable   team;;   we   may   never   have   used   small   increments;;   we   may   have   only   used  
waterfall  in  the  past,  etc.  
This  is  why  it  is  important  to  start  collecting  historical  information  now.  Don’t  wait  for  tomorrow,  
start   collecting   information   about   your   project’s   progress   and   use   that   to   forecast   progress   as  
soon  as  possible?  How  soon?    
As   the   proverb   goes,   “the   best   possible   moment   to   plant   a   tree   was   twenty   years   ago;;   the  
second  best  moment  is  now”  
In  my  research  I’ve  normally  used  the  progress  data  from  3  to  5  iterations  (or  weeks  if  you  are  
using   Kanban/flow   based   software   development)   in   order   to   define   the   initial   progress   rate.  
Many  expect  that  you  need  many  more  data  points  before  you  can  make  a  useful  prediction,  but  
that  is  not  the  case.  Three  to  5  iterations  are  typically  enough.40  
In  one  project  I  took  the  information  from  the  first  3  weeks  (how  many  RTSs  were  delivered  to  a  
production-­like   environment,   also   known   as   the   project   velocity   or   throughput)   and   merely  
extrapolated   that   to   the   rest   of   the   project.   The   average   velocity   multiplied   by   the   number   of  
sprints  we  had  available  in  that  project  gave  us  an  indication  of  the  total  amount  of  RTSs  that  
we  could  deliver  during  the  full  length  of  the  project.    
Below   you   can   see   a   graph   detailing   the   number   of   Stories   delivered   in   every   one   of   the   21  
iterations  for  that  project.    

                                                                                                     
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  

Multiple  Levels  of  Granularity  


In   Carmen’s   project   we   have   multiple   levels   of   granularity.   Carmen   was   able   to   divide   the  
project  requirements  into  somewhat  large  INVEST  Stories;;  which  we  call  Features  because  they  
cannot  be  delivered  in  a  2-­week  or  Sprint  timebox.  Together  with  Herman,  Carmen  was  able  to  
further   divide   each   Feature   into   smaller   INVEST   Stories;;   which   we   will   call   Stories   or   User  
Stories.   User   Stories   are   constrained   to   be   delivered   in   a   period   of   2-­weeks   or   a   Sprint   in  
Scrum.  
In   my   practice   I   advise   that   Features   be   given   a   mandatory,   maximum   calendar   duration   of  
around  two  months  depending  on  project  size  and  calendar  duration.  The  smaller  Stories  should  
also   be   given   a   mandatory   maximum   calendar   duration:   I   like   half-­day   to   one-­day   because   it  
helps  teams  find  and  solve  execution  bottlenecks  on  a  daily  basis.  But  your  mileage  may  vary.  
In   any   case,   a   User   Story   should   not   be   allowed   to   grow   bigger   than   about   half   the   length   on  
your  iterations  (a  common  iteration  size  is  two  weeks).    
By  establishing  these  different  levels  of  abstraction  for  requirements  you  will  be  able  to  gather  
progress  information  at  different  levels.  You  will  be  able  to  ask  and  answer  the  questions:    

•   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.  

How  Do  I  Mandate  the  Size  of  a  Feature  or  a  User  


Story?    
“Work  always  expands  to  fit  the  available  time”,  states  Parkison’s  Law.    
Parkinson’s   Law   is   not   the   only   example,   we   have   many   other   quotes   and   phenomena   that  
basically  describe  the  same  thing:  when  it  comes  to  knowledge  work,  it  will  always  take  at  least  
as  much  time  as  you’ve  allocated  it  to  take.    
In  statistical  terms,  if  you  plotted  the  duration  of  all  tasks  in  a  project  it  would  create  a  histogram  
similar  to  the  one  below.    
90  

 
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.    

Why  Should  I  Mandate  the  Size  of  a  User  Story  or  


Feature?  
There  are  several  reasons  for  mandating  small  enough  calendar  duration  for  User  Stories  and  
Features.   The   most   important   one   in   our   #NoEstimates   context   is   that   it   will   give   you   the  
progress  information  you  need  to  be  able  to  forecast  future  progress  and  deliveries.  See  below  
the  Feature  velocity  graphs  of  two  different  teams,  one  that  mandated  the  size  of  Features  to  1-­
month  and  the  other  that  estimated  the  size  of  Features  instead  as  they  were  defined.  You  can  
see  that  the  first  graph  provides  regular  progress  information  and  a  reliable  metric  for  you  to  use  
in   forecasting.   While   the   second   graph   shows   how   Parkinson’s   law   impacts   the   relative  
unpredictability  of  progress.  
92  

 
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?    

Extrapolating  from  User  Story  to  Overall  Project  


Progress  
“Herman, we are close to the end of the week and I wanted to review the progress with you before
presenting it to my boss. Can you come over”, Carmen asked Herman.
93  

“Sure, let’s review what you have.”


Carmen and Herman were looking at a spreadsheet. The sheet showed the number of User Stories that
were completed per day as well as the number of User Stories left to complete for the Feature under
active development.

 
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.  

“Great! This is very valuable information!” Said Herman excited.


“Great? Are you serious? We were not able to finish the Feature we started with this week. There are still
4 User Stories left even though we completed 9 User Stories out of a Feature that was thought to have 10
User Stories!” Carmen said expressing frustration.
“Calm down Carmen. You are right, but you are not seeing what the data is telling you.” Continued
Herman trying to change the tone of the conversation. “Look, the team was able to complete 9 User
Stories this week, that’s a rate of about 2 User Stories per day. That gives you an indication of what is the
capacity of the team at the moment. All other things being equal you can trust that the team will continue
to deliver around 2 User Stories per day. Some days it may be zero, and other days it may be three or
four, but this is valuable information.”
94  

“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).  

1-­2-­3:  Step  by  Step  Towards  #NoEstimates  


As   with   any   important   change   in   the   way   you   work,   bear   in   mind   that   moving   directly   from   a  
traditional  estimation-­based-­plan  environment  to  full  #NoEstimates  approach  will  be  risky  most  
of   the   time,   and   perhaps   not   advisable.   This   is   the   second   reason   we   considered   the   idea   of  
giving   you   a   step-­by-­step   guide.   So   please,   keep   in   mind   that   the   list   below   includes   some  
specific  steps  you  can  follow  in  order  to  explore  how  many  estimates  you  really  need  in  order  to  
plan  and  manage  your  projects.  
1.   Move  to  Story  Points.  Even  if  this  is  just  another  way  of  estimating,  getting  rid  of  ‘hours’  and  
‘days’   has   too   many   benefits   to   ignore   them.   We   already   discussed   previously   in   this   book  
the  problems  of  using  time-­based  metrics,  which  are  an  indication  of  cost,  to  measure  project  
progress.  Even  if  it’s  just  another  proxy  metric  for  productivity,  Story  Point-­based  estimation  
gives  a  better  understanding  of  how  things  like  risk,  complexity,  expected  dependencies  for  
each   Story,   etc.   Given   that   a   large   amount   of   time   it   takes   to   deliver   one   Story   is   spent  
waiting,  Story  Point  estimation  is  more  likely  to  help  you  assess  the  true  impact  of  one  Story  
in  your  project.    
2.   Stop  estimating  tasks.  One  of  the  saddest  thing  we  witness  in  planning  meetings  is  a  team  
casting  an  estimate  for  a  Story,  dividing  this  Story  into  tasks  and  then  casting  estimates  for  
each   task,   adding   them   all   and   seeing   if   the   number   matches   the   original   estimate   for   the  
whole   Story.   Instead   of   that,   just   don’t   create   sub-­Story   tasks   or,   if   these   are   valuable   for  
team  synchronization  –  knowing  who  needs  to  be  doing  what  –  just  stop  estimating  them.  For  
progress   reporting,   just   ask   the   team   about   the   Story   progress   –   did   we   progress   well  
yesterday?  Can  we  complete  the  Story  today?  
3.   Limit  the  calendar  duration  of  Features  and  Stories.  For  Stories,  specifically  you  should  
aim  for  one,  maybe  two  days  of  calendar  duration  to  finish  each  Story.  Even  if  this  is  not  easy  
when  you  try  for  the  first  time,  this  approach  will  give  you  concrete  benefits.  For  example:  any  
Story  started  at  the  beginning  of  an  iteration  that  was  not  finished  by  the  end  of  the  iteration  
is  showing  an  organizational  impediment  that  you  should  investigate  further.  
4.   If   you   are   already   using   Story   Points,   remove   some   ‘planning   poker’   card   options.  
Start  by  asking  team  members  to  rate  everything  either  as  a  1,  a  3  or  an  8.  This  means  that  
anything  bigger  than  a  1  is  a  3  –  this  avoids  the  “is  it  a  2  or  a  3  point  Story?”  discussions  –  
and   anything   bigger   than   a   3   is   an   8.   Anything   bigger   than   an   8   should   be   sliced.   Slowly  
decrease   the   options.   For   example,   use   only   1   and   3,   and   soon   you   will   be   able   to   ask   a  
simple  question:  “can  we  get  this  Story  done  by  tomorrow  if  we  start  working  on  it  today?”  
97  

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  

THE  FIRST  STEP  TO  DELIVER  A  


PROJECT  ON  TIME  IS  TO  RECOGNIZE  
THAT  WE  ARE  LATE  

“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.

How  to  Recover  from  a  Late  Project?  


Carmen  was  happy  the  client  had  taken  the  bad  news  without  much  anger,  but  she  now  had  a  
challenge.  How  to  recover  from  the  delay  in  the  project?  In  the  best  case  the  project  would  be  
done  12  months  from  that  meeting,  which  is  2  months  late.  However,  the  most  likely  scenario  is  
somewhere  between  12  months  and  4  years.    
This  situation  is  by  no  means  uncommon42.  Many  projects  face  this  situation  late  in  the  planned  
schedule.  What  Carmen  was  able  to  do  with  the  help  of  #NoEstimates  was  to  create  the  
conditions  to  have  the  scope  discussion  with  the  customer  quite  early  in  the  project.  One  of  the  
key  ideas  with  #NoEstimates  is  to  focus  the  conversation  on  the  value  of  the  work  to  be  done.  
By  forecasting  and  showing  progress  (or  the  lack  thereof)  very  early  on,  Carmen  is  bringing  the  
scope  discussion  to  the  first  few  days  of  the  project.  This  is  the  time  when  customers  are  willing  

                                                                                                     
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.”

Flexible  Requirements  Management  for  Maximum  


Scope  Visibility  
We  often  think  of  the  scope  for  a  project  as  an  inflexible  –  or  at  best  slightly  negotiable  –  list  of  
requirements  or  functionality.  However,  projects  have  a  tendency  to  grow  in  scope  precisely  
because  that  list  is  very  flexible.  The  scope  creep  phenomenon  is  only  one  example  of  that  
flexibility.  Requirements  are  added  to  the  list  because,  when  looking  at  the  details,  we  find:  

•   Cases  we  didn’t  think  about.    

•   New  possible  situations  in  which  the  existing  requirement  could  be  used.    

•   Performance  aspects  we  had  not  considered.    

•   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.

Creating  Options  by  Slicing  Features  


Each  Feature  (or  story)  in  a  product  backlog  contains  many  undiscovered  options.  By  taking  
Features  as  they  are  without  slicing  them  into  thin  slices  of  functionality  we  implicitly  commit  to  
an  implementation  strategy.  
However,  when  we  slice  Features  we  create  options  that  allow  us  to  pro-­actively  manage  the  
scope  of  a  project.    
Let’s  return  to  the  IT  Support  Ticketing  System  project  we  discussed  before.  A  Feature  like  the  
one  below  will  not  allow  us  to  manage  the  scope  actively.  

•   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.  

How  to  Communicate  Progress?  


Carmen had worked hard all night, but the picture had not changed. Carmen was able to remove one
more Feature, and split another 12 Features in search of ways to reduce the scope.
Carmen began: “Herman, thanks for taking my call this early. I was up all night. I was able to find one
more Feature to remove, and split another 12 Features, but now my list of Features - even with the five I
removed this week - is up to 93. It is as if this exercise created even more work instead of reducing it.”
“This is part of the process,” said Herman trying to reassure Carmen. “When you split the Features it is
natural that the number of Features grows. But that does not mean that you increased the amount of
work. It only means that you’ve found work in the list of Features that was already there, but you were
not aware of before. This exercise has helped you better understand the backlog. That’s why it feels
overwhelming.”
“Sure, I understand that, but I need to start removing Features and I don’t see where to start. There’s just
too many Features for me to review and classify.” Carmen doubted the process.
“You’ve only completed the first part of the work. The next step is to review the new Features with your
team. They’ll have ideas on how to further slice those Features and suggestions as to how many of those
you could avoid with different implementation strategies,” Herman continued.
“I know this is asking a lot, Herman. But can you help me out with hosting a meeting to do just that? I’m
tired and don’t feel confident enough to help the team see through these Features.”
“Sure Carmen, let’s meet at the office.”
“Hmmm, it is better if we meet in the meeting room floor to avoid indiscrete looks. I’ll take the team
there. Talk soon!” – Carmen hung up and felt a bit better after having obtained Herman’s cooperation.
She was not yet completely sure that his ideas would work. But now she was committed to trying his ideas
in practice. She felt the alternative of going back to her old approach to project management was no
longer an option.

                                                                                                     
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  

GAIN  THE  CUSTOMERS  TRUST  WITH  


ROLLING  WAVE  FORECASTING  

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.

The  Never-­Ending  Pool  of  Ideas  


What  Carmen  and  her  team  just  went  through  is  very  common  in  software  projects.  Once  we  
start  looking  into  the  details  of  a  set  of  requirements  (Features  or  user  stories)  we  always  find  
details  we  had  not  thought  about.  This  is  normal,  and  expected  in  every  software  project,  
especially  in  those  where  planning  starts  at  the  top  and  only  slowly  trickles  down  to  the  team  
level.    
In  software  and  hardware  (aka  embedded  software)  projects  it  is  also  natural  that  we  discover  
certain  quirks  in  how  the  hardware  works  only  when  the  software  system  has  grown  enough  to  
uncover  those  unexpected  behaviors.  That  phenomenon  leads  to  more  work  needing  to  be  
done  on  the  software  side  for  the  simple  reason  that  hardware  is  much  harder  to  change.  
Scope  creep  is  the  natural  state  of  software  projects,  it  feels  like  the  pool  of  ideas  grows  with  
every  day  that  passes,  and  the  work  to  be  done  grows  with  it.  That  is  why  when  we  apply  
#NoEstimates  we  focus  on  managing  the  scope  from  day  zero.  In  order  to  successfully  manage  
scope  from  day  one,  we  need  to  have  a  tool  that  shows  progress  visually  every  day,  or  at  least  
every  week.  We  can’t  wait  for  a  specific  milestone  later  in  the  project  to  find  out  how  much  work  
we  need  to  either  remove  or  delay.  In  software  projects,  the  work  to  be  done  grows  every  day,  
and  our  ability  to  see  that  growth  also  needs  to  be  ensured  every  day.    
A  common  approach  to  creating  that  visibility  is  to  use  the  technique  Carmen  used:  slice  your  
Features  and  user  stories  so  that  you  can  review  progress  on  a  daily  or  at  least  weekly  basis.  In  
practice  this  means  that  every  week  several  stories  should  be  completed  to  allow  you  to  assess  
progress.  And  every  few  weeks  (every  month  or  so)  several  Features  should  be  completed.  
You  should  involve  the  whole  development  team  in  the  slicing  of  Features  because  they  will  
have  insights  into  the  components  of  the  work  that  can  be  made  independent,  and  how  to  
validate  each  slice  separately.  Validating  each  slice  from  the  value  and  quality  perspective  is  
essential  for  us  to  assess  progress.  Work  waiting  to  be  validated  from  value  and  quality  
perspective  is  for  software  development  what  inventory  is  for  manufacturing:  a  liability.  You  will  
have  to  pay  dearly  for  that  work  later  on,  unless  you  validate  that  work  immediately.  
How  do  you  visualize  progress  when  you  don’t  even  know  all  the  possible  dependencies  that  
will  emerge  later  on?  That’s  a  question  that  is  addressed  by  the  progress  reporting  solution  
described  here.    

Reporting  Progress  with  NoEstimates  


The meeting with the client, Mr. McNeal, was about to start. Expectations were high. The day before
Carmen and her boss had a heated debate about how to present the progress of the team so far. Carmen’s
boss was of the opinion that they should report progress based on the initial count of Features, before the
“scope creep” that Carmen had uncovered. Carmen was adamant; she wanted to show the situation as
she saw it. The tension was high.
114  

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:  

•   Clear  and  verifiable  progress  information.  

•   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.  

Rolling  Wave  Forecasting  Allows  You  to  Adapt  Your  


Plans,  Constantly  
Carmen  needed  to  present  a  possible  date  of  delivery  to  Mr.  McNeal,  and  she  was  planning  to  
obtain  that  date,  the  same  way  she  had  always  done  it.  Through  a  detailed  plan  (Gantt  chart)  
where  she  could  review  assumptions,  planning  details  such  as  dependencies,  risks,  etc.  But  
was  that  what  Mr.  McNeal  wanted?  
By  creating  a  detailed  plan,  Carmen  was  about  to  commit  the  work  of  the  team  for  the  next  few  
weeks.  Once  that  commitment  was  made  (and  the  implicit  promise  to  Mr.  McNeal),  the  team  
would  no  longer  have  the  option  to  adapt  to  new  information.  All  the  assumptions,  sequence  of  
work,  dependency  handling,  risks  and  errors  would  be  locked  in.  She  would  have  removed  all  
flexibility  from  her  project.    
In  the  past,  Carmen  would  have  added  buffers;;  created  contingency  plans  and  worked  hard  at  
managing  expectations.  But  all  that  is  unnecessary  when  we,  instead  of  giving  a  commitment,  
give  a  forecast.  At  the  heart  of  the  rolling  wave  forecast  is  the  acceptance  of  uncertainty.  This,  in  
turn,  allows  us  to  keep  our  options  open.  To  be  flexible  and  able  to  respond  to  change  –  just  like  
the  Agile  Manifesto  says.    
In  a  rolling  wave  forecast  we  create  scenarios  about  the  future.  We  speculate  about  how  the  
events  will  unfold  and  reflect  those  analyses  on  a  forecast  that  shows  a  range  of  possible  
outcomes.  In  this  particular  case,  Carmen  will  assume  that  the  throughput  of  the  project  will  be  
within  a  range  and  therefore  will  give  not  one  number,  but  an  interval  in  time  in  which  the  
Feature  that  Mr.  McNeal  wants  is  likely  to  be  delivered.  From  this  information  Mr.  McNeal  can  
then:  

•   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  

Presenting  The  Rolling  Wave  Forecast  to  a  Client  


Carmen was nervous to read Mr. McNeal’s answer to her email. She had delivered the forecast she had
created with Herman based on the throughput of the team. She remembered the trembling fingers with
which she wrote “10 to 16 weeks from now”.
The day started with a short conversation with her boss. Carmen was surprised by how silent and absent
he had seemed, but now her mind was on her e-mail client. She opened the program, typed her password
and waited anxiously until the emails were downloaded. Usually this happened in a few seconds, but
today she felt the process took ages. She tried to guess Mr. McNeal's answer. Will he be furious? Angry?
Get her fired?
Carmen opened the email message of Mr. McNeal. It read:
“Subject: RE: forecast for project Big Fish
Dear Carmen,

Thank you for the information you sent me yesterday. It


was most useful. Thanks to your detailed forecast and
report on the possible outcomes for the next few weeks
in the project I have been able to reprioritize the
Feature we discussed yesterday.

Please call my secretary and arrange a meeting for


today. I’d like to discuss the project’s next steps with
you.

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  

ABOUT  THE  AUTHOR  

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  

More of What Others are Saying about NoEstimates, The Book

"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
 

Вам также может понравиться