Lean Software Development: 7 core principles

‘Lean’ and ‘agile’ are terms that have been used widely in many places, specifically in software development methodologies, project management, and management consulting.

What’s more, a lot of people believe that lean falls under the agile umbrella…

But the fact is, both agile and lean are not the same

To put it simply, if agile is people focused, then lean is all about process focused.

In this article, I will go through some historical background of Lean and 7 core principles.

However, if you are interested to know what agile all about, please visit my previous post here.

History Background

Lean was coming from Toyota Production System, it was first invented by two Japanese industrial engineers named Taiichi Ohno and Eiji Toyoda back in 1948 and 1975.

The idea of Lean software development was derived from lean manufacturing principles by Mary and Tom Poppendieck in 2003. Poppendieck borrowed the traditional lean principles and a set of 22 tools, then applied into agile software development.

Lean software development is now widely accepted by the agile community due to Poppendieck active involvement in presenting talks in agile conferences.

For now, we will mainly focus on the top 7 lean principles that have been translated into agile practices.

Lean Software Development: 7 core principles

# 1 – Eliminate Waste

One of the core values is to remove everything that does not add value to the end-user. In the software development world, this can be achieved by identifying the value of a software product before getting the whole team and start building it.

It will become easier to identify the ‘waste’, requirements that do not add much value to the product and end-users. For example, extra processes, extra of complicated features, unnecessary code, or extra documentations that will create confusion to end-users.

Value stream mapping is one of the tools that can be used to identify waste in Software Development.

# 2 – Amplify Learning

Building a piece of software never an easy task, actually, it is very complicated.

That’s why it takes a lot of time to discover and learn about the real needs and implement feedback of end-users.

Teams are encouraged to share their knowledge, communicate continuously with feedback loops to ensure each feature increments are meeting the appropriate quality standards.

# 3 – Decide as Late as Possible

Back in the traditional software development process, all requirements, architecture, and designs must be gathered up-front before commencing any development work, this is one of the key reasons that causing the project leads to failure as things may change from time to time.

Therefore, it is always important to gather information as much as possible before making any decision. Not only teams can change directions based on the course of inputs, but it will also increase the chances of delivering features that meet customer expectations.

# 4 – Deliver as Fast as Possible

The idea of delivery as fast as possible was coming from the traditional lean concept of “Just In Time”.

During an early stage of lean software development, the team often build a minimum viable product (MVP) based on a minimum set of requirements. Customer feedback will be collected and analyzed rather than building a system as a whole.

The whole idea is to let the customer first ‘taste’ the product and let them find out real needs and wants.

# 5 – Empower the team

Teams should be empowered to take ownership of their work and make decisions based on the individual’s domain and knowledge.

Servant leadership is now promoted to leadership and management. The main responsibilities of a leader in a team are listening, training, support, and resources which enables self-performing teams.

# 6 – Built Integrity in

What ‘integrity’ means over here is ‘free from flaw, defect and decay’.

In lean, it sums up with two types of integrity; perceived integrity, conceptual integrity.

Perceived integrity is about improving the overall customer experiences of using the product.

And conceptual integrity is focused on technical nitty gritty; it is all about how individual components come together and work together effectively as a whole.

# 7 – See the Whole

When we encountered an issue in a sub-process of a large system, our first instinct will tell us to fix the only part that causes problems and leave everything as it is.

However, the lean principle encourages to go for optimizing the entire system instead of focusing on one part of it. Even if the current process produces achieved the expected results, it will end up creating a secondary effect and cause the entire process flow to slow down at the later stage.

Hence, optimizing as a whole helps an organization to eliminate this kind of vicious cycle by understanding the capacity and improve value streams in delivery.

Conclusion

Although Lean Software Development has gain its popularity among agile community in nowadays. It is important to identify and choose carefully before implementing with existing processes.

Thanks for the patience and reading through! You are finally reaching to the end of this article.

To make your life easier, I have summarised the 7 core principles in Lean Software development in an A4 page.

Share this out with your friends or colleagues. 

Or, drop me a note if you have any questions. I will get back to you as soon as possible.

Talk soon!