General
6
 min read

What is Lean Software Development?

Silvana Paneva
December 10, 2019

Lean development is the application of lean principles to software development. It was called the Toyota Production System because automaker Toyota invented this approach as a way to streamline its production of cars and eliminate wasted time and resources. Eventually, other manufacturing organisations began using this system, and the name later changed to Lean. 


A lean organisation should have the following characteristics:

- See every problem and mistake as an opportunity to streamline processes 

- Value the customer experience above everything else

- Promote a culture of problem-solving and open communication between the team, whereby employees feel valued and invested

- Limit waste


The seven principles of lean development are: eliminate waste, build quality in, create knowledge, defer commitment, deliver quickly, respect people, and optimise the whole. 

In the book “Lean Software Development: An Agile Toolkit” Mary and Tom Poppendieck outlined how these lean principles can be applied to software development. 


  1. Eliminate waste

The three sources of waste in software development are the addition of non-required features, project churn and crossing organisational boundaries (particularly between stakeholders and development teams). To reduce waste development teams must be allowed to self organise and operate in a manner that reflects the work they’re trying to accomplish.


Tom and Mary translated wastes from lean product development to the context of software development. Each of them should be eliminated to maximise customer value.



  1. Build in quality 

In trying to ensure the quality, teams often create waste - through excessive testing, or and excessive logging of defects. 

In lean development, quality is something everyone should take care of, not just the QAs.

These are some of the most popular lean development tools for building quality in:


  1. Create knowledge

Planning is useful, but learning is essential.

This principle requires discipline and focus on implementing. It encourages Lean teams to provide the infrastructure to accurately document and retain valuable learning. This can be done by using the following tools:


  1. Defer commitment 

This lean principle encourages teams to take responsibility by keeping their options open and continuously collecting information, rather than making decisions without the necessary data.  To defer commitment means to not plan (in excessive detail) for months in advance, to not commit to projects without a full understanding of the business requirements, and to collect and analyse the information regarding any important decisions.


  1. Deliver quickly

Every team wants to deliver to the customer as quickly as possible. And the question is what slows them down? 

Lean development is based on the concept to build a simple solution, put it in front of customers, and enhance incrementally based on customer feedback.


6. Respect people

This principle applies to every aspect of the way lean teams operate, from how they communicate, handle conflict, hire members, deal with problems, and more. Lean development teams encourage respect for people by communicating proactively and effectively and empowering each other to do their best work.


7. Optimise the whole

Mary and Tom Poppendieck describe two vicious cycles that Lean development teams often fall into:

I) When developers feel pressured to deliver, they release code that may not meet quality requirements. This increases the complexity of the code base, resulting in more defects. With more defects, there is more work to do, putting even more pressure on developers and so the cycle continues and doesn’t end.

II) When testers are overloaded, it creates a long cycle time between when developers write code and when testers can give feedback on it. This means that developers may write code that’s defective, resulting in more defects and therefore requiring more testing. 

Optimising the whole is a lean development principle that encourages organisations to eliminate these sorts of cycles by operating with a better understanding of capacity and the downstream impact of work.


Should you use lean software development?

Lean can succeed in small projects with a short time frame. That’s because Lean teams are small and it is quite hard for them to manage large projects quickly. If you want to handle a big project, you have to coordinate the activities of two or more Lean teams .

However, this is not as simple as it sounds. In Lean, all activities of the team are based on communication. Two teams that work in different offices can often face communication challenges. Thus, it is better not to use Lean if your project is too complex and big. 

It is also better not to use this methodology if your customer does not want to participate in the process of project realisation. Lean like any other Agile methodology, it involves its customers. It may seem inconvenient to them, but this is the only way to create a high-quality Lean product.

Many organisations think that lean software development methodology is an excellent approach to software development. But not any organisation should use this methodology, because it is not always the right one. 

For example, if your software development project is very large and complex, it is better to use Waterfall methodology, as Waterfall teams are large and they do not require constant communication between their members.

So, when you're choosing a methodology, think about what will best fit your project, team and customer.  And don't think about what's popular at the moment.