Using Lean in Software Development

Kayvan Kaseb
Software Development
4 min readFeb 26, 2020

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?

Lean Software Development

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.

7 Principles in Lean Software Developments

Seven Principles in Lean Software Development

Lean development can be introduced by seven principles as below:

  1. 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.

--

--

Kayvan Kaseb
Software Development

Senior Android Developer, Technical Writer, Researcher, Artist, Founder of PURE SOFTWARE YAZILIM LİMİTED ŞİRKETİ https://www.linkedin.com/in/kayvan-kaseb