Lean Software Development: 7 Principles Everyone Should Follow

Amit N Trivedi

The core objective of the Lean Software Development methodology is to optimize the efficiency of the whole development process by eliminating the extra additive practices (termed as “wastes”) and the system as the whole.

Practices can vary from the existing one as you move further from one condition to the next, and they are likely to change as circumstance develops. But the underlying principle should not change.  

Suppose, from long back you’re following some software development principles and practices which aren’t productive enough to meet the goals.

For Product advancement, you realize the need to put light on new technologies and practices that put hands together to work exceptionally well.  

But, at the end of the day, you might want to move from existing practices, however, it’s not clear where you are heading.

Why adopt Lean software development methodology?

Lean Software Development has its roots in the lean manufacturing principle which is translated into the software development by Tom and Mary Poppendieck. Lean Manufacturing principle is derived from “Just In Time production” expertise by Toyota. And the same principle has been well accepted throughout the software industry.

The evolution of the lean concept empowers us to manage the waste at different levels. There is no much difference in the lean software development methodology and Agile development methodology.

There are 7 basic principles for lean software development as mentioned below.

  1. 1. Eliminate Waste
  2. 2. Build Quality In
  3. 3. Create Knowledge
  4. 4. Defer Commitment
  5. 5. Deliver as fast as possible
  6. 6. Respect People
  7. 7. Optimize the Whole

Let’s take a deep dive into each to understand how does it look like.

Software Development

  1. 1. Eliminate Waste:

This principle says that we should eliminate the waste as much as possible?

So, first of all, let’s understand what is a waste?

As per the Wikipedia, Waste is any substance which is discarded after primary use, or it is worthless, defective and of no use. This is true for physical goods. For software development, anything which does not add value to final product delivered to end user is termed as waste.

Below are the few examples of waste for software development:

Improper or Partially done work can also be termed as waste.

The requirements might have been given long back and now the ready software might look obsolete.

Delays in Delivery is a waste. The reason is unless customer sees it they can’t provide feedback. If feedback at late chances of rework increase as the project would have already progressed. The second thing is customer may change this mind.  

Any unused code is a waste. Because there is a cost to maintain, test and document it.

Working on any feature which doesn’t add value to the user is a waste of efforts from development, discussion, testing and maintenance, and communication.

Wrongly prioritized Backlog

Wrongly prioritizing the backlog will result in a waste of efforts. Working on low priority feature which is not important for minimal viable product is waste

Any Rework is the complete waste. Using library which is does not the fulfill current requirement. In Middle of the work if you have to change it will require lots of efforts. This is the complete waste of development testing and team efforts.

  • –> Unnecessarily complex solutions
  • –> Extraneous cognitive load
  • –> Psychological distress
  • –> Waiting/multitasking
  • –> Knowledge loss
  • –> Ineffective communication

This is the suggestive list for the things which we can consider as the waste in the arena of software development. We should keep identifying waste and try to eliminate them as much as possible.

2. Build Quality In

Better quality will introduce less error and less waste. Do the thing right at first time. Try to implement feature right. Try to reduce defects as much as possible instead of fixing it. There are many best practices are available namely Test Driven Development (TDD). Fix the defect as soon as it encounters instead of queuing them. Your goal should be to build quality into the code from the start, not test it in later.

3. Create Knowledge

Knowledge plays important role in success of project or product. Keep learning from everything we code, test, deliver and discard. Keep this knowledge accessible to everybody. Make small iteration and do the retrospective with team frequently. Try to learn the new technique that works and unlearn things that didn’t work. Encourages systematic learning throughout the development cycle

4. Defer Commitment

There is a certain decision that will have the big impact on the software development project success. And there is always urgency on the team to make these decisions so that they can proceed. If the decision is taken without proper fact is available then it will have an adverse impact on the project. Try to delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions. Because correcting the mistakes is most costly later on.

5. Deliver as fast as possible

Customer changes his mind with time. So try to figure out how you can deliver fast before a customer gets time to think and change his mind. Look at these tips to learn the time management for your project.

6. Respect People

People are the most important aspects of software development. Good and motivated people can make big difference. Show respect for people and encourage them. Help them by removing impediment and motivate them to achieve the better result. Foster trust and relationship with them

7. Optimize the Whole

Software development activities are organized in smaller part for better tractability and management. A different team works on the different parts. Optimizes the whole value stream, from the time it receives an order to address a customer need until the software is deployed and the need is addressed. It is important to optimize whole system namely developer, process, people, customer, and company.

Google Certified Agency

about the author

Amit N Trivedi

Amit N Trivedi is working in capacity of Senior Project Manager at Techjini. Amit holds Master degree in Computer Application and he is PMP certified. He is responsible for end to end delivery of the project at Techjini.