Sometimes it’s good to go back to the basics and examine basic concepts we often refer to without fully understanding
Sometimes it’s good to go back to the basics and examine basic concepts we often refer to without fully understanding what’s meant by them. In this piece, I’d like to address the somewhat confusing subject of the difference between the terms ‘lean’ and ‘agile’. While these words certainly belong to the same semantic field and are often used interchangeably when talking about product development, they are not identical. Taking the time to clarify where each term comes from and what it means can help us further understand the principles of software product management.
As I have already mentioned, there are basic differences in where Lean and Agile originate and what they mean. Let’s break these down:
Where do they come from?
Lean product development is a term deeply rooted in lean manufacturing and production. It stems from management philosophy principles dating back to Henry Ford. The term itself was coined by the book “The machine that changed the world” that, in 1991, referred to Toyota’s production system as a “lean manufacturing system.” The word was applied to software development by several writers in the following years.
Agile, as I’m sure you know by now, originated in the Manifesto for Agile Software Development that was formulated by a group of product developers in 2001. It stemmed from a prevalent desire at that time to find a way to create software without the obstacles presented by big corporations. Over a few brief years, the word has come to mean a whole range of practices and management techniques that simplify and optimize software development.
What do they mean?
Although there are many elements to Lean software development, prominent Lean methodology author Mary Poppendieck explains that its basic principles come down to these values:
Build the right thing: Understand and deliver real value to real customers.
Build it fast: Dramatically reduce the lead time from customer need to delivered solution.
Build the thing right: Guarantee quality and speed with automated testing, integration and deployment.
Learn through feedback: Evolve the product design based on early and frequent end-to-end feedback.
The original seventeen signatories to the manifesto proclaimed in their widely circulated text that they value:
Individuals and Interactions over processes and tools
Working Software over comprehensive documentation
Customer Collaboration over contract negotiation
Responding to Change over following a plan
So what IS the difference between Lean and Agile?
It’s easy to see just by reading the principle values of both ideologies that there are many similarities. Both focus on making working software fast in a way that produces real value for end users while meeting the goals of the product owner. Both have also put a lot of trust in the developers themselves, empowering them to be more than code writers and promoting self-managing teams. Over time, the two terms became almost merged with Lean development often cited as an agile methodology along with Scrum and Kanban.
Despite the many similarities, the aforementioned Mary Poppendieck explains that a difference does exist, explaining that: “…agile focused on optimizing software development, which frequently was not the system constraint. Lean software development differed from agile in that it worked to optimize flow efficiency across the entire value stream “from concept to cash.”
Having said all that, that the main difference between the two comes down to what’s placed in the spotlight. While the goal of the Lean philosophy is the utmost optimization of flow efficiency, Agile is all about responding to change as it happens. As agile software developers and product managers we adopt lean principles, but never allow the focus on the process to stop us from reaching our main goal of a great product that’s ever-evolving to provide maximum value to its users,