Thursday, February 12, 2009

Agile and Lean - the same but different

At the end of last year I was lucky enough to hear Dan Jones give a keynote talk at XP Day 2008. Dan is one of the authors of The Machine that Changed the World and as such is one of the fathers of Lean. Or at least father of the term Lean, I’m sure Dan would point out that he (and his co-authors) didn’t so much invent Lean as reveal it to the world.

Dan opened his talk by addressing the difference between Agile and Lean directly. And in his view there is no difference. Perhaps someone else who was in the room can help me with the exact quotes but this is how I remember him putting it:

• When Dan, Jim Womack and Daniel Roos wrote did the research that resulted in The Machine that Changed the World they had to think of a term to describe what they found. Toyota Production System was too Toyota specific. They eventually came up with Lean. In the process they considered the name Agile but rejected it - “because it wouldn’t sell” he quibbed.

• Later (someone who’s name he gave but I don’t remember) decided there should be an “American version of Lean” and decided to use the term Agile. As far as Dan can tell it is this source that the original Agile software people (those who wrote the Agile manifesto I guess) picked up on.

• As far as Dan is concerned he doesn’t care which term we use, its all the same.

• (And he’s glad to see IT folk taking an interest because traditionally the Lean manufacturing movement has found IT a block to Lean adoption.)

I’m glad to hear Dan say this, certainly my flavour of Agile has long been influenced by Lean - even before the Poppendieck’s excellent Lean Software Development. I now feel more able than ever to talk about them as one.

That said I think there is a subtle distinction, its actually a distinction that can be helpful on some context. Its also a distinction which helps explain why Agile is not XP even though XP is Agile and why there is more to Agile than Scrum.

It helps to look at this diagram - if you’ve seen it before you’ll notice I’ve extended it recently:

At the top there are specific Agile methods like XP, Scrum, Crystal, etc. These are quite prescriptive in their ways - some more than others. Each is an Agile method but none are Agile.

Agile is a toolbox, these methods have chosen elements from the toolbox. Agile is more general, Agile is more of a value system, a philosophy.

Agile itself is Lean but it is more prescriptive than Lean. Few Agile teams would not do Test Driven Development for example. So while Agile is more general than XP or Scrum it is less general than Lean.

Lean itself is more philosophical still and contains fewer specific practices. You have to apply Lean thinking in your own context. Lean is a journey.

Still further down we find Organizational Learning. All these methods are based on continual learning - systems thinking should probably be included in here. But organizational learning is almost entirely values, philosophy and academic research, it is almost devoid of specific practices. (I could get into the Knowledge Management debate here but not today.)

Recently I’ve added RUP and Kanban to this diagram.

RUP shares a lot in common with Agile methods but it comes from a very different place. It comes from traditional software engineering, it comes from the unification of object orientation and it comes from the commercial world. RUP can (I am told) be made to look and feel like Agile but this doesn’t change where it comes from.

Then there is Kanban. Kanban is the new kid on the Agile block but it is derived more direct from Lean thinking. So for me it doesn’t inhabit that top apex of the pyramid, it draws on Agile and Lean. And this is where Dan Jones point is very appropriate: it doesn’t matter, at this level Agile and Lean are merging. So if you want to argue that it should be up there with XP and Scrum I don’t mind.