Agile Brings Flexibility to Software Development
Lean thinking is about creating flexibility in the manufacturing process in order to deliver the value that customer wants at that time.
In agile, this is also true. The beauty of using agile to develop software is the work can be prioritized on a daily or even more frequent basis. As the development team completes a requirement and it moves to the “complete” pile, the product owner can determine which of the remaining requirements is the most important to complete next. The product owner is closely linked with the customer of the software so they are the voice speaking directly for the customer.
If new requirements come up during development, no problem. Add that requirement to the back log on the kanban board. The next time it is time to pull a new requirement the product owner can prioritize the new story at the top or not.
This creates a lot of flexibility in the development process that a waterfall process does not. Usually, with a waterfall development process all the requirements have to be determined up front and then frozen because adding any after that can cause issues. Then the customer doesn’t see anything until the development is completely done. The agile process allows to release pieces of functionality as it is ready.
This increased flexibility allows the team to deliver more value sooner to the customer, creating a happy customer. Which is what lean is about. Customer first.