5 min read

Forty Years of Revolutions

I’ve been writing software for money since 1983, and five or six times now I’ve been told the job was about to change forever.

4GLs were going to let you describe what you wanted and skip the code. They gave us some genuinely good report writers. The first time you needed something the language hadn’t anticipated, you were worse off than if you’d written it plainly to begin with.

CASE tools were going to generate the system from the diagrams. What they generated was documentation, and the documentation drifted from the code inside of a month.

Visual builders were going to make it drag and drop. They were quick through the first eighty percent, and the last twenty took longer than the whole thing would have taken by hand. Anyone who worked through that decade can still feel it.

Offshore was going to get the same work done for a fraction of the cost. It got real work done. But what you saved on the rate you spent on specification, coordination, and rework, and if you couldn’t write a clear specification you didn’t save anything at all. Even when it went well, you were often left holding code that kind of worked and became a nightmare the day a different team inherited it.

Low-code was going to let the business build its own systems. It did. A lot of those systems are still running, and a fair number became unmaintainable the day the person who built them changed jobs.

Every one of those delivered something real. Every one was oversold in the same direction. They were sold as removing the need for somebody who understands the problem, and what they actually removed was typing.

So I expected AI coding assistants to be number six on that list. The pitch qualifies: same promise, same direction. The tool underneath it doesn’t.

What’s actually different

Every tool on the list above made you work inside its shape. A 4GL made you write 4GL. A visual builder made you build the way the builder built. The cliff at eighty percent was always the same cliff: the moment your problem stopped fitting the tool’s idea of a problem, you were on your own, and now you were on your own inside somebody else’s abstraction.

AI doesn’t have a shape of its own. It works inside mine. It writes Elixir the way my codebase writes Elixir, in my structure, using my style guide, against my names, and when it’s wrong I’m looking at ordinary code in a language I’ve been reading for years. There’s no cliff, because I never left my own project to get the help.

Then there’s the part that actually changed my day.

Building software has always been two kinds of work. There’s figuring out what the right answer is, and there’s the labor of expressing it: looking up syntax, wiring plumbing, reading the same documentation for the third time this year, writing the code that has to exist and was never interesting. For over forty years that split ran heavily toward the second, and the part I loved was the smaller one. It’s closer to reversed now.

I didn’t get faster at the part I’m good at. I get to spend more of the day doing it.

Where I still won’t put it

Not anywhere the same input has to produce the same output. RediDraft assembles estate planning documents, and the same answers have to produce the same instrument every time: this year, in ten years, on somebody else’s machine. That isn’t a preference. It’s the only behavior that belongs near a document a family will rely on after the person who signed it is gone. Something that’s right almost every time isn’t discounted. It’s disqualified.

Not with client material that isn’t mine to hand around. My clients’ code and data go where they’ve agreed they can go, and nowhere else.

And not for deciding whether to build at all, which is the interesting one.

A vendor who agrees with everything you say isn’t agreeing with you; they’re billing you. AI is the most agreeable collaborator I’ve ever worked with. It will help me build anything I ask for, including the things I shouldn’t, and it has never once told me an idea wasn’t worth the effort. So the one decision it can’t make for me is the one it makes easier to get wrong. The cost of building the wrong thing went down, and cheap is exactly the condition under which people build a lot of wrong things.

The limit worth saying out loud

It multiplies what you already know, which means it’s worth the most to the people who needed it least. I can read what it writes and tell you where it’s wrong, because I’ve been reading code since Reagan’s first term. Drop me into a domain I don’t know and I couldn’t tell its confident answers from its bad ones. Neither can anyone who’s been told this replaces experience. It doesn’t replace experience. It compounds it.

Forty-three years in, at the point where a lot of the people I started with have stopped, the job got more interesting. I didn’t expect that. I’ve been wrong about this kind of thing before, so ask me again next August.

Want more like this?

New posts land on the home page, newest first, and the RSS feed carries the full text of every one.