I have been writing for AgileSoftwareDevelopment.com for nearly 6 months now and was quite shocked to see how many folks read last week's blog post. I can only assume from the response that there is a lot of interest in Lean. Which in my opinion is a really good thing as we can learn tremendous lessons from this philosophy. I wish I knew about Lean earlier in my career - I think it could have made the world of difference. Lean offers such practical advice on what to look for in order to make the process better. I think just knowing about these aspects of lean will help you day to day, help you make better decisions, make you a more effective player on a software development team.
Last week I covered the first manufacturing waste In- Process Inventory corresponding to partially done work in software development.
This week I will discuss the 2nd Waste:
Over - Production
Over production in manufacturing amounts to production of goods that are not required or consumed immediately by a customer. This is very costly in a manufacturing plant. Inventory can become stale, superceded, damaged etc.
In the software world, over-production is the same as excess features, features not really needed by customers. My understanding is that there is evidence to backup the fact that over 60% of features in software are ever used.
The reason for excess features in software development is a direct result of traditional waterfall methods. Product managers got one shot to get all the requirements out a the beginning of the 18 month project. So we forced them to think of absolutely everything. As a result more huge amounts of time and energy went into developing software that would never actually get used.
So why is it wasteful?
Well firstly, there's the direct costs of development but there's all the indirect costs like adding complexity to the codebase, introducing unnecessary bugs, contributing to sluggish performance of the application and the list goes on.
What I love about Scrum is that it's designed to focus the organization on delivering just the most important things, just-in-time. So I'd argue that Scrum really helps mitigate the risk of over-production.
Sum it up
Be mindful of this waste, keep it at the back of your mind at all times, ask yourself "is this really necessary?"
A lean codebase is an agile codebase. It gives the product owner and stakeholders options - options to change direction at a moments notice, to respond to market conditions to be more strategic.
Next week I'll cover the 3rd waste - Extra Processing