I’ve done a lot of this talk & talked about Lean a lot. Read my other post here. I wanted to blog it for prosperity as it’s a talk I often wheel out & it always goes well. So If you want to know what Lean is, means, & how to implement it, read on.
What is Lean? The history of Lean
The concept of “Lean” has roots that stretch back far beyond the modern buzzword it has become. Its principles can be traced to the early 20th century, particularly to the innovative production lines of Henry Ford, but the formalization and popularization of Lean thinking is most credited to Toyota and its Toyota Production System (TPS).
Lean as we know it today is a management philosophy that focuses on minimizing waste while maximizing value. It emerged as a clear framework in the late 1940s through the pioneering work of Taiichi Ohno, Shigeo Shingo, and Eiji Toyoda at Toyota. They saw the inefficiencies and wasteful practices in mass production systems and envisioned a more streamlined, adaptive, and efficient model. Toyota’s system revolved around principles such as Just-In-Time (JIT) manufacturing and the famous 5 Whys technique for root-cause analysis. These elements were all tailored to enhance productivity, improve quality, and reduce inventory and waste.
The 1980s were a critical period for Lean, as this was when the concept was introduced to the Western world. A landmark study from MIT—termed the International Motor Vehicle Program (IMVP)—dissected the inner workings of the automotive industry and revealed Toyota’s methodology as vastly superior to American and European models. The term “Lean” was coined during this study and formally introduced in the seminal book “The Machine That Changed the World” by James P. Womack, Daniel T. Jones, and Daniel Roos in 1990.
Lean quickly moved beyond automotive manufacturing and found its way into various sectors, from healthcare to software development. The methodology was adapted to these diverse environments with principles that were universally applicable: focus on the customer, identify value streams, eliminate waste, empower teams, and strive for continuous improvement. With the advent of Lean Six Sigma, a hybrid approach combining Lean and Six Sigma techniques, the methodology also branched out into process improvement, emphasizing not just efficiency but also quality.
Though Lean started as a set of operational improvements, it has evolved into a broader cultural and strategic framework. Today’s Lean enterprises emphasize adaptability, collaboration, and a relentless focus on delivering customer value.
I think it’s crucial to understand that Lean is not just a toolkit of practices but a mindset that challenges traditional ways of working. It questions the status quo, breaks down silos, and prioritizes long-term gains over short-term results. In this hyper-competitive age, clinging to old paradigms is not just inefficient; it’s a path to obsolescence. Organizations that fail to embrace the Lean mindset will find themselves struggling to keep up with more agile and customer-centric competitors. Lean is not merely an option; in my strong opinion, it’s a necessity.
Getting your software teams to ‘think Lean’
Implementing Lean in software teams is an exciting yet challenging endeavour that can yield tremendous benefits in terms of efficiency, productivity, and customer satisfaction. Given your role as a Digital Delivery & Technical Programme Manager specialized in software engineering and Agile methods, integrating Lean principles could be an organic extension of your existing practices. Here are some steps you can take:
Understanding Lean Principles
First and foremost, educate your team about the core principles of Lean: identifying value from the customer’s perspective, mapping the value stream, creating flow, establishing pull, and seeking perfection through continuous improvement. In the context of software development, this could translate to feature prioritization, workflow optimization, and iterative releases.
Assess the Current State
Take stock of your existing processes. Identify bottlenecks, areas of waste (e.g., time, resources), and other inefficiencies. Tools like Value Stream Mapping can be incredibly useful for this stage.
Prioritize Value
Ensure that every task aligns with customer needs. This involves prioritizing features or user stories based on actual customer value rather than perceived importance. Tools like the MoSCoW method can help in this.
Eliminate Waste
The Seven Wastes of Lean (Overproduction, Waiting, Transportation, Overprocessing, Inventory, Motion, and Defects) can also be applied to software development. For example, overproduction could mean writing code that is not immediately needed, and defects could be bugs that require hotfixes.
Shorten Development Cycles
Implement shorter, more frequent release cycles to adapt more readily to customer feedback. You may already be familiar with this concept via Agile sprints. Shorter cycles allow you to correct course more easily if you discover that development is not aligned with customer needs.
Implement Pull Systems
Instead of pushing work onto developers, use a pull system where developers pick tasks when they are ready. Kanban is a popular pull-based system in the software industry.
Empower the Team
Give your developers the autonomy to make decisions that affect their work. This empowerment enhances ownership and accountability, which are key drivers for continuous improvement.
Measure, Analyse, and Adapt
Use metrics to monitor the process and outcomes. Some valuable Lean metrics include lead time, cycle time, throughput, and process efficiency. Make adjustments based on these analytics and always be in a state of continuous improvement.
Train and Educate
Training is a cornerstone of Lean implementation. Whether it’s workshops, courses, or coaching, make sure your team understands not just the “how” but also the “why” of Lean.
I strongly believe that implementing Lean is not just an operational change but a cultural shift. It requires a deep-rooted commitment to continuously identifying opportunities for improvement and the courage to act on them. While Lean methodologies originated in manufacturing, their applicability in the fast-paced, ever-evolving world of software development is unquestionable and, indeed, essential for those who aim to stay ahead in the game.
Lean or Agile
Lean and Agile are both respected methodologies in the software development and project management worlds, but they serve slightly different purposes and have different focuses. That said, if I were to express a strong opinion, I would argue that Lean has an edge over Agile in several ways.
Broader Application
Lean is a methodology that can be applied universally across different sectors, from manufacturing to healthcare to software development. Agile, while adaptable, is primarily rooted in the software development world. Lean’s universal applicability makes it a more versatile approach that can be integrated into various aspects of a business, not just software development.
Focus on Systemic Efficiency
Lean aims to optimize the entire value stream, from customer request to customer delivery. It identifies and eliminates waste at each stage, creating a streamlined, efficient process. Agile focuses primarily on the software development life cycle and may not address inefficiencies or waste in the broader business context.
Customer-Centricity
Both Lean and Agile prioritize customer value, but Lean often takes a broader view of who the ‘customer’ is. This can include internal stakeholders, not just the end-users. Lean’s value-stream mapping encourages an organization to see the process from a customer perspective more comprehensively.
Root-Cause Analysis
Lean incorporates root-cause analysis tools like the “5 Whys” to understand the fundamental issues affecting performance. This focus on identifying the underlying problem, rather than merely addressing symptoms, can lead to more effective, long-lasting solutions. Agile methods like Scrum also encourage retrospection but often lack a formalized approach for deep root-cause analysis.
Pull Systems and Flow
Lean emphasizes ‘pull’ systems like Kanban, which are designed to prevent overproduction and create a smoother workflow. This ensures that work is only done when there is demand, reducing the waste associated with idle time, unused features, or unnecessary multitasking.
Continuous Improvement
While Agile also incorporates the idea of continuous improvement, Lean arguably goes deeper into this principle with its focus on Kaizen, or ongoing, incremental improvement. Lean encourages not just development teams but the entire organization to be involved in a culture of continuous improvement.
More Comprehensive Metrics
Lean provides a broader set of metrics (like Lead Time, Cycle Time, and Value Stream Mapping) to measure and analyse process efficiency, compared to Agile’s often project-specific metrics (like Velocity). This gives organizations a more holistic view of their performance.
That said, Lean and Agile are not mutually exclusive. Many teams implement a Lean-Agile hybrid approach to take advantage of the strengths of both. However, for systemic, organization-wide efficiency, customer-centricity, and a deeply-rooted culture of continuous improvement, Lean offers a more comprehensive framework. In my strong opinion, if you have to choose one over the other, Lean would be the more strategically advantageous choice.