It's not Lean vs Agile. It's the mix of both that improves the software development process
Fri, Oct 22, 2021 •4 min read
Today, we dive a bit deeper into the subject of IT project management, as it might not be as obvious and straightforward as it seems. When we think of software development project management, Agile immediately comes to mind. No wonder - IT teams have been successfully using it for decades now. But what if we could improve the process even more?
When it comes to modern project management methodologies there is no competition for Agile and Lean. These two, while having the same goal of improving performance, differ on various levels. The former is perceived to work best in software production, while the latter is widely used in manufacturing. But blindly following this rule when starting a new project can take you nowhere - not every IT project is the same, so why should using the same management methodology work? To understand the root difference between Agile and Lean, let's go back in time to see how it all started.
Lean management: a brief history
The Lean way of thinking took root in the 1940s in Japan when Taiichi Ōhno, one of the managers in Toyota, developed the Toyota Production System to reduce inventory costs and improve efficiency. Besides other principles, TPS used visual signs (does Kanban sound familiar?) to showcase inventory needs exactly when they were required to reduce the cost of overstocking. Soon, Japanese manufacturers were running Western carmakers out of business so they had to adapt. They decided to look into the Japanese way of process management and called it "Lean". In time, Lean management has spread beyond manufacturing to other branches, like service operations and, eventually, software development.
At its core, Lean management strives for maximum waste elimination and getting rid of anything that's not adding value to the process or the product. In software development, waste elimination means no more useless meetings or excessive documentation. We only focus on the relevant features needed and deliver fast. In 2006, Mary and Tom Poppendieck published Lean Software Development. From Concept to Cash, which became a crucial position for those willing to learn more about the techniques and tools used in lean IT projects. Here are the core principles described by the authors:
The rise of Agile
In February of 2001, a group of seventeen software developers met in Utah to discuss an alternative for the inefficient, yet popular waterfall model used to create digital products. The result of their discussion and brainstorming was the Agile Manifesto, which states the values and principles of the Agile software development process. In essence, Agile aims to create better digital products. Since 2001 it has developed a myriad of techniques and frameworks that are used and applied in a range of projects, not limited only to digital ones.
Besides stating its values, the Agile Manifesto also lays out twelve main principles of creating software development:
The highest priority is customer satisfaction achieved by early and continuous delivery of valuable software
Welcome changing requirements, even in late development
Deliver working software frequently (weeks rather than months)
Close, daily cooperation between business clients and developers
Projects are built around motivated individuals, who should be trusted
A face-to-face conversation is the best form of communication (co-location)
Working software is the primary measure of progress
Sustainable development, able to maintain a constant pace
Continuous attention to technical excellence and good design
Simplicity—the art of maximizing the amount of work not done—is essential
Best architectures, requirements, and designs emerge from self-organizing teams
Regularly, the team reflects on how to become more effective and adjusts accordingly
What's so different about Lean and Agile?
Now that we know the basic principles and values of both methodologies, we can better understand the differences between them. Let's start with their approach to process speed and iterations. In Lean, we often use Kanban boards to outline the schedule, while in Agile, Scrum seems to be the king.
Kanban vs. Scrum
In Scrum, developer teams work in time-boxed sprints, which, in comparison to the Waterfall method, is greatly beneficial and far more effective. But in many cases, the sprints are way too long and can cause very inefficient downtime when developers are forced to wait before updating the code to align with changing customer needs. When the sprints are too short, bigger tasks are portioned into smaller chunks which don't deliver any value to the customer on their own and can lead to losing the big picture perspective.
Kanban might be the right approach to address those issues. In Kanban scheduling, there are no sprints, and the workload is limited by how many features can be worked on at a given time. A Kanban board allows the team to visually track the progress and allows for immediate elimination of bottlenecks. As a result of this approach, the team gets more feedback and can react and adapt faster.
Lean and Agile: It's not a battle, but a partnership
So, as it appears, Kanban is great for scheduling and allows for faster reaction to changing requirements and Scrum is perfect for self-organizing agile teams. Is it possible to somehow take the best of both worlds and implement it in a single software development project? It's not only possible but welcomed and recommended.
What we often see in IT development projects is the mistake of believing that it's necessary to choose either Agile or Lean management and then stick to it strictly without exceptions. When in reality, the best we can do is assess the project and then decide which aspects of those methodologies fit certain tasks the best. When we realize that Lean and Agile complement one another, instead of being mutually exclusive, we start benefiting from the best-of-both approach and combine tools, top-performing methods, and other elements to create a custom project management solution to meet the unique requirements of our customers as quickly and efficiently as possible.
Lean/Agile software development in action: a case study
Our customer, a very reputable fintech company, was developing a digital product that heavily relied on end-user feedback and data. Originally, we were asked to create a Scrum backlog for the development team, but we soon realized that it might not be the most efficient method for this project. While Scrum allows for frequent iterations, it still wasn't often enough for our customer. They had to collect data, react to what they learned and deliver improved features almost instantly. There was no time to waste waiting for the sprint to end. That's when we stepped in and designed a custom delivery method based on Lean management principles mixed with Agile Manifesto fundamentals. Our expert team ended up implementing a successful method for Continuous Delivery paired with the proper and agile pipeline to enable the immediate deployment of every single commit that passes tests.
Let's wrap it up
Agile and Lean management are not enemies. They both offer a plethora of benefits that fulfill different needs and requirements but in the end have the same goal - to deliver a beautiful product with minimum waste and maximum efficiency. They both focus on people as the most important factor in the production process. And yet they are not mutually exclusive - we can take what we need from either one and design our own delivery method to satisfy the customer.