lean
Lean Software Development (LSD) is a term originated from a popular book by the same name, written by Mary and Tom Poppendieck. In such book, they presented the first translation of Lean principles to software development, plus 22 thinking tools to help translate those principles into agilepractices. Having its roots in the well-known Toyota Production System, LSD focuses on helping software development companies to optimize their process, solving problems that old methodologies like waterfall have, and delivering software with better quality, reduced cost, and faster delivery.
Let’s do a review of the 7 LSD principles:
1. Eliminate Waste: take out all activities that do not add value from the perspective of the customer; in other words eliminate any material/resource beyond what the customer requires and is willing to pay for. The 7 Sins of LSDare:  Partially done work, Extra features, Relearning, Handoffs, Task switching, Delay and Defects.
2. Build Quality In: Mistake-proof your code from the beginning to prevent appearance of defects late at the end of the process.  One tool used to do that is test-driven-development where developers write unit and acceptance tests before they write the associated code. Coding and testing the system as often as possible working with short iterations, helps to reduce the appearance of defects late in the process. You can consider your development process defective if you assume that verification process is the only time when you could find defects, queue them (partially done work, waste#1) and then perform almost endless test-and-fix cycles.

3. Create Knowledge (aka Learn constantly or Amplify learning): “Planning is useful. Learning is essential”. Software development is a knowledge-creating process; recording the team’s knowledge is an efficient way to reduce waste of relearning and make the tacit knowledge more explicit and available for everyone. Also, software development is unpredictable so we shouldn’t base our development process on a plan considering it as a fact (can we predict the future?); we should take it as a forecast and work with short cycles, change-tolerant codes, and iterations with refactoring – improving the design as the system develops- so we can generate knowledge, have quickly feedback, and prevent of making early-irreversible decisions. In that way, you will have a development process that encourages systematic learning throughout the development cycle, so we can respond quickly and correctly to events as they occurred, delivering more predictable outcomes.

4. Defer Commitment (aka Decide as late as possible): the more information you have, the better decisions you make. Developing a robust, change-tolerant design and schedule irreversible decisions for the last moment until uncertainty is reduced and before it is too late, is the best option to not being locked in a critical design decision made in the incorrect time. A software system doesn’t need complete flexibility, but it does need to maintain options at the points where change is likely to occur.
5. Deliver Fast: it refers to companies can deliver faster than customers can change their minds. To achieve that you should focus on 2 main practices:
– develop your product driving down cycle time (short iterations), with small batches of requirements and fewer things-in-process, so at the end of each iteration, you can have a rapidly feedback from your customers and decide how to continue;
– have a fast-moving self-directed development team with excellent reflexes and a disciplined, stop-the-line culture.
You can’t sustain high speed, unless you build quality in.
6. Respect People (aka Engage Everyone or Empower the team): Respect means that instead of telling people what to do and how to do it, teams are given general plans and reasonable goals, and are trusted to self-organize to meet the goals (semi-autonomous teams). Engaged, motivated, thinking people with proper training, coaching and assistance, are the basis of competitive advantage in today’s economy.
7. Improve the System (aka See/Optimize the whole): it refers to improve and control your entire value stream – from customer request to deployed software – instead of just optimize part of it (sub-optimization). One commonly practice used to optimize your system is the use of metrics, but the same concept applies: when a measurement system has too many metrics the real goal of the effort gets lost. The solution is to “Measure UP” – find a higher-level measurement that will drive the right results for the lower level metrics and establish a basis for making trade-offs.
CONCLUSION
These principles are universal guiding ideas, the application of them into a software development company requires analysis, interpretation, and an exhaustive work to translate them into appropriate practices that can be apply to a particular environment.
The more you learn about Lean, the more you will realize how much value it has when applying to software development projects. And always remember these: rapid delivery, high quality, and low cost are fully compatible; learn from experiences and never stop getting better!

REFERENCES
– Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck – 2003
– Implementing Lean Software Development: From Concept to Cash by Mary and Tom Poppendieck – 2006

NOTE
Originally, I wrote this article for Tim McMahon’s A Lean Journey blog.
Image provided by: Stuart Miles – FreeDigitalPhotos.net


4 Comments

Jimena Calfa · September 23, 2012 at 5:50 pm

Aderogba Adewusi from ASQ Community

Nice one. On my way to digest every point mentioned in your post. Wishing you all the inspiration to write more…

Jimena Calfa · September 23, 2012 at 5:51 pm

bsathish from ASQ Community

Good & to the point…keep up posting

YoshioRocha · October 17, 2012 at 4:16 am

Nice Post… it great that i before never heard about lean software development but hear you are describe such a good information.

Instant Messenger for enterprise · April 16, 2015 at 8:36 pm

Im no expert, but I believe you just made an excellent point. You certainly fully understand what youre speaking about, and I can truly get behind that.

Comments are closed.

Show
Hide
Subscribe to On Quality!
Get the latest content first.
We respect your privacy.