Using Lean in Software Development
After proposing the Agile Manifesto, Lean thinking started to become the center of attention of the software development industry, but Lean did not appear as a software development approach of its own until 2003. One of the reasons that captured the attention of the software community was the focus of Lean on the organization as a whole. Agile software development was mostly devised to work for small software development teams; however, scaling Agile methods, such as Scrum or XP, to operate a whole organization was not straightforward because Agile does not explicitly provide support in that case. Therefore, Lean thinking was recognized as a practical solution to be combined with Agile methods. Recently, Lean thinking is not only applied as a way of scaling Agile, but also a way of enhancing software development processes from a wider point of view. The interest on Lean thinking, which originally emerged in the industry, is not exclusive to the software development industry. In other words, Lean thinking has been widely adopted in different majors, from the healthcare to the clothing industry. This essay will consider the Lean in software development industry.
What is Lean?
In short, Lean is a way of optimizing the people, resources, effort, and energy of your organization toward creating value for the customer. In fact, It is based on two guiding principles as follows: continuous improvement and respect for people.
According to MIT researchers, Lean is about “doing more with less” by ideally producing “the right things, at the right time and in the right place”. It means maximizing value and minimizing waste.
Seven Principles in Lean Software Development
Lean development can be introduced by seven principles as below:
- Eliminate waste
In a software project, the term “waste” refers to anything that is not adding the value to the project; thus, should be eliminated. Basically, This can be idle time, unnecessary features, defects, or partially done work in implementing a software.
2. Amplify learning
Lean software development is considered as an ongoing learning process. Developers do not usually write clear code on the first try. After having detected and fixed errors, they write an improved variation of the previous code. In other words, developers gain knowledge during development by solving problems and producing code variations. Thus, the best approach to improve the software development is writing code and building instead of documentation and detailed planning.
3. Decide as late as possible
As we know, uncertainty is an integral part of software development. Therefore, late decisions are more informed ones because they are based on facts and evidences. In fact, delaying an irreversible design decision is a wise move. A key strategy for making commitments late is to reserve the capacity for the change in the future.
4. Deliver as fast as possible
Actually, short development cycles allow developers to learn more by getting feedback. Besides, they allow a customer to delay making a final decision about design until they know more. Thus, fast delivery helps eliminate waste and improve learning and communicating within the team.
5. Empower the team
Developers should have the right to make technical decisions as they understand the details of their work. They can create a road map and follow it. It means “find good people and let them do their own job”.
6. Build integrity in
The user’s perception of the software and its characteristics must coincide. If a customer thinks that software has all the needed features and is easy to use, that system has perceived integrity. Conceptual integrity means that the the separate components in a software can work well together as a whole with having balance among maintainability, efficiency, flexibility, and responsiveness.
7. See the whole
Lean thinking has to be understood well by all members of a project. So, developers should take charge of the overall efficiency of the software instead of focusing on their small portion.
“Think big, act small, fail fast; learn rapidly”
Difference between Agile and Lean
Although Agile and Lean have some similar approaches toward software development, for instance, both provide opportunities for smaller players to compete with larger competitors, and also both ultimately focused on increasing business sustainability, there are some differences could be mentioned.
Agile is a software development methodology that takes an iterative approach to meet customers satisfaction by focusing simplicity. Lean focuses more on maximizing customer value by identifying and eliminating waste or any activity that consumes unnecessary resources without adding any value for increasing efficiency.
Agile believes in collaboration between the team and end-users through response and feedback ;whereas, Lean ignores unnecessary meeting and documentation. It means that It follows a systematic plan rather than responding to changes.
Agile is an umbrella term for several software development methodologies such as Scrum and XP. In contrast, Lean is an umbrella term for any approach based on both Toyota Production System and Lean Manufacturing.
In conclusion, Lean development is a way to speed up the development process by working on challenges or problems and eliminating unnecessary features, which do not useful in adding value.
References
Pilar Rodríguez, Advances in Using Agile and Lean Processes for Software Development, Book chapter, published by Elsevier, Volume 113, 2019, Pages 135–224.
Mark Lines; Scott W. Ambler (2012). Disciplined Agile Delivery: A Practitioner’s Guide to Agile Software Delivery in the Enterprise. IBM Press. pp. 54–. ISBN 978–0–13–281013–5.