Lean thinking came from manufacturing, but its central question translates directly to software: how much of the work we do actually creates value, and how much is waste? If your team is working hard without making progress, one or more of the eight classic wastes is usually the reason.
The eight wastes
1. Partially done work. Code started but not finished, half-written features, incomplete documentation. Work in progress is inventory — it costs attention and delivers nothing. Finish tasks before starting new ones.
2. Extra features. Building what nobody asked for — over-engineering instead of shipping "good enough", implementing features without user feedback. YAGNI exists for a reason. Validate features with users and stick to the requirements.
3. Relearning. Rediscovering how a tool works, re-deriving decisions nobody wrote down, losing time to unclear processes. This is the tax on poor documentation and knowledge sharing — pay it down by documenting and sharing within the team.
4. Task switching. Every context switch costs focus, increases error rates and stretches completion times. Prioritise, set work-in-progress limits, and let people finish one thing at a time.
5. Waiting. Approvals, missing information, blocked dependencies. Waiting kills momentum and morale long before it kills schedules. Streamline processes and reduce dependencies.
6. Handoffs. Every handoff loses information; enough of them turn a project into a game of telephone, with rework and delays as the side effects. Cross-functional teams and direct communication minimise the losses.
7. Defects. Bugs and crashes are the most visible waste, and they compound as technical debt. The later a defect is found, the more it costs. A quality-first mindset and automated testing catch them early.
8. Management activities. Excessive meetings, reporting for reporting's sake, micromanagement that strips team autonomy. Some coordination is necessary; much of it is overhead. Streamline it and empower teams to decide.
Tackling them
The countermeasures reinforce each other: manage work incrementally, automate build-test-deploy so defects surface early, encourage collaboration and pairing to reduce handoffs and relearning, make waste visible with value-stream mapping or a Kanban board, and relentlessly prioritise work that adds value for the user.
None of this is exotic. That is rather the point — most teams don't need a new methodology; they need to stop leaking effort in eight well-documented places.
