What’s the biggest waste in software development?
It’s pretty easy to come up with many different answers to this question – defects, technical debt, project overruns, projects cancellations – even company failures. There is so much waste in software development it’s hard to know where to start!
According to Mary Poppendieck, thought leader in Lean Software Development, the answer is simple: the biggest waste in software development is building the wrong thing!
Similarly, when Steve Jobs returned to Apple in 1997, he famously said, “focusing is about saying no”. By ruthlessly cutting the product range, Apple’s talent was then free to work on products like the iPod, a device with a brilliantly simple user interface, with no wasted features.
I’d like to combine Mary and Steve’s ideas and say that we can help build the right thing by saying no. By cutting wasted time, effort, energy, and money, we can channel our resources to produce the best we are capable of.
Here are 5 ways it can be done:
1. Say No to New Feature Waste
New feature waste includes new features that don’t give enough value to justify their cost.
The Agile methodology helps us here. By breaking work down into stories, and by engaging product owners and prioritising stories, our team should be working on the most valuable thing possible at any point in time.
Every time we de-prioritise or de-scope a story, or a whole project for that matter, we make a conscious decision not to do something right now. This allows us to focus our immediate efforts on the work that add the most value.
2. Say No to Legacy Feature Waste
It’s not enough just to look at new features – we should also review products and features we already have.
According to Mary Poppendieck, 64% of software features are never or rarely used. Unused features add overhead to new development work via increased system complexity and additional testing.
I have a rule that if I haven’t used a piece of clothing in over a year, I donate it to charity; perhaps if a feature also hasn’t been used for a similar length of time, it too can be shown the door.
3. Say No to Frilled Waste
Frilled waste is waste due to developing more than was required, by adding bells and whistles, or over-engineering the solution.
We should only implement the minimum to satisfy the requirement.
This can be counter-intuitive. Naturally, we should aim to product quality solutions, and minimise technical debt. But if we go over-the-top in what we deliver, we are probably diverting our resources from higher priority stories, whilst possibly adding complexity.
4. Say No to Automated Test Waste
Automated tests can add huge value to the team and greatly enhance quality. But every test comes at a development and maintenance cost, so we need to be careful to ensure that each test adds value relative to its cost.
We should review our test suite continually to ensure the tests still add value, they are correct, and are free of duplication. Keeping redundant automated test code adds complexity, maintenance and execution time.
5. Say No to Fluffy Waste
The “just say no” concept can be extended to almost any part of the software development process. Think about your daily work, such as emails and meetings. Is that meeting or email completely necessary? What are the alternatives, or how could it be rationalised to provide the most “bang for buck”?
Our work should be a continual process of asking ourselves why are we doing this? Because it’s what we choose not to do that cuts through, simplifies and allows us to focus on what makes us and our software successful.