Seven Principles of lean Software Development
Some time ago, I read the book Lean Thinking and learned a lot. In the past two days, I saw a foreigner interpreting seven principles based on his own understanding on the Internet. However, there are many misinterpretations in his interpretation, which gave rise to the motivation to write this article, I will also elaborate these seven principles according to my own understanding. It is best for interested friends to go to the original book.
- Any work without adding value is a waste;
- No one will see the document as a waste. It is a waste of documents that do not meet the needs of the customer's use scenarios. The features developed are not the most urgent needs of the user, but a waste of work forwarding; all bugs are a waste; any unnecessary things and steps are a waste;
- Minimize complexity and reduce repetitive work; only necessary work;
- The process of software development is a process of continuous discovery and learning. In this process, a lot of new knowledge and new information will emerge, making full use of this information will help the team make the software better;
- By starting an attempt as soon as possible and failing quickly, obtaining information and adjusting this practice can effectively enhance our learning of unknown things;
- Do not set yourself too early to maintain flexibility so that you can adjust your new knowledge in time;
- Delayed decision making means that you should not make a hasty decision before obtaining enough information, or make a decision when you have to make a decision (when it affects your business goals; that is to say, let your decisions depend on sufficient information as much as possible, rather than assumptions about such information;
- If you make a decision in advance, it means you have to make various assumptions, which will lead to corresponding risks. For example, you can estimate the project time when the demand is unclear, in the absence of sufficient research, a certain technology was decided;
- The ability to respond quickly matches latency decisions. If you cannot respond quickly, the decisions cannot be delayed. This also means that the system architecture design should be able to accommodate changes and high cohesion, low coupling;
- Fast delivery allows customers to see products earlier, allowing them to enter the market more quickly, and to reclaim product value earlier;
- Fast delivery shortens the feedback loop of end users on products and avoids the waste of creating content that customers do not need;
- Fast delivery can also expose your problems in the value delivery process, so that these problems can be solved;
- People who work on the front-line know the actual situation most, know what is happening now, and know the best response method in the current situation;
- To familiarize them with the tools, processes, rules, and causes used every day, they must have sufficient knowledge to provide improvement suggestions;
- Authorized teams will generate stronger motivation and greater creativity;
- Integrity aims to make the customer experience smooth and consistent, and integrity is generated throughout the development process;
- To ensure integrity, the key is to establish smooth information flow between customers and developers;
- Smooth information flow helps participants to make consistent and coordinated decisions, and helps to identify and solve deviations from integrity;
- The overall performance is usually not restricted by the performance of a certain part, but by the coordination and cooperation between different parts;
- Local Optimization may deteriorate the overall coordination and consistency. If local optimization cannot improve the overall performance, it will be of no value;
- Taking the cooperation parties as an example, there is also a big global relationship between them, which constitutes their common goal. In this case, partial optimization usually cannot lead to good results;