This is the first of an eight part series on Lean Thinking and the principles that comprise a Lean Development process.
Before we jump in, it’s important to provide a brief background on Lean and what we’re referring to when we use the term. Lean Manufacturing is a methodology which is often attributed to the Toyota Production System (that’s right, the car manufacturer). At its highest level, the methodology was created to quickly find and eliminate waste in the manufacturing process. Waste, as defined here, is anything that does not provide value to a customer. The easiest way to think about this process is to consider an assembly line. In an assembly line, the product moves from step to step during its manufacturing. If there is a breakdown or problem at any step of the way, production halts until the issue is resolved. That problem could be a defect with the product itself or an issue with the assembly process directly. Either way the focus remains on the elimination of waste and on the relentless pursuit of quality and improvement. Again, the goal is to remove anything that does not provide value to the customer. The Lean manufacturing system for Toyota dates back to the 1940’s, has been widely adopted across different industries, and is a proven way to deliver high quality products faster.
So, how does this relate to software development?
In 2003, Mary and Tom Poppendieck published a book titled, Lean Software Development: An Agile Toolkit. Here, they are credited with bringing the Lean methodology to the technology landscape. In their book, the Poppendiecks define seven Lean Development Principles:
- Eliminate waste
- Amplify Learning
- Decide as late as possible
- Deliver as late as possible
- Empower the team
- Build integrity in
- See the whole
This series takes an in-depth look at each of these principles. A lot of information can be found around the web on these, but we intend to take an approach which brings each into a real-world focus. For example, last week we shared just a few examples of the many reasons why technology projects are often over budget, delayed, or never released. If we bring those examples into focus here, you’ll see how each one corresponds to one of these seven principles. This series will dive into similar real-world examples and discuss how Lean Thinking can help alleviate these types of problems.
- Teams (and more importantly, managers) are submerged in wall-to-wall meetings: Eliminate waste
- Sacrificing quality for speed of delivery: Build integrity in
- Hero Culture – “Oh no! Tom isn’t here. We really need Tom for this…”: Amplify learning
- Suboptimal project planning and forecasting: Decide as late as possible
- Over-engineered solutions: Deliver as late as possible
- Individual contributors are spread between projects, forced to context switch more than should be acceptable: Empower the team
- Teams are too big; roles are not well defined: See the whole
As we expound on these principles, we’ll take a slightly different angle on each (sometimes differing from what was originally defined by the Poppendiecks), but each will relate directly back to these seven core principles.