Lean offers a solid conceptual framework, values and principles, as well as good practices, derived from experience, that support agile organizations.
The learning process is sped up by usage of short iteration cycles – each one coupled with refactoring and integration testing.
[jargon] As software development is always associated with some uncertainty, better results should be achieved with a set-based or options-based approach, delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions.
The more complex a system is, the more capacity for change should be built into it, thus enabling the delay of important and crucial commitments.
The iterative approach promotes this principle – the ability to adapt to changes and correct mistakes, which might be very costly if discovered after the release of the system.
Evaluating different options is effective as soon as it is realized that they are not free, but provide the needed flexibility for late decision making.
Thus the work organization changes into self-pulling system – each morning during a stand-up meeting, each member of the team reviews what has been done yesterday, what is to be done today and tomorrow, and prompts for any inputs needed from colleagues or the customer.
However, lean implementation has shown that it is a good practice to deliver fast in order to see and analyze the output as early as possible.
In a work-out technique, the roles are turned – the managers are taught how to listen to the developers, so they can explain better what actions might be taken, as well as provide suggestions for improvements.
The lean approach follows the agile principle[6] "build projects around motivated individuals [...] and trust them to get the job done",[7] encouraging progress, catching errors, and removing impediments, but not micro-managing.
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.
Conceptual integrity means that the system's separate components work well together as a whole with balance between flexibility, maintainability, efficiency, and responsiveness.
The needed information is received in small batch pieces – not in one vast chunk - preferably by face-to-face communication and not any written documentation.
During a longer period of development, a stronger subcontractor network is far more beneficial than short-term profit optimizing, which does not enable win-win relationships.
"Think big, act small, fail fast; learn rapidly"[8] – these slogans summarize the importance of understanding the field and the suitability of implementing lean principles along the whole software development process.
Only when all of the lean principles are implemented together, combined with strong "common sense" with respect to the working environment, is there a basis for success in software development.