Lean Software Development (2. Amplify learning (Software development -…
Lean Software Development
1. Eliminate Waste
Everything not adding value to the customer is waste (muda) such as:
Partially done work
Building the wrong feature or product
Mismanaging the backlog
Unnecessarily complex solutions
Extraneous cognitive load
Waiting / multitasking
Dealing with Waste
Value Stream Mapping - technique used to identify waste
Point out sources of waste and eliminate them
Waste-removal should take place iteratively until even seemingly essential processes and procedures are liquidated
2. Amplify learning
Software development - continuous learning process based on iterations when writing code
Software design - problem solving process
Software value is measured in fitness for use and not in conformance to requirements.
The learning process - sped up by usage of short iteration cycles (refactoring and integration testing)
Increased feedback via short feedback sessions with customers
3. Decide as late as possible
Options-based approach offer better results
Decisions should be delayed as much as possible until they can be made based on facts and not on uncertain assumptions and predicitons
The more complex a system is, the more capacity for change should be built into it
4. Deliver as soon as possible
The sooner the end product is delivered without major defects, the sooner feedback can be received, and incorporated into the next iteration.
In the era of rapid technology evolution, it is not the biggest that survives, but the fastest.
Customers value rapid delivery of a quality product.
5. Empower the team
The lean approach follows the Agile Principle "find good people and let them do their own job; encouraging progress, catching errors, and removing impediments, but not micro-managing.
6. Build integrity in
The customer needs to have an overall experience of the System. This is the so-called perceived integrity: how it is being advertised, delivered, deployed, accessed, how intuitive its use is, its price and how well it solves problems.
One of the healthy ways towards integral architecture is refactoring.
Automated testing should not be a goal, but rather a means to an end, specifically the reduction of defects.
7. See the whole
"Think big, act small, fail fast; learn rapidly"
Lean Software Development is considered an Agile Software Development Method