Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduction
The term #NoEstimates is something that I see and hear more and more
about in the Agile world. I was curious if it’s one of those buzzwords that will
fade away, or if it was a real movement behind. Luckily I had the opportunity to
become a beta reader of #NoEstimates, the book written by Vasco Duarte that
has been published recently.
#NoEstimates opened up my eyes in the search for something new, something better. In this paper
I will share my experiences on that journey with you. A little bit more about my background may be
in order. The company I’m working for makes products and services for management of mobile
data services for Wi-Fi and LTE. Currently we have an R&D department co-located in one office,
with two development teams using Kanban (Scrum was previously used). If your context is very
different, the experiences described here may not be applicable to your situation.
In software development we know that there are problems with estimates and that we shouldn’t
plan and make our whole business rely on them. I would say that this fact is common knowledge,
but no one seems to be doing so much about it. Not before the #NoEstimates movement started by
Woody Zuill, Neil Killick, Vasco Duarte and others. After all, estimates are just guesses, sometimes
they are educated (some type of work is behind the numbers) but nevertheless they are still
guesses.
The #NoEstimates book tells you how to measure progress in a project, to be able to make
forecasts (are we still on track to deliver before the deadline?) and take on an active management
of the scope. You may think that the scope is also fixed. After all, it has probably been agreed to in
a requirement specification. You can still work with the features and slice them to only deliver the
functionality that are of true value to the customer.
How you incorporate #NoEstimates is individual (and context dependent), in a ”Methods & Tools”-
article [1] Henri Karhatsu said ”the heart of #NoEstimates is continuous improvement”. My main
takeaways after getting more knowledge are the following:
• Forecasting and planning based on actual data
• Active scope management.
In this paper I will focus on forecasting and planning, and not so much on active scope
management.
My journey took off after I read a very interesting blog post called ”How far have we come?” [3] by
Marcus Hammarberg, and my manager had approached me with the following task: ”Can you
make a status report where we are in the project?” Using this as a starting point together with the
new knowledge I had gathered, I took a new approach to this task than what I would have
previously taken.
Measuring
I had asked the teams to measure how many stickies they complete each week. We got this idea
from the book ”Kanban in Action” [4]. The reason we started to measure stickies delivered was to
see if our kaizen efforts (continuous improvements) were positive or negative.
Every Friday the team leader counts all the stickies in the ”Done” column on the Kanban board,
write the figure on the board, and then remove them. This is repeated every Friday. Each sticky
correspond in our kanban to a bug-fix or a sub-task of a story/feature. Hence, the measuring is
done on the lowest level of work that we track, and not on the story, or feature-level as is
suggested in the #NoEstimates book.
By plotting the numbers stored for each week the picture above was created. In the spreadsheet
program it was also possible to calculate an average, in this case 18 tasks/week.
You can argue that some of those tasks were only a few hours of work, while others may have
been much longer (days or even weeks). That is true of course, but by measuring over a longer
One other argument is that work in progress is not considered or valued by doing this type of
measurement. Ongoing tasks are not considered. For example a task that was originally estimated
to five days, and now only have one day left on it, i.e., should be 80% done. My answer to that is,
how do you know that it’s 20% left? That is just an estimate. You don’t know that it’s done, before
it’s done! ☺
The last argument I will add for now is that you can’t make predictions on the future based on data
with this much variation. Correct, you need to use precaution when making calculations, I will come
to that later.
Remember that the effort for performing this type of measurement is less than five minutes per
week! If you want to set up something more advanced (and thereby time consuming), by all
means, please go ahead and do it!
”I agree that understanding capacity is key to being an #agile organization, and it's nothing to do
with estimating.”
- Neil Killick (Pioneer of #NoEstimates, tweet comment on ”Speedometer” [5])
d = distance
v = velocity (speed)
t = time
d = v * t
v = d / t
t = d / v
v * t
An example: I want to travel by car to another city that is 100 km away, and I’m holding an
average speed of 50 km/hour. How long will the trip take?
t = 100 / 50 = 2 hours
This is simple mathematics that all of us understand, what does this have to do with project
management?
Quality
Cost Time
(people) © Project Management Institute, (deadline)
www.pmi.org
These three variables can be depicted in something that is called The Iron triangle. A common IT
project of today may look like this: ”In nine months we would like to have project X delivered to the
cost of one million USD”. As a supplier of that project you have to make two hard commitments, in
time (delivery date) and cost. The only thing left that can vary is the third variable, namely scope
(that you can control and manage). By doing so your project is ”value driven” instead of being
”scope driven” (where you can control time, i.e., delay the project or add more people to it, which
seldom works, and thereby adding cost).
Basically it works like this. You can have two variables fixed, but the third needs to be flexible. If
you do a fixed price & fixed scope project, the time plan must be variable. If all three are fixed and
your project runs into trouble, the quality is hurt (and you will be out of business in the long run).
As written earlier I have done estimates, for example saying that something is 20 days of work.
Thus I have been guessing on the scope. Then I have made something even more questionable, I
have committed to delivery times using those estimates. ”Are you out of your mind?” you might
say. ”How can you promise to deliver something in four weeks knowing that it will take 20 days to
do?” Hold your horses a bit, I have been using ”the factor”. What is ”the factor”? The factor is
”some magic thing” that comes from the stomach area of software developers ☺. A more correct
name is gut feeling.
So we need ”the factor” to calculate the actual distance we think we need to go. You can call it a
”risk margin”, ”our collective knowledge of estimation boiled down to a number”, or the many
peoples favorite, π. Examples of values: 30%, 2x or 3.14159…
But what if we could know ”the factor”? Then we could combine the two triangles together to
enable forecasting. Scope
s = scope (functionality)
c = capacity (”speed”)
t = time
Then we can use the same thing, if you have two variables
given you can calculate the third. Like:
s
s = c * t
c = s / t
t = s / c
c * t
Capacity
Cost Time
(people) (deadline)
The key thing to all this is, of course, for you to know your capacity. Without it you can’t use
the formulas above. You can of course ”cheat” and replace capacity with ”the factor”, but that is
really only the second best option. You have to measure the capacity, like the speedometer of
your car!
If you are not measuring capacity of your teams and you perform estimates on scope to give
delivery times, you have to use ”the factor”. Wouldn’t it be better to use capacity, something that
you can actually know (by measuring), and even better, do something about (increase it by
continuous improvements to your process).
Back to the project I talked about earlier. Someone did a time plan stating that the project needed 6
weeks for bug fixing (I have to admit, it was me, back in my ”old life” ☺).
Looking inside our bug tracking system, I found that 213 bugs were assigned to the project.
Scope
50%
Time
6 weeks 12 weeks
Without judging the data to be the absolute truth (i.e., using it with precaution), we consulted The
Iron Triangle to come up with the following conclusions:
• Cost - Investigate the possibility to borrow some members from another team to help out with
this project
• Time - Investigate the possibility to delay the project delivery with the steering group
• Scope - Initiate activities to manage the scope. Must this bug be solved in this project, or can it
wait? Is it old and can be removed? Is this bug already fixed, but our tracking system has not
been updated? Etc.
Your conclusions may be different when you try this out. In the next section I will describe how we
use this in planning and prioritization.
Better planning
How do we use all this in our planning? For us it starts with the backlog. Often product backlogs
are kept in spreadsheets or internal systems. They are ”hidden” for the masses, to be shown and
worked on by only a few people. Our backlog is visualized on a white board inside our ”Nerve
center”-room, where we have all the Kanban boards and the teams perform their daily standup
meetings.
To visualize our backlog we use a priority pyramid [7]. What is the extra value that the pyramid
bring besides visualization? It gives hard boundaries that highlight the priority. Given the size of our
pyramid and the stickies that we are using, there is a physical limit how many that can fit inside!
Also seen in the picture above are the WIP-limits (Work-in-Process limits). Basically it is a limitation
for how many tasks that can be present in each section of the pyramid at any given time. Looking
at the example above, it’s the figures within parentheses (i.e., 1, 2 & 4). Use an increasing
sequence n x 2 for each underlying section in the pyramid. Starting with 5 at the top will give WIP-
limits of 5, 10, 20, etc. I think you get the hang of it.
Tasks flow from the bottom of the priority pyramid upwards, as the arrow to the left in the picture
indicates. When a task is completed it is moved to a ”Done”-area outside of the pyramid.
Going back to the picture with the priority pyramid, let’s assume that the yellow sticky in P1 is
completed and moved to done. Now we need to make a business decision. Shall the green or
yellow sticky in P2 be started (and moved to P1)? Since we haven't made any premature decisions
about priority, but instead waited until the very moment it’s needed, we usually have all the
information at hand to make the best decision possible. Let’s say that the green sticky represents
the most important task right now and this is moved to P1. This is the only business commitment
we make.
Now we make two more decisions, which do not represent a commitment, and therefore can be
changed later. We move a P3 task to P2, let’s say the red sticky. And we write a new sticky for an
upcoming task from the backlog list. Next time a task in P1 is completed we repeat this procedure.
This might feel cumbersome, and it’s true that you don’t want to have too small tasks (in terms of
work effort needed). Features / User stories represents a reasonable size of work effort. To make
the prioritization simpler it’s also good if the items are of approximately same size (to allow flow
and predictability).
We perform planning meetings with four different cadences. Roughly they correspond to the
following.
All the stakeholders meet and agree on the targets and major scope of the
release. It’s very important that the targets are meaningful and understandable
by all. The targets shall be helpful in the daily work. ”Shall I do A or B?”, the
targets must guide the decision. Here is an example of a target: ”The system
shall have zero downtime”.
Key stakeholders meet and discuss status, make needed decisions (about time and cost in the
The Iron Triangle) but most important continuously discuss the scope. Dividing the work into
smaller pieces and deliver the things with highest value first to the customer. The agenda for those
meetings usually look like this:
• Status - Where are we according to time plan?
• Review of priority pyramid - What has been completed? What is
ongoing? What needs to be started next? Are all priorities correct, shall
we move tasks ”up” or ”down” in the pyramid?
• Adjustments - Changes needed in time plan, team or scope?
• Other - Anything else urgent that affects the delivery?
Constant evaluation of the project using The Iron Triangle is needed to be able to handle the
uncertainties that come along the road. See it as the GPS of your car that re-plans the route if you
have to make a turn that takes you off the original route.
”Dispatch” (daily)
Immediately after the daily standup meetings we perform a dispatch meeting. Many of our tasks
need to pass through this meeting. Definitely all bugs found are discussed here, but also some
sub-tasks for stories/features. Excluded are obvious ones, like sub-tasks for a decided and
ongoing story/feature. In this meeting we discuss each item and then decide on two things:
• Target release - Can be current, next or future. There is also a possibility that we decide not to
fix it all, or if really critical we make a patch.
• Importance - Promised, needed or desired. Promised means things committed to one or more
customers, needed is things deemed important to include, and desired are mainly represented by
internal improvements / maintenance / clean-ups.
Some examples of discussions on this meeting: ”Story X has a potential sub-task Y. Y is not
requested by any customer right now, but it would be beneficial in the future. Shall this desired task
be added to the current release, or wait to the next?” or ”Bug Z is found, must this needed task be
included in current release?”.
Summary
Finally back to the project, what happened? With the help of measuring capacity and the
calculations made by using the measured capacity, we did the following:
• Cost - We did not change the team working with the project. Instead we moved some stories
from the project to the other team, thereby adding more people
• Time - We delayed the project
• Scope - We started to very actively manage the scope of the project. We emphasized questions
like: ”Is this feature promised to any customer?” and ”Is this bug fix needed for this release or can
it wait to the next?”. Then we worked ”from the top” (promised & needed) with the possibility to
”drop from the bottom” (desired) if, and when, it was needed.
And the most peculiar thing of all? No questions were asked! There is more power in using
measured data than gut feeling!
More information
Email: theagileist@gmail.com
Twitter: @theagileist
Blog: http://theagileist.wordpress.com