All Posts
· 8 min read

Agency Engineering Leadership Changed When AI Got Good

I run engineering at a small agency. That means I’m the tech lead, the primary hands-on engineer, the architect, the code reviewer, and the person who decides when we ship. Across 30+ client engagements, the constraint has always been the same: more work than people, every project on a fixed timeline, every client expecting the quality of a team twice our size.

AI changed that equation. Not in the way most people talk about, where you sprinkle Copilot on your workflow and save 20 minutes a day. It changed which decisions actually matter as an engineering leader, what I spend my time on, and how I think about project planning entirely.

The old bottleneck was hands on keyboards

Before AI tooling got serious, agency engineering leadership was fundamentally about allocation. You have N engineers and M projects. Every week is a puzzle: who works on what, what can be parallelized, what blocks what. The limiting factor was always implementation bandwidth. We could plan faster than we could build.

The typical agency failure mode was predictable. Scope creep eats the timeline. The engineer context-switches between three clients. Code quality drops. Bugs ship. The client loses trust. You throw hours at it to recover. Margins evaporate.

Every process I built was designed to fight that failure mode. CI/CD pipelines to catch bugs before they hit production. Code review standards to maintain quality under pressure. Automated testing to give us confidence when moving fast. These worked. Deployment errors dropped about 25%. Production bugs dropped about 40%. But the fundamental constraint, implementation bandwidth, didn’t change. We just got more reliable within the same capacity.

AI shifted the bottleneck to decisions

Now the limiting factor isn’t writing code. It’s deciding what to write, reviewing what was written, and making the architectural calls that an AI agent can’t make on its own.

On a typical client project today, here’s what my day looks like versus two years ago:

Before: 60% writing code, 20% architecture and planning, 10% code review, 10% client communication.

Now: 20% writing code (the parts that need human judgment), 30% reviewing AI-generated code, 25% architecture and system design, 15% writing specs and prompts, 10% client communication.

The total output is higher. Significantly higher. But the nature of my work shifted from production to direction. I spend more time writing detailed specs, because the quality of the spec directly determines the quality of the AI output. A vague spec produces vague code. A spec that nails the edge cases, the data model, the error handling, that produces code I’d ship.

This is a leadership lesson disguised as a tooling shift. The better your AI tools get, the more your value concentrates in the decisions that surround the code rather than the code itself.

Specs became the actual product

At an agency, the spec has always been important. But it used to be a communication artifact, something you wrote so the team was aligned, then deviated from as reality hit. The code was the product.

With AI agents doing significant implementation work, the spec is the product. The quality of the spec determines the quality of the output more than anything else. I now spend more time on a project spec than I used to spend on initial scaffolding.

A good AI-ready spec looks different from a traditional one:

This changed how I think about project planning. I front-load more time into the design phase because every hour spent on a precise spec saves three hours of reviewing and correcting AI output.

Code review is the new bottleneck

Here’s the uncomfortable truth: AI can generate code faster than you can review it. If you’re not careful, you end up rubber-stamping AI output because the volume is too high, and then you’re shipping code nobody actually understood.

I’ve developed a triage system for reviewing AI-generated code:

Always review carefully: Authentication and authorization logic, data mutations, payment flows, anything touching user data. The cost of a bug here is existential for client trust.

Review for correctness: Business logic, API endpoints, data transformations. Scan for logical errors, missing edge cases, incorrect assumptions about the data model.

Spot check: Styling, component structure, boilerplate setup. If the patterns are established and the AI is following them, a quick scan is enough.

Trust but verify: Test output. If the tests pass and cover the important paths, the implementation is probably fine. But verify the tests themselves are actually testing the right things, not just asserting that the function returns what it returns.

This triage is something I’m still refining. The risk of AI-accelerated development isn’t that the code is bad. It’s that the review process doesn’t keep pace with the generation speed. You need discipline to slow down at the review stage even when everything else is moving faster.

The compounding advantage: standards and automation

The investments that used to take weeks to pay off now compound immediately. CI/CD pipelines, linting rules, test coverage requirements, deployment automation. These always mattered, but they mattered over the long arc of a project.

With AI in the loop, they matter on day one. An AI agent that runs npm run build after every change and fixes its own errors is leveraging your CI pipeline in real time. Test suites that catch regressions aren’t just safety nets for humans anymore. They’re feedback loops for agents.

Every standard you set, every guardrail you automate, directly improves AI output quality. This flips the ROI calculation on engineering infrastructure. Setting up comprehensive linting used to feel like overhead on a two-week agency sprint. Now it’s one of the highest-leverage things you can do, because it shapes every line of AI-generated code for the duration of the project.

Client conversations changed

Clients don’t care about your internal tooling. They care about timelines, quality, and cost. But AI changed all three in ways that affect the conversation.

Timelines compressed. Things that used to take a week take two or three days. This is great, but it creates a new expectation management challenge. If the client sees you delivering at 2x speed, they start expecting 2x speed on everything, including the parts that can’t be accelerated (design reviews, stakeholder alignment, third-party API integrations).

Scope conversations shifted. “That’s a two-week feature” used to end the scope discussion. Now the honest answer might be “that’s two days of implementation but a week of design and review.” The implementation isn’t the hard part anymore. Explaining that to a client who sees fast delivery and wants more of it requires a different conversation.

Quality arguments got easier. When I can show a client that we have automated testing, CI/CD, and structured code review on AI-generated code, the quality story is concrete. It’s harder for scope creep to erode quality when the guardrails are automated.

What I got wrong early on

Overestimating AI on greenfield, underestimating it on established codebases. I assumed AI would be best at starting from scratch. In practice, it’s better at working within established patterns. Once you have a component structure, a data model, and a test pattern, the AI replicates it reliably. The greenfield phase, where architectural decisions dominate, still needs heavy human involvement.

Trying to AI-accelerate everything at once. Not every part of agency work benefits equally. Client communication, architecture decisions, and design reviews are still fully human. I wasted time trying to use AI for meeting notes and status updates before realizing the bottleneck had already moved. Focus the acceleration on the actual bottleneck: implementation and testing.

Not investing enough in prompt engineering early. I treated prompts and specs as throwaway artifacts for the first few months. Once I started versioning specs, building up a library of project-specific context documents, and writing specs with the same rigor as code, output quality jumped noticeably. The spec library is now one of the most valuable assets in our workflow.

The leadership question

The real question isn’t “how do I use AI to ship faster?” It’s “what does engineering leadership mean when implementation is cheap?”

My answer, after a year of working this way: leadership becomes almost entirely about judgment. Which features matter. How the system should be architected. What tradeoffs are acceptable. Where to invest in quality and where to move fast. When to trust the AI output and when to rewrite it.

These were always part of the job. But they were diluted by the sheer volume of implementation work. When you spend 60% of your day writing code, you have limited bandwidth for strategic thinking. When implementation is handled, you have no excuse not to think carefully about direction.

For agency engineering specifically, this is a meaningful shift. The agencies that will win aren’t the ones with the most engineers. They’re the ones whose engineers make the best decisions, write the best specs, and build the best guardrails. The implementation will take care of itself.