Say you’re brought in to lead an engineering team that owns multiple software development projects. The mandate is clear: bring focus, increase velocity, and elevate delivery quality.
Sounds simple—but where do you begin?
Step 1: Understand the Landscape
The modern software organization is rarely starting from zero. Chances are:
Agile practices are already in place.
Scrum ceremonies are humming along.
Each project has its own JIRA board and backlog.
CI/CD pipelines are running (mostly).
So why does it still feel… chaotic?
That’s because what you’ve walked into is not just a process problem—it’s a system flow problem.
Step 2: Ask 3 Key Questions
Before introducing new tools or frameworks, I always start by answering three deceptively simple questions:
Where is the work piling up?
Where is delivery falling short of customer expectations?
If I could hire a few people, which project would benefit the most?
These are not hypothetical. They’re diagnostic.
Large backlogs and mounting WIP will answer Question 1.
Velocity and rework metrics will answer Question 2.
Postponed launches and fire drills will help with Question 3.
Once you have these answers, you can prioritize attention. Not all projects are equal—some need triage, others just need space.
Step 3: Identify the Bottleneck
Now comes the real work: finding the constraint in your delivery pipeline.
In my experience, the usual suspects are:
Unclear requirements
Code review delays
QA overwhelmed
Flaky CI/CD pipelines
Manual release steps
Decision latency from stakeholders
Let’s say QA is your bottleneck. Then QA becomes sacred ground.
You protect their time:
Fewer meetings.
No surprise asks.
Automate wherever possible.
Remove distractions.
You optimize the team around the constraint—not the other way around.
Step 4: Subordinate Everything Else
Here’s where most organizations struggle.
If QA is overloaded, you reduce the flow of work toward QA. It’s counterintuitive. Most teams think faster dev work helps—when in reality it floods the bottleneck.
You re-prioritize sprint work to align with the constraint’s capacity. You shift Dev focus to tech debt or test coverage if QA is blocked. You avoid optimizing locally and start managing globally.
Step 5: Elevate—Only When Needed
Once you’ve squeezed out inefficiencies, then—and only then—do you invest.
This could mean:
Hiring more testers
Enabling Devs to take on more testing
Building internal tooling
Redefining ownership boundaries (e.g., Developers own functional testing, QA focuses on regression)
Remember: throwing people or tools at a problem before optimizing flow only makes the system more complex.
♻️ Step 6: Rinse and Repeat
Once the bottleneck shifts, go back to the 3 questions:
Where is work piling up now?
Where are we not meeting expectations?
Where would more capacity help most?
This is not a one-time fix—it’s a continuous loop. And it works.
🎯 Re-purpose the Ceremonies
Most teams go through Agile ceremonies. But TOC gives those ceremonies purpose.
Use Retrospectives to spot constraints.
Use Sprint Planning to prioritize constraint-related work first.
Use Daily Standups to highlight flow, not just activity.
Let your rituals serve the flow—not the other way around.
📣 Don’t Forget to Communicate
As a leader, your job is not just to fix—it’s to narrate.
If you quietly shift the system and things improve, some leaders will say, “Why did you change things? It was working fine.” Worse, they might assume you were resisting change.
So, tell the story. Share what you found. Explain your reasoning. Point to results. Bring others into the why—not just the what.
A Nod to Goldratt
These ideas aren’t new. They’re inspired by Eliyahu Goldratt’s classic book, The Goal. In it, a factory manager saves his plant not by working harder—but by identifying and relieving constraints.
The same thinking applies beautifully to software teams.
In most orgs, teams are measured in silos:
Devs track velocity.
QA tracks test coverage.
Product tracks burnup charts.
But none of that tells you whether the system is flowing.
And that’s our job—to zoom out. To spot where the system is stuck. To get it moving again.
Final Thought
At the end of the day, success is not about doing more.
It’s about doing the right things, at the right time, with the right team.
That’s what leads to faster delivery, and long-term adoption.
If this resonates, or you’ve wrangled with your own governance challenges, I’d love to hear how you handled it. Reply or share—let’s keep the conversation going.