Guide to lean software development

Anyone who has been searching for more information about lean software development will have almost certainly been met by more difficult jargon, such as: lean principles; lean manufacturing; and Agile software development.

So if you’re struggling to get your head around what this idea is all about, we’re going to attempt to simplify it for you with our guide to lean software development.

What is the lean concept?

To understand lean software development, you must first understand the idea of the lean concept. Lean is actually a production and manufacturing process that outlines that spending on resources that do anything other than create value for the end consumer is actually wasteful. Therefore, this spending can usually be eliminated.

Lean Software Development

So in other words, lean is all about efficiency. It means decreasing waste, optimising workflow and preserving work with less work. One of the earliest practisers of the lean manufacturing idea was Toyota: all the way back in the 1980s.

To know lean… you must think lean

To understand lean software development, let’s explain the key principles behind the lean concept. There are seven basic ideas:

Amplify learning

Focus on the purpose of something’s use rather than simply looking to meet set standards. Try to create solutions that meet consumer’s unique problems and work with the idea of “try it, test it, fix it”. According to M & T Poppendieck in Lean Software Development: 2003, Chapter Two, design of lean software is best focused on repeated but short cycles of investigation, followed by experimentation and close checking of results.

Feedback is important as it helps to speed up development and future improvements. During these sessions your team can learn more about problems and find solutions.

Build integrity

With lean software development, it’s vital that usability is consistent and that there is a clear balance between efficiency, responsiveness, flexibility and maintainability.

To help build integrity within, customer tests should be provided; complex systems should be presented in a way that is easy for consumers to follow and understand; and information should be transferred in small batches rather than large. The architecture should be simple without repeated code or unnecessary features.

Eliminate waste

Anything that doesn’t add value to a product can be removed. This could range from bureaucracy and internal processes to unnecessary functionality and coding.

Empower the team

According to the lean software development concept, an empowered team will look at the whole system rather than just their own area of expertise. They should be allowed to design their own working practises; and have the ability to understand and transform those practises to make them more efficient.

Management’s role should be to train and assist these teams: but to ultimately allow them to make their own decisions. For management, it’s about asking questions like “what would help you do your job faster?” and helping to make a list of good and bad practises.

Deliver as fast as possible

Customers want fast delivery: and giving them this also means they have less chance to change their mind. Delivering quickly also gives you more time to make decisions: if you deliver in less than a week, then you have up until that delivery date to make last minute changes. So the key here is to reduce the time it takes to get from one end of the cycle process to the other: this will mean a steady rate of arrival and certainty; and understanding which processes will take longer than others.

Decide as late as possible

You can’t predict the future… so try and maintain flexibility until absolute certainty is established. This should be the last possible responsible moment: the moment at which failing to make a decision would lead to other problems.

To do this you need to develop a clear sense of when decisions should be made; and know what is critically important for your software. Try and use feedback and real time information to help drive your decision making process.

See the whole

Remember that a system is not just the sum of its parts: it is actually a product of a series of interactions. It’s vital to address the root cause of problems rather than just the symptoms. It’s also important not to focus on individual performance metrics: and to instead only measure what needs to be measured.

So what is Agile software development?

Agile is basically a name that has been given to these software development processes that focus on adaptive planning; flexibility; continuous improvement; and evolution during development.

In other words, it is incorporating the lean software development processes into a larger picture with a clear manifesto and practises in place.

Is lean software development right for your business?

In short, lean software development is about common sense. It means being flexible, thoughtful and up-to-date: basing decisions on consumer feedback and real-time information while eliminating anything that’s unnecessary and that could cost your business money without producing any direct results. In this regard, going “lean” has benefits for almost any business: it’s just about applying them to your individual needs.

Originally Published: