An Interview with Don Reinertsen (1/2)
Applying Batch Size to Product Development:
Unconventional Wisdom about Speed and Flexibility - Part 1 PDBPR: Recently, you presented some
surprising data suggesting that very few developers wait until they have most requirements
before starting design work. Where did your data come from and what is it telling us?
Reinertsen: The data comes from 500 attendees of my
class at CalTech over the last 10 years. Its a statistically robust sample from many
different industries. It shows that most design work begins long before all requirements
are known. For every developer who waits until 80 percent or more of requirements are
known, there are 6 developers who have already begun designing.
PDBPR: Given
that most people are beginning the design phase with incomplete knowledge of requirements,
whats the indication that you know enough to begin design?
Reinertsen: The question I would always ask is this:
Do I have enough information to do useful work? The notion that you
need all of the requirements before you begin designing is tied to the concept that
requirements are a monolithic entity that can only be complete and usable, or incomplete
and unusable. In reality, requirements can be decomposed into subsets of data of differing
importance, and which are needed at different times. Therefore, it makes sense to finalize
the requirements on the portion of the design that we need to work on first, and proceed
with this work while we resolve other less urgent requirements.
For example, if Im designing a cell phone, I
eventually must decide what words will appear on the display. However this can be decided
very late in the process since it can be easily modified in the software. But, I cannot
postpone deciding how big the screen is going to be. The size of the LCD display affects
the package size, the chips I use to drive the display, etc. You dont want your
marketing people researching what words to use until they freeze screen size. The general
principle is to focus first on the characteristics of the phone that are preventing the
designers from working on the design.
PDBPR: And
this relates to the way in which you apply "batch size" to product development.
Reinertsen: Exactly. If you go to the average
product developer today and ask, what is the batch size youre using in
product development and why? their response would be what do you mean
by batch size and why would I be interested in it? Its simply not a
conceptual frame through which most developers look at their process. Yet, the notion that
we need all requirements prior to the design phase is analogous to saying that the
only batch size in which I can deliver requirements is 100% of the work product. Because
they are unaware of batch size most product developers use larger batch sizes than they
should.
PDBPR: And
in product development, what were generally dealing with is batches of information
the batch sizes in which information is transferred.
Reinertsen: Yes. Many product developers only think
of batch size as it applies to physical objects. Yet, the same concept applies to the size
of the batches with which we handle information. For example, if we write 5,000 lines of
code before we run a test, our batch size is ten times higher than if we write 500 lines
before we run a test.
PDBPR: But
isnt it the case that as you decrease the batch size in which information is
transferred, youre increasing the quantity of information transfers? It seems that
there must be risks and costs to increasing the number of transfers youre doing, for
example, version control problems, the likelihood of introducing errors, and a potential
overall increase in chaos and confusion. How do you address this?
Reinertsen: I will lump together all of the problems
you mentioned and call them transaction costs. Transaction costs are linearly
proportional to the number of transactions. All processes have another cost, which is the
cost associated with not doing a batch transfer, which I call the holding cost.
The smaller the batch size you use, the smaller the holding cost. One is a hyperbolic
function and the other is a linear function. They combine to create the "U"
shaped curve for total cost. If you keep decreasing batch size without paying attention to
transaction costs you will be overwhelmed by transaction overhead. Smaller batch size is
only better when it moves you towards the optimum of the "U" curve which
is at the trough of the "U."
A good model is what has happened in software development.
Forty years ago, the waterfall model for software development said that we should define all
requirements before we begin any design; complete all design before we do any
coding; and complete all coding before we do any testing. That was a classic
large-batch transfer model. Now we find people using what are called daily build-test
cycles. They write code, submit it by four oclock in the afternoon and have the
bug reports back by eight oclock the next morning. If you used the old methodology
for testing, where it took you two weeks to set up a test, then you would end up getting
buried in testing costs if you tried daily testing cycles. Daily build-test cycles have
become feasible because developers have lowered transaction costs by automating the
testing process. Once you recognize that doing a lot of small batches is good, then you
can justify automating it, and this automation lowers the transaction cost per batch by
orders of magnitude. This makes it economically feasible to do testing in many small
batches. The point is that the underlying philosophy that product development should be
done in large batches tends to block the investments that enable it to be done in small
batches.
PDBPR: It
seems to be the case that, as product developers optimize their batch sizes and you
suggest that, in most cases, this means making them smaller there needs to be more
and not less discipline involved if we wish to control transaction costs.
Reinertsen: You would think that a small batch
process requires great discipline but, in fact, it requires a form of discipline that is
surprisingly easy to achieve. Small batch sizes provide immediate feedback, which almost
automatically improves quality and discipline. To extend the software analogy, suppose I
make a bad assumption about the structure of a protocol in the software that Im
writing. I write bad code, and the next morning I get feedback that says it doesnt
work. I very quickly find out what the bad assumption was and I havent written
ninety days worth of code with a bad assumption embedded within it.
This is exactly what happened in manufacturing when we
reduced batch size and shrunk the inventory between process stages in our factories. The
inventory was there to compensate for the variation we had in the process machines
breaking down, people producing bad parts, etc. But, inventory raised overhead. I once
worked with a plant which had large batch sizes and large amounts of inventory. We did a
weekly production schedule to plan when each work order would arrive at each process
center. Because the cycle time in the factory was 16 weeks, we had 100 times as many work
orders to plan as we would in a JIT environment, with a cycle time of 24 hours. We were
trying to keep track of 20,000 work orders on the factory floor, and each of them was
going to cross many process centers. The weekly plan spanned a 16-week period, and you
would end up throwing out fifteen-sixteenths of it, unused, at the end of each week. But
as you shift to JIT, smaller batch sizes, and flow-based operations, youre no longer
planning 16 weeks. Youre planning for the 200 work orders of that day.
When it took 16 weeks for a part to move through the
factory, you needed a check-in point every time the part moved so that you knew where it
was. Youd have 30 move transactions in the course of that process just to keep track
of things. When we reduced cycle time to only 24 hours, we eliminated almost all of these
transactions. The old system, with the large batch sizes and a very long cycle time,
actually required much more paperwork and paperwork discipline. While a process with
smaller batch sizes does require discipline because it is sensitive to certain variances
that are hidden by a process with large batches, this discipline is easier to achieve
because you spend less time on non-value added tasks. It is easier to achieve discipline
when cycle times are shorter.
PDBPR: What
youre suggesting is that, from one perspective, we can talk about smaller batch
sizes, while from another perspective we can look at the same thing and speak about the
value of fast feedback loops
Reinertsen: Yes, feedback is inherently faster when
batch sizes are small. This rapid feedback has significant psychological payoffs because
immediate feedback has a more powerful effect on behavior. The longer the time between
when something is done and when the feedback on it is received, the more you break down
this link of causality between the action taken and the negative result, which, in turn,
breaks down the sense of control over outcomes and over behavior. The faster the feedback
the more people end up believing that they can actually control something.
Part
II >
This article originally appeared in the May 2003
issue of PDBPR
To join our
e-mail list and receive future updates on "Lean Product Development, click here.
|