The basis behind Lean Thinking is to re-think the existing value chain and find ways to provide what their customers value with significantly fewer resources than competitors. This is provided by evaluating current workflow and decision making strategies. eXtreme Programming (XP) is a set of principles which focus on rapid development and works to eliminate the seven wastes of software development (reference back to page) by: –
- Extra Features: develop only for today’s stories. XP advocates developing software for the current need and as more stories are added the design should be ‘refactored’ to accommodate the new stories.
- Requirements: story cards are detailed only for the current iteration. Remove any distraction from what could possibly be exist on the horizon. Adding extra features for stories that may never be requested provides noise and waste.
- Extra steps: code directly from stories; get verbal clarification directly from customers.
- Finding Information: Have everyone in the same room; customers included.
- Defects Not Caught By Tests: Test first both developer tests and customer tests.
- Waiting, Including Customers: Deliver in small increments.
- Handoffs: Developers work directly with customers not via proxy.
Reduce the duration of feedback loops
Working closely with the customers generates a richer solution to their problem. This can be separated into two distinct parts. Firstly, developers can gain a greater understanding of the problem when talking directly to the customer. This allows test cases to be richer, and removes the need for requirement documentation. An automated test suite allows not just regression tests but provides up-to-date documentation of how the software should function. Secondly, feedback loops are reduced as code is delivered in scheduled iterations. This ensures that what is being delivered is what the customer wants and changes can be delivered in the next iteration.
In Summary, is XP lean?
In short, removing requirement documentation and focusing on stories and test cases ensures that time is not wasted on artefacts that will quickly become out of date. A good knowledge of the domain (extracted from the customer directly) coupled with the short build cycles and automated testing constitutes a lean approach to software development.