How to Break Silos, Ship Faster, and Reclaim Engineering Joy
In many corporate cultures, "slack time" is treated as an existential sin. Managers obsess over ensuring every developer is utilized. If a backend developer finishes their tasks early, they are immediately assigned another ticket. If a QA engineer has downtime while waiting for a build, they are given manual regression scripts to run.
This philosophy—maximizing resource utilization—makes intuitive sense to someone managing a factory floor. But software engineering is not a factory floor. It is not a manufacturing line of physical, predictable goods; it is a creative network of highly variable cognitive work.
Optimizing an organization for resource utilization systematically destroys flow efficiency—the percentage of time a feature actually spends being worked on, as opposed to waiting in line.
To visualize this, think of a local highway.
When highway utilization is , cars can move at the maximum speed limit. If one car changes lanes or taps its brakes, the system absorbs the variation. Flow efficiency is high.
When highway utilization reaches , traffic slows to a crawl. The slightest variation—a minor lane merge—creates a cascading shockwave of brake lights that travels miles backward.
When highway utilization is , the highway is perfectly "utilized." Every square foot of asphalt is covered by a vehicle. But the speed is . You have built a parking lot. No value is being delivered to anyone.
In siloed organizations, software delivery functions exactly like a utilized highway. Because every engineer is fully booked, there is zero buffer capacity. When a frontend developer needs a minor backend change to unblock their task, they cannot get it immediately. The backend developers are booked with their own sprint commitments. The request is placed in a backlog—a queue—where it sits idle, waiting for capacity to free up.
By maximizing resource utilization, we minimize delivery speed.
The highway isn't just an analogy. Queueing theory gives us the exact math. Kingman's Formula (specifically Kingman's approximation for average waiting time in a single-server queue) shows why:
Where:
is the average waiting time (queue delay).
is the resource utilization level ().
is the coefficient of variation for arrivals (how unpredictably work arrives).
is the coefficient of variation for service times (how unpredictable the work is to complete).
is the average service time (how long it takes to actually write the code).
Source: Donald G. Reinertsen, The Principles of Product Development Flow (2009)
Look closely at the first term of this equation: . This is a non-linear relationship.
If we plot the average waiting time () against utilization (), the curve is relatively flat until it crosses the mark. Beyond , the curve bends sharply upward. At utilization, the waiting time explodes. At , it approaches infinity.
In software delivery, variation ( and ) is naturally high. We rarely build the exact same feature twice, meaning we cannot precisely predict how long a task will take or when unexpected bugs will arrive.
📋 What this means: When utilization exceeds 80%, waiting time grows exponentially. The more unpredictable your work, the worse it gets.
Because our variation is high, Kingman's formula dictates that any organization operating near resource utilization will experience massive, systemic queue delays. If a feature has to traverse four different horizontal teams, and each of those teams is operating at utilization, the feature will spend over of its lifecycle waiting in queues.
Vertical feature teams solve this math problem. By bringing all necessary disciplines into a single pod, we drastically reduce the number of handoffs. When you eliminate the handoffs, you eliminate the queues, shifting your delivery speed back down to the flat, fast end of the Kingman curve.




No comments:
Post a Comment