$ cd ../blog

AI Has Created a New Software Engineering Problem We Didn't Have Before

·5 min read

As more teams adopt AI-assisted development, I've noticed an emerging challenge — one that didn't really exist a few years ago.

Traditionally, when multiple developers worked on the same project, differences in coding style came from individual preferences and experience. One person loved early returns, another built class hierarchies. Code review and team conventions smoothed most of it out. Today there's a new variable in the mix, and it's a bigger one:

Each developer is working with a different AI context.

A thousand valid solutions, zero consistent ones

Watch how a feature actually evolves on an AI-assisted team:

  • One developer asks AI to build a feature. The model, seeing the files in its context window, picks a reasonable pattern.
  • Another developer later asks AI to fix a bug in it. Different conversation, different context, different pattern — the fix works, but it introduces a second way of doing the same thing.
  • A third developer asks AI to optimize performance. The model refactors toward whatever it considers idiomatic, which matches neither of the first two approaches.

Every interaction produced a valid solution. None of them produced a consistent one. And this repeats hundreds of times a month, across every developer and every conversation.

Over time, the project accumulates: multiple patterns solving the same problem, different architectural approaches in different modules, duplicate business logic, inconsistent abstractions, and code that works individually but lacks any unified design. It's like a book where every chapter was written by a talented author who never read the other chapters.

The problem isn't code quality

I want to be precise about the diagnosis, because it's easy to get wrong. The challenge isn't the quality of AI-generated code — modern models write genuinely good code. The challenge is maintaining a shared engineering vision across hundreds or thousands of AI-assisted decisions made by different people in different conversations with different context.

Human teams solved this the slow way: shared history. You absorbed the team's patterns through code review arguments, hallway conversations, and years of accumulated instinct. AI has none of that. Every conversation starts from zero — a brilliant contractor showing up to every shift with amnesia.

Architecture documents are becoming more valuable, not less

This leads somewhere counterintuitive. You'd think that as AI takes over more of the writing, documentation would matter less. The opposite is true. In an AI-first development world, I now believe every serious project needs:

  • Architecture Decision Records (ADRs) — short documents capturing what was decided, what was rejected, and why. They anchor every future conversation, human or AI, in the same reality.
  • Coding standards and conventions — written down, not folklore. "We use this error-handling pattern, this naming scheme, this test structure."
  • Folder structure guidelines — where things live and why, so new code lands in the right place instead of a new place.
  • Domain boundaries and responsibilities — which module owns which concept, so business logic stops duplicating across layers.
  • AI instructions and project rules stored in the repository — CLAUDE.md, cursor rules, whatever your tooling reads. This is the piece most teams still miss.

Think of all of it as shared memory for both humans and AI.

The repository is the only context that scales

Here's the practical insight that changed how I set up projects: the repository itself is the only channel that reaches every AI conversation on the team. You can't rely on developers pasting the right context into every prompt — they won't, and they shouldn't have to. But rules that live in the repo travel automatically. Every tool reads them. Every conversation inherits them. Every generation starts anchored instead of adrift.

Without that shared memory, every AI interaction becomes a fresh interpretation of your project — a new guess at your patterns, your boundaries, your intent. With it, AI becomes an extension of the engineering team rather than a source of architectural drift.

The difference compounds. A team whose conventions are machine-readable gets more consistent as AI usage grows, because the same rules govern every generation. A team without them gets less consistent with every prompt.

There's a pleasant side effect, too: everything you write down for the AI is exactly what a new human hire needs on day one. The projects I've seen with the best AI rules files are also the easiest to onboard into, and that's not a coincidence — both audiences need the same thing, which is the project's intent made explicit. We spent years knowing we should write this stuff down. The AI finally gave us a reason that pays off the same week.

Start smaller than you think

If this sounds like heavyweight process, it isn't. The version that works:

  • An ADR is ten sentences in a markdown file. Decision, context, alternatives rejected, consequences. Write one per significant choice.
  • The AI rules file starts as a page: key patterns, forbidden approaches, where things go.
  • Update them when reality changes — stale rules are worse than no rules, because they're followed confidently.

An afternoon of writing, maintained with light discipline. Against that, weigh the cost of the alternative: months of accumulated drift, and the slow-motion realization that your codebase has five architectures and no architect.

The future challenge isn't getting AI to write code. That's solved. It's getting AI to write code that remains consistent with the rest of the system — and that's not a model problem. It's a memory problem, and we already know how to fix it.