Lean Software Development

Introduction

Lean Software Development is an outgrowth of the larger Lean movement that includes areas such as manufacturing, supply chain management, product development, and back-office operations. Its goal is the same: deliver value to the customer more quickly by eliminating waste and improving quality. Though software development differs from the manufacturing context in which Lean was born, it draws on many of the same principles.

Principles

It is base on 7 principles:

  • Eliminate Waste: Waste is anything that does not contribute value to the final product, including inefficient processes, unnecessary documentation, and features that won’t be used. Eliminating waste is the guiding principle in Lean Software Development.
  • Build Quality In: Building quality into a product means preventing defects, rather than using post-implementation integration and testing to detect them after the fact.
  • Create Knowledge: The knowledge necessary to develop a project, including requirements, architecture, and technologies, is seldom known or understood completely at project startup. Creating knowledge and recording it over the course of the project ensures the final product is in line with customer expectations.
  • Defer Commitment: Making irreversible decisions at the last reasonable moment allows time for the creation of more knowledge, which results in better decisions. Deferring commitment is positive procrastination.
  • Deliver Fast: Delivering fast puts the product in front of the customer quickly so they can provide feedback. Fast delivery is accomplished using short iterations, which produce software in small increments by focusing on a limited number of the highest priority requirements.
  • Respect People: Respecting people means giving the development team’s most important resource, its members, freedom to find the best way to accomplish a task, recognizing their efforts, and standing by them when those efforts are unsuccessful.
  • Optimize the Whole: Optimizing the whole development process generates better results than optimizing local processes in isolation.

Most discussions of Lean Software Development don’t define specific practices for implementing the process. The Lean principles don’t describe an "out-of-the-box" solution. But there are some hints which are in alignment with the Lean principles such as: having source control, scripted builds, daily stand ups, automated testing, CI, …

Lean vs. Agile

Comparing Lean and Agile software development reveals they share many characteristics, including the quick delivery of value to the customer, but they differ in two significant ways: scope and focus. The narrow scope of Agile addresses the development of software and focuses on adaptability to deliver quickly. Lean looks at the bigger picture, the context in which development occurs, and delivers value quickly by focusing on the elimination of waste. As it turns out, they are complementary, and real world processes often draw from both.

Reference: Dzone Refcards

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License