What I think a team needs before adopting an AI coding tool

A small flock of sheep grazing on an alpine meadow below a Dolomite ridge

I think an AI coding tool multiplies whatever a team already has. A team with tests it trusts and review that reads the diff gets more of that. A team without them gets more code and the same amount of confidence, which is a worse position than it started in. So when the question of adopting one comes up, I think the first question is not which tool but whether the team is ready for any of them. Here is what I would want in place.

Tests worth trusting

The tool will produce code faster than anyone can read it. The only thing that scales with that is a test suite the team actually believes. Not coverage, belief: when it is green, people merge without a second look, and when it is red, people stop. If the suite is flaky or thin, the tool's output has no safety net, and every change is reviewed by eye or not at all.

Review that reads the change

Every tool I have seen writes a confident description of what it did. I think that is where review goes wrong first. A reviewer who reads the description and skims the diff is reviewing the tool's account of the change, not the change. The habit of reading the diff, asking what it does rather than what it says it does, has to exist before the tool arrives, because the tool makes the description more persuasive and the diff longer.

A definition of done

When the cost of producing code drops, the question of when to stop gets harder. I think a team needs a working definition of done that is more specific than "it works": tests for the behavior, a note on what was not done, a review by someone who knows the area. Without it, the tool fills the available time with more code, and more code is not more progress.

A codebase that explains itself

A tool reads the repository the way a new hire does, without the hallway. Conventions that live in people's heads are invisible to it. Linting and formatting that run automatically, a short file at the root describing how the project is laid out and how it is tested, consistent names: these are the things that make a tool's output look like the rest of the codebase instead of a visitor's. A team that has never written those down will spend its trial period discovering why the tool keeps doing things differently.

Someone who owns the trial

The last thing is a person. One person who can say what the trial is for, which tasks it covers, how it will be judged, and when it ends. Without that, a trial becomes a permanent experiment, a tool half the team uses in different ways, with no one able to say whether it helped. I think most adoption failures I have heard about were trials nobody owned.

Why the order matters

None of this is specific to AI. Tests, review, done, documentation, ownership are things a healthy team wants anyway. The tool just raises the price of not having them. That is why I think the readiness question comes first. A team that uses the adoption conversation as a reason to put these things in place gets a benefit whatever it decides about the tool. A team that skips them gets a faster version of the problems it already had.

Photo source: https://photos.robertstowe.com/dolomites