Wastes associated with software development include the following:
Partially Complete Work
Extra Features
Extra Processes
Handovers
Task Switching
Delays
Defects
|
Wastes are also categorised by the 3 terms Muda (Wasted Activity), Mura (Unevenness), Muri (Overburden)
The approach taken to reducing Unevenness and Overburden is to implement Flow
Read more about flow ...
|
Examples of Partially Complete Work include
- Process Designs not developed
- Requirements documented but not developed
- Specifications not developed
- Software coded but not tested
- Software tested but not deployed.
In short, work is only complete when a feature is deployed and in use.
Strategies to reduce this waste:
- Iterations and/or Small Projects.
- Value should flow from Process Design through analysis, development and testing to deployment.
|
When software is developed in a traditional manner, approximately two-thirds of the features are rarely or never used (The Standish Group). Clearly, reducing this waste must be a key goal.
Cause: "This is your one and only chance to tell us what you want?" - this statement is a recipe for a wish list.
Strategy to reduce this waste:
Move to pull-based prioritisation. A backlog of features is prepared. A business owner prioritises the list and nominates the items that will deliver greatest business value. Those that will not provide business value are never prioritised.
|
Software Development often includes steps that are not required or are ineffective. Steps can include extra signoffs that add little value, excessive documentation etc.
Strategy to reduce this waste:
Each step should be evaluated with two questions "Is it truly necessary?" and "Is it working?"
|
A handover is any time during the development of a solution that responsibility for the next step is handed from one person to another (often using a document). Obvious examples of Handovers include
- From the Business Owner to a Business Process Designer
- From a Business Process Designer to a Business Analyst
- From a Business Analyst to a Technical Analyst
- etc.
Handovers should be minimised because they result in lost information. Written documents cannot capture the subtleties of many concepts and the deep knowledge possessed by the holder.
Strategies to reduce this waste:
- Develop iteratively so that design, development and testing happen closely together.
- Use multi-skilled staff to reduce handovers
- Don't have "Handover points". Work together so that knowledge is handed over informally as well as through written documents.
- Value oral communication.
|
There is a loss of concentration associated with changing from one task to another. This is particularly true of Software Development where deep concentrated thinking is required.
In addition, because many projects are stretched over an extended period, a person may have to touch on a complex area many times. For example, a large system may contain a small portion requiring detailed Tax knowledge. If the area relating to tax is touched on many times over several months, a person may need to "re-brief" themselves several times throughout the project.
Strategies to reduce this waste:
- Any single person should be allocated to as few tasks as possible (Preferably one but definitely 3 or less). If those tasks get continuously blocked, fix the problem that is creating the bottleneck.
- Use iterative development to bring all stages relating to a particular feature closer together.
- Improve scheduling - if everything is the priority item then nothing is the priority item. Make the decision. If effective decision making processes are not in place, implement them.
|
Examples of delays include
- Developers waiting for requirements
- Developers waiting for clarifications
- Testers waiting for software to test
Strategies to reduce this waste:
- Collocated Teams
- Complete teams - Business and Technical skills and knowledge
- Iterative Development
- Improve decision making - Create Knowledge, Defer Commitment, Feedback
|
As other disciplines have found, the key to reducing defects is to "Build Quality In" rather than "Inspect Quality In".
Strategies to Build Quality In:
- Test Driven Development
- Automate Unit Tests
- Document requirements using test criteria
- Automate Acceptance Tests where possible
- Re-run tests on a regular basis
- Whenever a defect is found
- Build a new test to prevent it in the future
- Understand the reason the defect got through
- Feedback - Regular deliveries and demonstrations of the evolving system will ensure requirements are understood.
|