7 Principles of Lean Software Development

I recommend reading Implementing Lean Software Development by Tom and Mary Poppendieck. They do a good job of breaking down the 7 Principles of Lean Software Development into some very easy to understand concepts. Here is a taste of what this book will open your mind to:

Principle 1: Eliminate Waste

  • Waste is anything that interferes with giving customers what they really value at the time and place where it will provide the most value.
  • Inventory is waste – In software that is partially done work
  • Churn – Requirement Churn, Repeating test/fix cycles
  • Many times caused by large inventories of partially done work
  • When requirements are specified long before coding
  • When testing occurs long after coding
  • Delayed integration
  • Overproduction – Extra Features
  • Only about 20 percent of features in custom software are regularly used (66% are rarely used)

Principle 2: Build Quality In

  • You don’t focus on putting defects into a tracking system; you avoid creating defects in the first place.
  • Defect tracking systems are queues of partially done work
  • TDD and Continuous Integration
  • Write Less Code – Keep the Code Base Simple
  • Expect to change existing code
  • Refactor often

Principle 3: Create Knowledge

  • Software is a knowledge creating process
  • Validation of architecture comes as the code is being written
  • An early design cannot fully anticipate the complexity encountered during implementation
  • Expect the design to evolve
  • Early release of minimum feature set to customers for evaluation and feedback
  • Daily builds and rapid feedback from integration tests
  • A modular architecture that supports the ability to easily add new features
  • Encourage systematic learning throughout the development cycle
  • Stop acting as if our predictions of the future are fact rather than forecast. Instead, we need to reduce our response time so we can respond correctly to events as they unfold

Principle 4: Defer Commitment

  • Schedule irreversible decisions for the last responsible moment
  • We should try to make most decisions reversible
  • We should avoid making decisions that will lock in a critical design decision that will be difficult to change
  • “In preparing for battles I have always found that plans are useless, but planning is indispensable” Dwight Eisenhower

Principle 5: Deliver Fast

  • We need to figure out how to deliver software so fast that our customers don’t have time to change their minds
  • Companies that compete on the basis of time often have a significant cost advantage
  • Eliminated a huge amount of waste
  • Low defect rates
  • Repeatable and reliable speed is impossible without superb quality
  • In fast-moving organizations, the work is structured so that the people doing the work know what to do without being told and are expected to solve problems and adapt to changes without permission

Principle 6: Respect People

  • Entrepreneurial Leader
  • A company that respects its people develops good leaders and makes sure that teams have the kind of leadership that fosters engaged, thinking people focused on creating a great product
  • Expert Technical Workforce
  • Appropriate technical expertise is nurtured
  • Teams are staffed with needed expertise to accomplish their goals
  • Responsibility-Based Planning and Control
  • Teams are given general plans and reasonable goals and are trusted to self-organize to meet the goals

Principle 7: Optimize the Whole

  • A lean organization optimizes the whole value stream
  • Vicious Circle #1
  • A customer wants some new features, “yesterday.”
  • Developers hear: Get it done fast, at all costs!
  • Result: Sloppy changes are made to the code base.
  • Result: Complexity of the code base increase
  • Result: Number of defects in the code base increases
  • Result: There is an exponential increase in time to add features
  • Vicious Circle #2
  • Testing is overloaded with work
  • Result: Testing occurs long after coding
  • Result: Developers don’t get immediate feedback
  • Result: Developers create more defects
  • Result: Testing has more work. Systems have more defects
  • Result: Feedback to developers is delayed further. Repeat cycle.

If you are looking for a basic introduction to Lean Concepts I would recommend reading the Goal.

 

Join the discussion One Comment

  • Galyna says:

    Hi!
    Thanks for the article. I’d like to add that lean methodology introduces a customer oriented, flexible system to software development, it’s people who actually make it work.

Leave a Reply