Skip to content
All Posts
Agile & Process

Lean Thinking in Software Delivery

21 January 20252 min read

Before I became a project manager, I spent years at Robert Bosch — a company that breathes lean manufacturing. That experience fundamentally shaped how I think about software delivery. Most of my peers came to project management through computer science. I came through process engineering. It gives me a different lens.

The Seven Wastes, Reimagined

Lean identifies seven types of waste. In software, they show up differently but just as destructively. Overproduction is building features nobody asked for. Waiting is engineers blocked on code reviews or environment access. Transportation is handoffs between teams with no shared context. Over-processing is gold-plating a feature when the MVP would suffice.

When I onboard a new team, the first thing I do is map their value stream. I trace a feature from idea to production and mark every point where work sits idle. The results are always eye-opening. Most teams discover that actual development time is less than 30 percent of the total cycle time. The rest is waiting.

Flow Over Utilization

Here is the most counterintuitive lean principle: optimizing for utilization makes you slower. When every engineer is at 100 percent capacity, there is no slack in the system. Any interruption — a production incident, an urgent client request — cascades through the entire plan.

I target 80 percent utilization deliberately. That 20 percent buffer is not waste. It is what allows the system to absorb variability without breaking commitments.

Practical Application

In my current programs, I run a monthly waste audit. The team identifies the top three sources of delay and we design countermeasures. Last quarter, we found that environment provisioning was our biggest bottleneck. We automated it. Cycle time dropped by two days.

Lean is not a framework you adopt. It is a way of seeing. Once you learn to spot waste, you cannot unsee it. And in software delivery, there is waste everywhere — hiding in process, in handoffs, in meetings that could have been async updates.


Back to all posts