Is your software team Agile, Lean, both, neither? What is the difference? Is Lean an Agile Methodology? How is Kanban involved? This is one area that seems to have a lot of confusion around it and that I personally like to be a stickler about.
If you don’t know what Agile is, may I recommend going Here. So if that is Agile, what is Lean?
Lean comes originally from manufacturing as a “just in time” process to reduce bottlenecks and the need for a lot of storage. The idea was that if you only produce what is needed, and only when it is needed, you reduce extra processes that come with storing, cataloging, and transporting extra inventory. Think about car manufacturing (where Lean originated). Why make a lot of extra seats to then store that extra inventory and go through the process of shutting down and restart the seat assembly lines as your inventory wax and wanes? Instead you can fold your seat manufacturing into the larger car production and only make the seats when they are needed. Project managers saw this Lean concept in manufacturing and started to adopt it to software development.
Lean can then be seen as an adaptive project management philosophy similar to Agile. It has its own core principles that act as a guide to help teams function more efficiently.
The 7 principles of Lean are:
- Eliminate Waste - Waste is anything that does not benefit the completion of the work/product.
- Create Knowledge - Sometimes known as "Amplify Learning", it is akin to Agile's principle of reflection. Teams should continue to learn from their past mistakes to refine and improve their processes.
- Defer Commitment - Try to decide and commit to work as late as possible to allow changes to be ironed out before commitment.
- Deliver As Fast as Possible - The main metric in Lean projects is throughput. How quickly can units of work be completed.
- Respect People - Or sometimes seen as "Empower the Team", this is similar to Agile's principles of communication and building the team around motivated individuals.
- Build Integrity In - I have always understood this as not cutting corners, always completing features you start (to eliminate demoware), and putting thought into all aspects of the development life-cycle.
- Optimize the Whole - This principle, to me, was always about striving for simplicity and looking for the 'right' solution. Very much like the "Zen of Python" especially the line "Simple is better than complex, complex is better than complicated." We should strive to optimize our projects as well as code to make everything easier to understand and track.
You will notice a lot of these principles can be found in some way, shape, or form in the Agile manifesto or principles. That is because both philosophies come from the same hope and attempting to give more control to the development team and give them a guiding light to succeed. This pokes at the crux of both the confusion and the solution of “Agile vs. Lean.” They are similar enough that people often lump both philosophies under “Agile” or even worse state that Lean is a methodology of Agile.
Like Agile, the Lean philosophy does not tell you how to organize your work. That is up to the methodologies, with the biggest one being Kanban. I have always known the full name of Kanban to be “Lean Kanban” because it was created using the Lean philosophy. If you dissect it all of the lean principles are there. In Kanban you have a “Line of Commitment” before the selected features; this is deferring commitment. The Work In Progress (WIP) limits are eliminating waste, as is preventing people from switching tasks. And, like all Lean methodologies, throughput is the main metric of Kanban; what is the average time it takes to complete a feature.
In many of my teams we use the Agile philosophy to guide us and methodologies that attempt to enact the Lean principles to function. This includes Kanban and even my home-grown methodology of Feature Focused. Both mindsets are wonderful, so I encourage everyone to learn and strive to understand the nuances of both. Just like any other type of philosophy in the world you shouldn’t constrict yourself to just studying one. Knowing more about both Lean and Agile will only help gain more understanding about project management and managing your team.