What is Lean Software Development?

Lean Software Development : The boom in the automotive industry in Japan in 1980s alarmed the need to follow the lean product development approach for better productivity at a lesser cost.

Lean software development originated from a popular book by Tom and Mary Poppenieck that translates lean manufacturing principles to software development. The principles behind lean software development follow the principles of ‘Just in Time production’ launched by Toyota. The lean software development might be considered a subset of lean product development; certainly the principles that define lean product development are the same principles that form the basis of lean software development. These have been widely accepted in the agile world.

Lean Software Development Principles explained

The 7 key principles in lean software development are:

  • Eliminate Waste
  • Build Quality In
  • Create Knowledge
  • Defer Commitment
  • Deliver as fast as possible
  • Respect People
  • Optimise the Whole

We will study about the first two principles and rest will be followed in another post.

  1. Eliminate waste: How can we eliminate waste?  Let us start by identifying what is waste.  In the software development field, partially done work can be termed as waste. The requirements might have been given long back and now the ready software might look obsolete.  The delay in delivery of the product to the customer is also considered as a waste as the customer feedback is not gathered till the end. The customer expectations keep changing. By the time the product is delivered to the customer, most of the expectations would have changed. But some companies do identify what adds value to the customer deliverables and delight the customers by delivering them. So if we have delivered anything which does not add value to the customer is a waste.  The partially done work comes with a lot of cost as we have to maintain the code, test and fix the code etc. If there is any waste that exists in this partially done work, it just adds to the cost without delivering any value to the customer.
    What happens in a real life scenario is that we expect the customer to provide the complete list of requirements to the development team so that there is no change or rework after that. This triggers the bloating of requirements as the customer wants to put in everything they can think of in order to avoid late requirements. Most of the requirements end up not adding any value to the customer. Every bit of unused code adds cost to the project in order to maintain the code, test the code and document it.
    This is when the process of developing 20% of the code to meet 80% of the requirements came into existence. This is called as 80:20 rules. This should be our base code from where we would develop more features as and when needed. Co-location is also an option so that knowledge sharing is easier. We need to keep in mind waste is added cost to the project.
    In the agile world there is lot of review done post each iteration to discuss on the positive/negative things happened over the course of the iteration.  This helps in eliminating the waste to some extent.
  2. Build Quality In: Prevention is better than cure. This is true when it comes to building high quality software too. Our focus should be to avoid defects rather than to fix them. This is where the test driven development (TDD) comes into picture where the coding and the testing happens parallel. If we find a defect, fix it and proceed. Don’t queue the defect because queues are nothing but waste which will add to the cost later. The ultimate goal should be to produce a defect free product at the end of the day. But final verification has to be done to make sure what we say works is working.  As they say “Do it right the first time”.
    Writing long codes will not add any value to the product. Create ways where the same thing can be achieved by writing less code. Maintaining and testing less code is simpler and keeps the code clean.

 

About Sparsh Goyal

A passionate IT professional, Sparsh Goyal boasts of 4.3+ years of experience. He has worked for various projects under AWS, Google Cloud Platform, Spring Boot, Python, Microservices, RESTful, RESTFUL APIs/SOAP, Scripting, Shell and JAVA. He is also working towards gaining proficiency in Oracle Cloud PaaS, DevOps, SaaS and Docker/Kubernetes. His primary and secondary skills validate his relentless pursuits of expanding his horizon and developing more as an IT person. He boasts of the following certifications: *Google Professional Cloud Security Engineer. *AWS Cloud Solutions Architect Associate. *Oracle certified JAVA programmer.

3 thoughts on “What is Lean Software Development?”

  1. Informative. However, only Eliminate waste and Build Quality in have been elaborated upon. Other five principles of Lean Software Development have not been elaborated upon.

  2. Nice sort of information gained ample of knowledge about lean software development.Thanks..!! for writing keep writing like this.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top