Kanban Basics for Beginners
kaizen WIP kaikaku flow value
stream mapping visualize
work flow cycle
time lead time throughput
TPS build failed CFD
created by
Zsolt Fabók (me@zsoltfabok.com)
June 22, 2011 @
Our goal for today
● Have an idea where Kanban comes from
● Understand the core principles of Kanban
● Going down the Rabbit's hole
● Discuss open questions
● The coin game
Before saying anything:
"I promise not to exclude from consideration any idea based on its source,
but to consider ideas across schools and heritages in order to find the
ones that best suit the current situation." [1]
This means the end of statements like “That’s no good – it’s not
agile / object-oriented / pure / etc…”, but rather a discussion
about whether idea (agile or plan-driven or impure or whatever)
works well in the conditions of the moment.
A dream business model:
...make an idea possible with the lowest amount of work
Unfortunately, reality is a little bit different...
+ +
...you have to invest some money, but - and I don't want
to ruin your day - , but you'll have to do some work as
well
Building software is very expensive, so we need a
methodology which makes it less expensive
Between 1940 and 1950, Japan and Toyota
weren't in the best economical condition
But Toyota had a plan to survive (TPS, [2]):
● Maximize customer value while minimizing waste
● Improve the production process continuously
● Bring out the best from the people
This is the 8th slide and no Kanban so far...
WHERE IS IT?
By definition, Kanban is a pull-based inventory
control system ([2])
Why did Toyota need an inventory control
system?
Because inventory is waste, and as such, it
needs to be eliminated
(warning: according to Wikipedia, Kanban isn't an inventory control system, but that
article hasn't been verified yet [3])
Still nothing usable on Kanban, you are talking
about waste...
All right, I'll play along... WHERE
IS IT, AND WHAT IS IT?
As you wish...
It is here
+ +
There are three kinds of waste:
● Muda: damage, wastage, loss, unnecessary expenditure, unnecessary effort
● Muri: overload, overburden, congestion, perversity
● Mura: Unevenness, imbalance, fluctuation, irregularity, deviation
Lean thinking and Kanban helps Toyota deliver
quality products with lower investment
Maybe it could work for software development as
well, maybe...
It is working for the chef...
Let's see how it works in software development...
First principle: visualize the flow
This is the flow, your
actual process!
There is no such thing as a standalone Kanban system
It is always applied on a software development process
like Waterfall, Scrum, XP, DSDM or a company-specific
one
I visualize my flow in a more transparent way
...because "arrows" and non-visible process states won't
help you find waste and improvement areas
What do you see on this picture?
I see a huge inventory (11 items), and no customer
value
Block your flow so that items will push each other
out...
regular approach single piece flow
Second Principle: Limit the actual work in progress
(WIP)
Exercise: what needs to be done if the customer wants item
'F' delivered in three days?
What shall I do when I become available?
● start something new
● or help finish something
(preferred)
priority
So far so good, when will I see any income?
In this case, let's say that item
'A' has been finished in 6
days...
...in 6 days?
...that's the lead time lead time
Is this enough? According to Lean, of
course...
The answer is: no. You should improve it continuously
(Kaizen) or drastically (Kaikaku)
Third Principle: continuous improvement for
faster delivery and faster feedback
queued time
working
time
cycle time
lead time
The flow is continuous, it is always changing, like
a river. There is no other choice than adaptation
=
[re] visit, [re] prioritize, improve
everywhere
For faster delivery:
■ Use MMF (Minimal Marketable Function)
it is small, travels fast through the system, but still
holds customer value
■ Apply Little's Law
small batches also travel fast through the system,
and it's better to have a fresh apple every day, than
a bucket of rotten apples at the end of the week
■ Limit the amount of avatars
people will do less context switching, which
increases the speed of the items they are working
on [4]
Prioritise by:
■ business value
■ cost of delay
■ service level agreement (SLA)
■ actual resource availability
■ current throughput and load
Closing words
● Don't work on a feature that nobody wants
● Don't write a document that nobody will read
● Don't write code that nobody can/will test
● Don't test a feature that cannot be deployed
And there is a huge difference between being efficient
and effective [6]
Thank you very much for your attention!
For more Kanban-related topics, check out my website:
http://zsoltfabok.com/