There is much misunderstanding about how lean applies in the software world, and there are certainly different opinions about what agile is. This article gives a quick overview of how these two approaches are similar and how they differ.
What is Lean?
The term “lean” was coined to describe the approach by Toyota, and it is often considered to be synonymous with Toyota’s production system. However, software development is different. Not only is it not manufacturing, but we are also not even in the physical world. We are in the knowledge work world.
Even so, the core of lean in software can be found by looking at the lean mindset and the commitment to continuous learning and improvement. Lean is not a static definition; rather, it is an evolution of both understanding and practices.
Here are the basic tenets of lean:
- Management must be involved in leading the change.
- You must take a systems-thinking approach.
- You must have a commitment to the quality both of how you are doing the work and the quality of the work.
- You must respect people. Give them a good environment within which to work. Recognize they may not embrace self-organization immediately.
- Make all work visible.
- Strive for flow by managing queues and Work-in-Process (WIP).
- Relentlessly improve.
Drive from achieving the goals of the organization. Be clear on the target value being manifested.
Given we are not in the physical world, these tenets apply differently than in manufacturing and physical product development. Visibility and managing WIP have overlapping goals one of which is to see delays (they show up as items in a queue).
In addition, lean is also about creating pride in our work, striving to be the best, and personally making a difference. An example of this is that Toyota builds different car models on the same assembly line. It is to make the work more interesting and to keep people involved.
Read more about lean in Disciplined Agile.
What is Agile?
Throughout the agile community, there are many different opinions about what agile is. While the Agile Manifesto has been viewed as the sacrosanct definition of agile, it is not sufficient in today’s world where systems-thinking and organizational change are key to agile adoption.
There is still much to learn from the Agile Manifesto. In fact, agile and lean have many of the same intentions:
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Simplicity, the art of maximizing the amount of work not done–is essential.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
There are ways agile goes beyond lean:
- Welcome changing requirements, even late in development. Agile processes harness change for competitive advantage.
- Working software is the primary measure of progress.
- Continuous attention to technical excellence and good design enhances agility.
- The best architectures, requirements, and designs emerge from self-organizing teams.
Lean and agile are not the same.
Agile was very much influenced by lean, but not all of lean was embodied in agile. Consider the role of (middle) management. In a nutshell management’s role is to look (up) at the business strategy and goals and create an environment where the people they lead (down) can self-organize to achieve those goals. While agile is not inconsistent with this, the Agile Manifesto does not mention management at any point and even created its own role (the scrum master) to take on much of the responsibility that lean managers do.
The Agile Manifesto is focused around the technology side and the technology side’s purpose of creating and manifesting value. A focus on customer value is not all a business does, however. Successful companies have clarity of purpose and a commitment to their employees. Both must be invested in.
Read more about agile in Disciplined Agile.
Agile/lean is taking the mindset of lean, applying it to the software world while incorporating the lessons of agile that are useful. Agile/lean is not constrained to the workflows that have software in them. But then some aspects of Agile/lean’s guidance must change.