This post originated from an RSS feed registered with Agile Buzz
by Martin Fowler.
Original Post: AgileVersusLean
Feed Title: Martin Fowler's Bliki
Feed URL: http://martinfowler.com/feed.atom
Feed Description: A cross between a blog and wiki of my partly-formed ideas on software development
I'm thinking of using agile software development - but
should I use Lean software development instead?
This question is one I've run into a few times recently. It's not
a question I can answer quickly as the question is based on a false
premise about the relationship between lean and agile. So first I
need to go into some history to help explain that relationship.
"Lean" fundamentally refers an approach in the manufacturing
world that was originally developed by Toyota in the 1950's. At this
time Japanese industry was recovering from the ravages of the second
world war. This approach, often called the Toyota Production System
is mostly credited to Taiichi Ohno,
although he was influenced by various western thinkers -
particularly Deming. The
Toyota Production System became well known in the rest of the world
in the 1990's when westerners started writing books to explain why
the Japanese were beating the US at so many industries. The western
writers called this approach Lean Manufacturing. Although Japanese
industry in general has run into stickier times since then, Toyota
continues to outperform most western auto companies.
Agile software development is an umbrella term for several
software development methods (including Extreme Programming and
Scrum) that were developed in the 1990s. These methods share a
common philosophy which was described as values and principles in
the Manifesto for Agile Software Development. (My essay "The New
Methodology" goes into this in more depth.)
There was a connection between lean manufacturing and agile
software from the beginning in that many of the developers of the
various agile methods were influenced by the ideas of lean
manufacturing. This connection was made more explicit by Mary and Tom Poppendieck. Mary had
worked in a manufacturing plant that had adopted lean manufacturing
and her husband Tom is an experienced software developer. They have
written a couple of books on the application of Lean ideas in the
software world. When people talk about Lean Software they are
usually referring to the ideas in these books, although others have
been making similar links.
Lean manufacturing and agile software methods have a very similar
philosophy. Both place a lot of stress on adaptive planning and a
people focused approach. As a result lean's ideas fit in very well
with the agile software story. Mary and Tom have both been very
active in the agile community - indeed I'd credit Mary with an
important role in forming the Agile Alliance. (Like me, she was a
founding board member of the Agile Alliance, but she was far more
effective in it than I was.)
I've already mentioned that lean manufacturing was an influence
on agilists from the beginning, and in the last few years more ideas
have appeared in the agile world with a clear lean manufacturing
heritage. These range from concrete techniques like Value Stream
Maps, to articulations of existing agile concepts such as the Last
Responsible Moment for making design decisions. The idea of thinking
of analysis and design documentation as inventory came from the
Poppendiecks. Several agilists I know emphasize the importance of
reducing cycle time - another strongly lean-influenced idea. My
colleague Richard Durnall has a nice summary of how lean knowledge
can blend in with agile thinking.
A particularly strong appeal to many people about lean ideas is
that they provide a way of explaining agile software development to
people - particularly senior people both within IT and senior
customers. This explanation ranges from a crude appeal to emulate
Toyota to detailed discussions of how lean manufacturing's benefits
translate to the ideas in agile software development.
So as you can see, lean and agile are deeply intertwined in the
software world. You can't really talk about them being alternatives,
if you are doing agile you are doing lean and vice-versa. Agile was
always meant as a very broad concept, a core set of values and
principles that was shared by processes that look superficially
different. You don't do agile or lean you do agile and
lean. The only question is how explicitly you use ideas that draw
directly from lean manufacturing.
The Poppendiecks didn't introduce lean as a separate idea, nor
did they introduce lean as a published process in the style of Scrum
or XP. Rather they introduced lean as a set of thinking tools that
could easily blend in with any agile approach. I think of lean as a
strand of thinking within the agile community, like a pattern in a
rich carpet.
There is a distinct lean software community, as in a mailing list
calling itself lean and people who label themselves as lean
thinkers. But this is no different to the fact that there are also
strong XP, Scrum, and other communities. Most people in these
communities consider themselves part of the broader agile movement
and many people are active in more than one of these agile
communities. The whole point of coining the word 'agile' comes from
a recognition that we share a core set of values and principles and
this common core means what we have in common is greater than our
differences.