A lot of people are asking about the difference between Agile and Lean. Are they the same? Which came first? Which is better? Better for what? This article attempts to answer all of these questions.
Lean is old. Very old. “Lean” generally refers to a body of knowledge called more specifically “Lean Manufacturing”, which was developed in Japan in the 1950s and 1960s by an engineer named Taiichi Ohno.
He called it the Toyota Production System. He got many of the ideas from an American management thinker called William Edwards Deming. Lean Manufacturing turned a lot of traditional concepts on their head:
These ideas were heretical to modern American management theory. But the Japanese industrial companies adopting these philosophies quickly outperformed their American counterparts.
Agile is a set of ideas around software development. It came about in the late 1990s as people tried to find better ways of making software.
Lean has its roots in industrial manufacturing, but many of its ideas are quite general and can be applied to lots of disciplines. Agile is more specific to software development and doesn’t have many ideas that are applicable outside that field (depending on what flavour of Agile you’re talking about).
There are some clear similarities between Agile and Lean. Two that quickly come to mind are Small Batch Size and Inspect and Adapt. Lean Manufacturing prescribes building things in as small batches as possible. Rather than making 100 widgets at a time, make them one at a time. It (counter-intuitively) is more efficient that way.
Agile (especially when following DevOps principles such as Continuous Delivery) prescribes many frequent small releases of software, rather than infrequent large releases. Lean Manufacturing also tells us that any process should be continuously inspected and adapted so as to improve it. Agile (more specifically, Scrum) tells us we should hold regularly inspect our outputs (at a sprint review) and our ways of working (at a sprint retro) to find ways to improve them.
Tom and Mary Poppendieck describe the fundamental differences between the two as being that Agile is about optimising a development process, while Lean is about optimising a manufacturing process. This means that Agile is about building one new thing for the first (and only) time. While Lean is about building the one same thing over and over again.
In manufacturing, variation and rework are bad, while in development, they are good. When building something for the first time, you want to continuously iterate. To keep going back and revisiting your design, changing it where necessary based on new information or feedback. In manufacturing, you generally have a predefined product. Then you want to produce as many high-quality instances of that thing as you can, as cheaply as you can.
If you read the lean literature, there is a big focus on process improvement (via things like value stream mapping) and quality (zero defects is the goal). While in Agile, the focus is more around scope (how do we define and manage scope for a new software product) and value discovery (how can we rapidly produce something and learn from it via customer feedback).
Each has their strengths. I would recommend anyone interested in either one should know at least something about the other.
Good question! Eric Ries’ 2011 book “The Lean Startup” proposed a new model for businesses. Basically, you around quickly produce a Minimum Viable Product, gather validated learning from it. Then you make a quick decision to “pivot or persevere” based on that learning. While inspired by the Japanese Lean idea of reducing waste, it is not really traditional Lean at all. In fact is has more in common with Agile. It has spawned a series of books with titles like “Lean UX” and “Lean Enterprise” (both of which are very good), and these will no doubt add to the confusion.