Eliminating Waste is the first Lean Development Principle. In Lean Software Development, anything that does not add value to the customer is considered to be waste. According to traditional Lean Manufacturing, there are seven wastes: transportation, inventory, motion, waiting, overproduction, over-processing, and defects. The website, codepunk.io defined seven wastes of software development which is a great adaptation of these seven applied to software development:
- Partially done work: This is what it is… work that is only partially done. Software development waste.
- Extra features: Bloat, unneeded code complexity, useless features. Software development waste.
- Relearning: Solving hard problems and not documenting them. Recoding hard problems repeatedly. Software development waste.
- Handoffs: More people, more communication, more problems. Software development waste.
- Context Switching: AKA… multitasking. Don’t spread developers across projects. It’s expensive mentally and financially. Software development waste.
- Delays: Delays in review, delays in handoffs, delays in feedback. Software development waste.
- Defects: Bugs. Extra work at bad times. Software development waste.
Sidebar: Why did we repeat the term “software development waste” seven times? Because we’re trying to get search engines to find us in Atlanta. But we digress…
Waste in the Real World
Because knowing is half the battle, it’s worth taking a look at some other wastes. Specifically, the kinds of wastes that we can all relate to. The kind of wastes that are hiding in plain sight. Things like…
- Agenda-less meetings, meetings with the wrong people, being late to meetings (you’re being inconsiderate and wasting everyone else’s time), meetings about meetings, meetings where the action items are more meetings, redundant meetings.
- Allowing software tooling (things like JIRA, Trello, etc.) to slow down teams. Sometimes teams don’t easily grasp these tools, especially if they lack experience. This software is great… no denying… but it’s okay to delay usage of it if teams need better training or if it’s just getting in the way.
- Creating “digital litter” – Overly-abundant documentation, preparing presentations that never gets presented or presenting to the wrong audience (see the first bullet).
- Conflating “doing email” with “doing work”. To those of you sitting behind Microsoft Outlook all day, emailing the days away… you’re possibly wasting your own time by assuming that everyone else is reading your messages. Believe it or not, some people like to do “work, work” <- that’s not necessarily email.
- Spending time griping and commiserating without being solution-minded.
- Typing out status reports when you could be using a tool like JIRA to present a status dashboard that is just always up-to-date.
- Staffing too many people to a project because you think you just need people. Staffing people to too many things.
So, it’s great that we know what the wastes are. But the next step is eliminating it. It’s one thing to talk about it but it’s another thing to do it. We’ve learned that the best first step to take is to simply raise awareness. As a leader in an organization, you can take a few initial proactive steps:
- Take time to identify specific practices you see are wasteful in your organization or department. Document these.
- Identify the culprits – is it certain individuals? Pockets of people? A problem with a process? Document your findings.
- Draft solutions
- Talk to your team about the importance of eliminating waste. Share your findings with them. Share your solutions.
- Cultivate a culture that proactively eliminates waste.