Efficiency optimization and minimizing costs are two important components of the lean approach to software development, which has already been tested by many IT companies in practice.
The roots of this approach go back to the history of the well-known car manufacturer Toyota, and are based on its problem solving approaches. The bottom line is to make only those changes that are beneficial, and, at the same time, requiring minimum costs and taking not too much time to be implemented.
In relation to software development, Lean methodology was first covered by Mary Poppendieck and Tom Poppendieck, who published the book “Lean Software Development” in 2003. It describes the traditional principles of lean production in relation to software development, as well as a set of 22 tools (practices) and their comparison with agile development methodology.
Lean Software Development – is not a methodology for project development management, as it may seem to be at first sight. This is a set of principles used in various projects to improve the development process and increase its effectiveness.
The 7 Principles of Lean Software Development
At the heart of lean development lies a number of important principles that remain virtually unchanged over the past few years. Let’s try to explain them in brief and simple words.
1. Eliminate Waste. In app development, waste is anything that doesn’t bring any business-value to the customer, and doesn’t improve the quality of the product being developed or speed up the project’s release time.
In other words, this is what we spend money on and don’t get any profit from. For example, unused code and unnecessary functions that do not bring additional value to both the user and business, but require time for discussion, development, testing and documentation.
2. Amplify Learning. In order for the team to develop a system that will bring business-value to the customer, they must have a wide range of skills. The team has to accumulate knowledge and share it, for example, in the form of a review at the end of the iteration.
Some of the new learning will be technical, and others, on the contrary, are classified as non-functional requirements. For example, having an understanding of what a business user really wants, and not what developers imagine. Therefore, the team must constantly develop, learn, and accumulate knowledge. This allows the team to avoid problems in the future.
3. Decide as Late as Possible. The main idea here is to wait until the last moment before making any decision, especially irreversible ones. This is especially true when we are talking about the decisions that can have a significant impact on the development’s success.
All decisions must be supported by analytical data and process monitoring results, otherwise the team risks being absorbed in too many changes and may forget about the project’s main purpose.
The later you make a decision, the more skills and understanding you have, and the less you will have to redo later.
4. Deliver as Fast as Possible. This is the basis of iterative development. The faster you show your groundwork to the customer, the sooner you will get his feedback, thus, he will receive the product with the necessary improvements much sooner.
An interesting business function which went into production in a few months can ultimately prove to be completely useless. But if it was released within two weeks, it could prove beneficial to the customer.
5. Empower the Team. Software development is a process of mental work, so treat people as competent, motivated professionals, rather than professionals with narrow skills in writing code or drawing diagrams.
In order for people to take responsibility, be motivated and work as a solid team, they should be aware of their contribution to the product being developed. It is necessary to create conditions in which each person can be focused working on the current business task.
Trust your team and respect it. The human factor is one of the most important elements in successful software development.
6. Build Integrity In. According to the principles of lean development, a problem can either be found after its appearance, or you can eliminate the causes leading to a problem in advance.
The authors of Lean Software Development suggest you solve the quality problem directly when it first starts appearing – initially by putting the quality in the product, and not leaving the identification and fixing of bugs for testing or production. For this, it is worth moving in small steps and checking the quality after each step.
7. See the Whole.
The main way to solve problems is to break them down into smaller issues and consistently eliminate the causes of their occurrence. But in order to see the root of the problem, the team should have a good overall understanding of the current development process, the concept and strategy of the product being developed.
In this article you will find out about the principles of Lean Software Development, which you can apply when working on projects in your team. It may well be that this will allow you to improve efficiency and optimize processes.
It is necessary to understand the fact that we are talking about principles, and not strict rules. Therefore, one has to put in some effort to effectively adapt them to the specifics of your project.