In software development our purpose is to turn a concept conceived by a business manager into a working implementation as rapidly as possible. Waste is anything we do that does not add customer value or that delays the delivery of customer value.
Refer to Wastes associated with Software Development
|
|
Develop software in a way that means it is tested as soon as possible. Test-Driven Development (TDD) is just one of tools that can be used to improve built-in quality. Do not allow backlogs of defects to build up. Examine the reason for defects and fix the underlying problem.
|
|
As software developers, we must appreciate that business experts must grow into the project. As their knowledge grows, so will their understanding of the problems. Similarly, as we implement a technical design, our understanding of the strengths and weaknesses of the design will grow. Software must be developed in a way that creates knowledge and allows this knowledge to be applied and used rather than locking in decisions based on incomplete information.
|
A software project can be seen as a decision making process that takes a business need and embeds decisions in code. At each stage in the project decisions are made. Even coding can be considered a decision making process. Traditional software development attempts to make as many decisions up front as possible i.e. Big Design Up Front (BDUF). This has many disadvantages including
- Making decisions before we have the best possible information available
- Building up an "inventory" of decisions that can go out of date
- Requiring the user to envisage the developing application rather than experiencing it.
Lean and Agile have developed a number of phrases to encapsulate the best decision making practices such as "Last Responsible Moment" and "Enough Design up Front". For more critical decisions, Lean also focuses on experimentation, decision sets and leaving irreversible decisions open as long as possible.
|
|
As other industries have discovered, there is no conflict between delivering fast and delivering a quality solution. Only by streamlining our business and attempting to run it at a consistent, maintainable rate can we identify the bottlenecks.
|
- Develop Leaders rather than Managers
- Use self-organising teams
- Encourage learning - Technical and Business
- Encourage feedback and use it
- Appreciate the expertise of your customers and suppliers and learn from it
|
Many software development organisations are organised into separate units, each of which optimises its own processes but often at the expense of overall efficiency e.g. optimising utilisation. It is the entire value stream from the initial concept by the business to realisation of value that should be measured and streamlined.
|
From the books by Mary and Tom Poppendieck (see influences)
|