Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint

Lean Principles

In Implementing Lean Software Development, Mary and Tom Poppendieck show how the seven principles of lean manufacturing can be applied to optimize the whole IT value stream. We believe that these principles help to provide a foundation for effective agile development and also provide an explanation for why many of the agile techniques work in practice. The lean software development principles are the following:

  • Eliminate waste. Lean thinking advocates regard any activity that does not directly add value to the finished product as waste. The three biggest sources of waste in software development are the addition of features that are not required, project churn, and crossing organizational boundaries (particularly between stakeholders and development teams). It is interesting to note that Walker Royce, chief software economist at IBM Rational, argues that the primary benefit of modern iterative/agile techniques is the reduction of scrap and rework late in the lifecycle. To reduce waste it is critical that DAD teams be allowed to self-organize and operate in a manner that reflects the work they’re trying to accomplish.

  • Build in quality. Your process should incorporate practices that minimize the number of defects that occur in the first place, but when this isn’t possible you should work in such a way that you do a bit of work, validate it, fix any issues that you find, and then iterate. Inspecting after the fact, and queuing up defects to be fixed at some time in the future, isn’t as effective. Agile practices that build quality into your process include refactoring, test-driven development (TDD), and non-solo development practices such as pair programming and modeling with others.

  • Create knowledge. Planning is useful, but learning is essential. You want to promote strategies, such as iterative development, that help teams discover what stakeholders really want and act on that knowledge. It’s also important for a team to regularly reflect on what they’re doing and then act to improve their approach.

  • Defer commitment. It’s not necessary to start software development by defining a complete specification, and in fact we know it to be a questionable strategy at best. You can support the business effectively through flexible architectures that are change tolerant and by scheduling irreversible decisions to the last possible moment. Frequently, deferring commitment requires the ability to closely couple end-to-end business scenarios to capabilities developed in multiple applications by multiple projects. The DAD process framework adopts strategies from Agile Modeling that enable teams to think through issues and make commitments at appropriate points in time throughout the delivery lifecycle.

  • Deliver quickly. Delivering high-quality solutions quickly is an achievable goal. By limiting the work of a team to its capacity, which is reflected by the team’s velocity (this is the number of “points” of functionality a team delivers each iteration), you can establish a reliable and repeatable flow of work. An effective organization doesn’t demand teams do more than they are capable of, but instead asks them to self-organize and determine what they can accomplish. Constraining these teams to delivering potentially consumable solutions on a regular basis motivates them to stay focused on continuously adding value. This strategy is reflected in the Disciplined Agile principle #14 described earlier.

  • Respect people. The Poppendiecks also observe that sustainable advantage is gained from engaged, thinking people. The DAD “people first” tenet reflects this principle, the implication being that how you form and then support your delivery teams is critical to your success. Another implication is that you need a governance strategy that focuses on motivating and enabling IT teams, not on controlling them.

  • Optimize the whole. If you want to be effective at a solution you must look at the bigger picture. You need to understand the high-level business processes that individual projects support—processes that often cross multiple systems. You need to manage programs of interrelated systems so you can deliver a complete solution to your stakeholders. This is a major difference from mainstream agile approaches, which tend to have a project focus and as a result will suboptimize around it. DAD avoids this problem by being enterprise aware and suggesting lean techniques such as value stream mapping, a stylized form of process modeling, to identify potential bottlenecks in the overall process so that they may be addressed. Measurements should address how well you’re delivering business value, a motivation for the rewording of agile principle #7, because that is the sole reason for your IT department. A lean measurement system is one aspect of appropriate governance explicitly built into the DAD process framework.


You are currently reading a PREVIEW of this book.


Get instant access to over $1 million worth of books and videos.


Start a Free Trial

  • Safari Books Online
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint