We continue studying different project management concepts and this time we offer to pay attention to lean methodology. Some people say that Agile is similar to Lean. Is it so? Let’s find out.
Lean software production has a much broader focus than Agile, and often implies that we do not focus solely on the problems of one development team, but look at the entire software development unit or even the entire organization as a whole.
Like Agile, Lean is more a concept, a way of thinking than something carved into stone. Using the ideas of Lean, you can create a system that meets your project management requirements.
What is Lean
Agile tells us what needs to be divided into small managed work packages, but it does not say anything about how to manage the development of this package. Scrum offers us its processes and procedures. Lean, in turn, adds to the Agile principles a workflow scheme so that each of the iterations is performed equally qualitatively.
In Lean, just like in Scrum, the work is divided into small delivery packages that are sold separately and independently. But in Lean, for the development of each delivery package, there is a flow of operations with stages similar to those that were created for the Apollo project. As in the classical project management, it can be the stages of planning, development, production, testing and delivery – or any other stages necessary for high-quality implementation of projects.
Lean steps and their flexibility make it possible to ensure that each part of the project is implemented as required. In Lean, there are no clear boundaries of the stages, as Sprints limits are prescribed in Scrum. In addition, unlike classical project management, Lean allows you to execute several tasks in parallel at different stages, which increases the flexibility and speed of execution of projects.
Thus, Lean Software Development is a set of principles used in various projects to improve the development process and improve its efficiency.
Lean’s goals are to make it possible to develop the project in a third of the time, using only a third of the budget and with a defect level reduced to one-third. How can this be achieved?
Lean offers 7 key principles:
- Eliminate waste. In the development of applications, waste is all that does not bring business-value to the customer, does not improve the quality of the developed system and does not reduce the time of the project’s output in production. In other words, this is what we spend money on and do not get any profit from it. Let’s just not do it.
- Amplify learning. In order for the team to develop a system that will bring business-value to the customer, it must have a fairly wide range of knowledge. Some of them are technical, for example, how to effectively organize remote connections in .Net (using remoting, COM +, web services, etc.). Others, on the contrary, relate to requirements, for example, understanding what the business user really wants, and not what the developers imagine. Therefore, the team must constantly develop and learn, accumulate knowledge.
- Decide as late as possible. The main idea here is to wait until the last moment before making any decision, especially irreversible. The later you make a decision, the more knowledge and understanding you have, the less you will have to redo later. Any solution must “ripen”, and only then it will be optimal.
- Deliver as fast as possible. This is the basis of iterative development. The sooner you show their achievements to the customer, the faster it will collect feedback and he quickly receive the product with the necessary modifications. You do not have to spend time and money going in the wrong direction, because the requirements to the system are constantly changing. Business feature that gets into production in a few months, it may be completely useless, whereas if it had been released in two weeks, it could bring the customer a good income.
- Enpower the team. The human factor is one of the most important moments in the successful development of software. In order for people to take responsibility, they were motivated and worked as one team, they should be aware of their contribution to the product being developed and feel that the final result of their work depends on them. Trust your team and respect it.
- Build integrity in. Authors Lean offer to solve the quality problem directly at its source – initially laying the quality in the product, and not leaving the identification and correction of defects for testing or production. Thus, the focus is on quality – you must constantly create and maintain automated module and integration tests, because only they can detect errors at the earliest stages and are an integral condition of the integrity of your system.
- See the whole. The main way to solve problems is to break them down into smaller problems and consistently eliminate the causes of these problems. But in order to see the roots of the problems, the team should have a good general understanding of the current development process, the concept and the strategy of the product being developed. But she can not do it herself – she needs your help.
Strengths of Lean
If you like the ideas of Agile, but the project requires very even quality and clear execution, Lean provides a set of tools to meet these requirements. Lean combines flexibility and structuredness, like Scrum, but in a slightly different way.
Lean also makes a very strong emphasis on what is called a “system”, i.e. that the team works as a unit. We should always look at our work “from the height” to be sure that we are improving in general. For example, many managers want to “borrow” each developer’s work by 100%, but in most cases it is, in fact, counterproductive. Let’s not force people to encode what is not needed (or completely undefined), just for the sake of encoding, because in the future for us it creates even more work.
Lean thinking says: respect people. It means giving people the work they know best how to do it. Give them what they need to be effective and then entrust them to do it. The essence of software development in lifelong learning; so we need to build the work so that we are convinced that we are constantly learning. And so we need to postpone the decision until the last moment (after all, we will know more at that time). As a result, the development goes by creating a quality product, because there is no other way to ensure a constant fast delivery, if you need to return and clean up our mess.
Weaknesses of Lean
Not every part of the project requires equally detailed and meticulous elaboration and attention. But Lean assumes exactly this approach to each task and stage. This is the main disadvantage of Lean application for large and heterogeneous projects.
And, unlike Scrum, Lean does not offer a clear workflow for the implementation of the “pieces” of the project, which contributes to the stretching of the project terms. This problem can be solved with the help of effective leadership and clear communication ̶ the main thing to remember about this.