📜 ⬆️ ⬇️

Agile or Lean: Aha aha, what's the difference?

Is Agile similar to Lean? When people say “Agile”, do they really mean Scrum? Or are people still using different types of Agile and why?

Having received many questions in the past, I decided to dot the “and”.

image

')

LEAN


Lean came from lean manufacturing (Lean Manufacturing), it has a set of principles related to quality, speed and customer focus (the same thing we are trying to do in agile development, right?)

Mary and Tom Poppendik adapted “Lean Manufacturing” principles for software development, and I believe that these ideas are the basics and reasons for how agile works:

1. Elimination of losses.
2. Improving quality.
3. Knowledge creation.
4. Deferred liabilities.
5. Fast delivery.
6. Respect people.
7. Full optimization.

In a nutshell, Lean says: ruthlessly get rid of everything that does not add additional value, and do only what you are absolutely sure that you need to do at the moment. Eliminating losses means eliminating useless meetings, tasks, and documentation. But it also means getting rid of temporary losses in any known tasks that need to be done in the future (everything changes constantly and often becomes unnecessary in the end. If we did something in advance, then we would have to spend time reworking it, because conditions or our understanding has changed in the aftermath). It also means that we have to get rid of non-efficient ways of working, such as multitasking, so that we can make deliveries quickly.

Lean also places a very strong emphasis on what is called a “system”, i.e. that the team works as a unit. We must always look at our work “from on high” to be sure that we are improving overall. For example, many managers want to “take” the work of each developer by 100%, but in most cases this is, in fact, counterproductive. Let's not force people to encode what is not needed (or not fully defined), just for the sake of coding, because in the future it creates even more work for us.

In closing, Lean says: respect people. This means giving people the work that they best know how to do. Give them what they need to be effective and then trust them to do it. The essence of software development in continuous learning; therefore, it is necessary to build work so that we are constantly learning. And so you need to postpone the decision until the last moment (because we will know more at that moment). As a result, the development goes through the creation of a quality product, because there is no other way of ensuring a constant quick delivery if you need to come back and clean up our mess.

“Organizations that truly follow Lean have a strong competitive advantage because they respond to market demand very quickly and in a highly disciplined manner, rather than trying to predict the future,” Mary Poppendik.

Agile


Agile is based on a set of values ​​and principles set forth in the Agile manifest. The manifesto was a response to the ponderous methodologies that were popular, while the debilitating software projects, in the end, did not begin to do what they really needed - to create software that helps customers. I believe that Agile values ​​and principles work because science follows Lean, and you will see many borrowings repeated in Agile.

Agile values ​​are:


People and interaction are more important than processes and tools.
A working product is more important than comprehensive documentation.
Cooperation with the customer is more important than agreeing the terms of the contract.
Responding to change is more important than following the original plan.

Agile principles are:


1. The highest priority is user satisfaction.
2. Changing requirements is welcome.
3. A working product should be released as often as possible.
4. Business and development representatives should work together daily.
5. Motivated professionals should work on the project.
6. Direct communication is the most practical and effective.
7. A working product is the main indicator of progress.
8. Investors, developers and users should be able to maintain a constant rhythm indefinitely.
9. Constant attention to technical improvement and design quality increases project flexibility.
10. Simplicity - the art of minimizing unnecessary work - is essential.
11. The best requirements, architectural and technical solutions are born from self-organizing teams.
12. The team should systematically analyze possible ways to increase efficiency and adjust the style of their work accordingly.

Any project that follows these values ​​and principles can rightly be considered agile. However, there are certainly most common practices for agile teams, following which agility is achieved.

The most common are: Scrum or Kanban (or a hybrid of both) for “Managerial Practices”. Extreme Programming (XP) for Technical Practices (with new practices becoming popular, largely due to Lean Statup, such as continuous deployment and testing for sales).

Good agile teams choose some of the management and technical practices that are best for them. (A bad example when they take only a couple of practices, falsely believing that it is “agile that makes them”)

Acknowledgments: Thanks to Yuri Prokudin, Ekaterina Kiveleva for help in preparing the text.

Source: https://habr.com/ru/post/309356/


All Articles