AI Tooling and the Separation Between Coders and Programming
The rise of AI-assisted development tools has accelerated a trend that predates them by decades: the separation between writing code and building systems. This separation is not new, but AI tooling makes it more visible and, in some contexts, more problematic.
The Metrics Problem
Software organisations have long struggled to measure engineering productivity. The solutions they adopted often optimised for the wrong things:
- Lines of code written (CLOC)
- Number of pull requests merged
- Velocity of feature delivery
- Sprint points completed
These metrics reward output. They count what is produced rather than what is enabled. An engineer who ships ten features in isolation scores higher than one who builds a foundation that allows twenty features to emerge naturally.
AI tooling amplifies this pattern. It makes writing code faster, but it does not make understanding systems easier. A developer using Copilot or Cursor can generate a working function in seconds. The code runs, the tests pass, the feature ships. But the underlying architecture may not support the next ten features, or the next hundred.
Two Pace Curves
Engineering teams tend to follow one of two trajectories:
Logarithmic pace: Fast initial progress, slowing returns over time. Features ship quickly at first, but each new addition requires navigating accumulated complexity. Technical debt compounds. Refactoring becomes expensive. The codebase resists change.
Exponential pace: Slower initial progress, accelerating returns over time. Early investment goes into structure, patterns, and foundations. Later features build on these foundations. The codebase adapts to new requirements without fundamental rewrites.
The logarithmic path optimises for immediate delivery. The exponential path optimises for sustained capability.
What AI Tooling Changes
AI-assisted development makes it easier to operate in the logarithmic mode. You can generate code faster than you can understand its implications. You can ship features before you have internalised the patterns they should follow. The gap between “it works” and “it fits” widens.
AI tooling makes syntax cheaper, but it does not make systems clearer. It cannot tell you whether your database schema will scale, or whether your API design will support future use cases, or whether your abstractions are appropriate. If the goal is to ship code, AI tooling helps you ship more code. If the goal is to build systems, AI tooling can still help, but only if you know what system you are building.
The separation emerges here: coders produce syntax, engineers produce systems.
Evidence in Practice
Consider two hypothetical projects, both starting with similar requirements and teams:
Project A adopts AI tooling and focuses on shipping features. Velocity is high initially. The backlog shrinks. Stakeholders see progress. Six months in, new features take longer to deliver. Bugs emerge in unexpected places. Engineers spend more time navigating existing code than writing new code. Refactoring is discussed but never prioritised because it does not ship features.
Project B also adopts AI tooling but invests early in structure. Velocity appears lower initially. The team debates abstractions, patterns, and boundaries. Three months in, the foundation is solid. Six months in, features that would have taken weeks now take days. Twelve months in, capabilities that were not in the original roadmap become trivial to implement.
What This Means
AI tooling will not reverse this pattern. If anything, it makes the choice more explicit. You can generate code faster, which means you reach the limits of a poor architecture faster. You can ship features more quickly, which means you accumulate debt more quickly. Or you can use the time savings to invest in structure, which means you reach capabilities faster.
The question is not whether to use AI tooling, but what you are optimising for when you use it. If the goal is to write more code, AI tooling delivers. If the goal is to build systems that enable compounding returns, AI tooling can help, but only if the engineering culture prioritises architecture over output.
The separation between coders and programming is real. AI tooling makes it more visible. What organisations do with that visibility will determine whether they build at logarithmic or exponential pace.