Debt and rust

I’m writing this in November 2026. What a long long year it has been so far, even for someone like me, fortunate enough to be employed and live outside of a war zone.

As many knowledge workers and most software developers nowadays, I’m grappling with the extreme inroads that AI has made into our daily work. Knowledge work has been hit by a tidal wave; there’s nothing to be gained by normalizing this.

This article centers on my current, pragmatic, short-term worries triggered by what’s going on with AI right now, in my working life and the working lives of those around me.

A couple of conclusions

In a couple of previous articles from this year, I 1) wondered whether LLMs could be a sort of new high-level language; 2) worried about quality and understandability when using LLMs to generate software.

After a few months, I am now convinced that, for a majority (but not the totality) of the software that is built on a daily basis, LLMs effectively represent a step further up the abstraction ladder. The models are getting really good at 1) understanding what you want; 2) implementing it in a reasonable way. Even for skilled programmers, let alone non-programmers that are now building software. This is already tectonic.

Even more tectonic is the fact that LLMs have gotten quite good at cleaning up after themselves, in terms of quality. Because they are very good at spotting bugs in general (and security vulnerabilities in particular), they can patch their own work to a point that’s good enough for most purposes. For every day software that’s not mission critical, LLMs can produce output that has good enough quality.

So that leaves untouched only my worry about software understandability. That’s the one that has grown unabated. But first, let me take a detour.

Claude Opus 5.5

For the past month I’ve been using Anthropic’s Claude Opus 5.5 on a daily basis, a model that is unfathomably good, in itself and compared to other models. No matter how deep my misgivings about AI are, the sheer power of the technology makes it impossible for me to either reject it or just give in to it.

I use opus 5.5 on three areas: 1) designing and implementing software; 2) discussing ideas; 3) personal/family logistics and web search.

On #2 and #3, opus is better than other models, but not in a way that feels like a break with the past. It is in software design, implementation and testing, where opus 5.5 is just a force of nature.

I am most impressed with how good the model is at finding issues in code I write or even sketch. A pass with opus is even more useful than actually running the tests, because the model already sees most of the pitfalls. Yes, many things it reports are unlikely corner cases, correct but marginally relevant. But it will also report all sorts of real problems, including many that I would have missed. Effectively, a good SOTA model, and opus 5.5 in particular, is a great debugging filter.

Second, I am impressed at how well it can suggest drafts for new functionality, in the form of diffs. I can ask for non-trivial features and I will get minimal diffs that match the style of the current codebase – usually not as one shots, but after 3-4 short iterations. And, almost always, with good ideas coming from opus itself.

Third, I’m impressed with how thorough it is in writing tests. Sometimes too thorough. This goes for both the tests that I have in the codebase, as well as ad-hoc testing of more infrastructure-related things (like testing changes to nginx config in a throwaway nginx running in a container it just created). The model is a tireless tester that will make sure the tricky thing to test actually works well. And, it usually one shots entire test suites, and most of the time, they pass the first time (a skill level that I’ve barely scratched myself when working by hand).

Finally, its background knowledge. It just knows so much about computing. When I’m working on unfamiliar territory (unix sockets, ssh connection reuse, difficult details of the browser’s security model, new browser APIs), the model just knows. I have access to options and decisions that I didn’t know were options and decisions. It’s stackoverflow on steroids.

I find myself having a harder time understanding opus 5.5 than other models. Its written style is indirect (is it the watermarking?) and harder to follow. It also makes me feel dumb sometimes, but that’s perhaps good for the ego.

For those who are still unconvinced if LLMs are any good at coding, use opus 5.5 for an afternoon and tell me what you think.

I am not sure if LLMs can create beautiful code, or code that changes the paradigm. But workaday code? Absolutely yes; whether it is personal software that’s quite limited in scope, or software in huge corporations, where you need to keep on piling up fixes and functionality onto codebases that are tens of millions of lines. For good or bad, most software is now being industrialized.

The two worries

We now have these magical artifacts that can either write code for us, or they can be amazing sparring partners and editors when we write code ourselves. What is there to be bummed about?

Two things, I’d say: cognitive debt and cognitive rust.

Cognitive debt is: how much of what you’re building you don’t understand?

Cognitive rust is: how is relying on a machine making your mental faculties decay?

Cognitive debt

Cognitive debt can be defined as that part of what you do which you don’t really understand. Most programmers, me included, incurred tons of cognitive debt before AI. Even when I was building webapps based on a minimalist JS set of libraries I wrote from scratch, I was still relying on tons of things I didn’t understand: the browser security model, how JS is interpreted, TCP/IP, OS system calls, and many other fundamental things that made it all possible. My knowledge of all of these, today, is remedial at best – back then it was laughably remedial. And this is just for the software part of it, never mind the hardware that powers it, or the physics underlying electronics.

Why wasn’t I bothered with cognitive debt before? My ample ignorance aside, I think it was because I trusted that those other things were done 1) reasonably; 2) by other humans who actually knew what they were doing. Now, that might not always be the case, even for technology that powers the web, but it’s a reasonable working assumption. Knowing it all in software, even if a genius and rabid minimalist, seems almost impossible; even if a few could achieve it, most of us couldn’t. Trusting the layers that sit below what we’re actually doing is a reasonable assumption. When you grow wiser, you can always verify some of these yourself and consider alternatives or mitigations for decisions you consider to be erroneous.

Using AI suddenly allows you to have vastly more cognitive debt. It allows non-programmers to build things that, 2-3 years ago, only programmers could do. It allows programmers to build more ambitious software in hours and days that would have taken them months or years to build. This massive leap in capability and speed is also a leap in cognitive debt. AI is decent at explaining what it’s doing, but you still need to understand it all, and the explanation might not be enough to properly get it, as when you do it yourself.

The questions, then, are: can we trust AI to do things that are generally reasonable? And are we OK with no human understanding a certain decision, and trusting AI to have “understood” whatever it was it did? Are we OK with not understanding and verifying everything that AI produces?

I think that, for most software, the answer will have to be yes. Not for all software, mind you. Probably not for the most crucial software, at least not yet. But, to a certain extent, in the same way we relied (and still rely) on other humans making decisions for us that we rely upon and not understand and haven’t verified, this will also happen with AI. It’s the logical extension of what we’ve been doing all along. Of course, alarm bells should go off in your head, because it’s no longer a human who we are trusting. We trust machines to move our bodies, to set hearts in tempo, and to execute decisions that have been encoded by humans. But it’s uncomfortable right now to have machines actually think through and design the execution of other computers. I don’t think this is merely conventionalism – it’s a major leap.

We’re still in an in-between phase where we still consider the codebase, not our prompts, to be the thing we carry around, so the analogy with LLMs being the new compilers is still faulty. We also inspect diffs, though growingly cursorily. We are probably setting ourselves for some spectacular failures in the short and middle term. But the trend is clear, at least for now.

Cognitive rust

I am also worried about cognitive rust, which is losing my mental skills and faculties of focus and critical thinking. With AI, I can produce more while thinking less. That doesn’t mean that the job got less demanding, or the output became better. But it does mean that the amount of output per unit of human mental effort just became much, much vaster.

Here I want to use an analogy with physical work. Before the industrial revolution, most of us had to break our backs in the fields and mines to make a living. Most physical work was done by humans. While a lot of it was actually body-destroying, most preindustrial humans didn’t have to worry about sedentarism, diabetes or obesity.

Over time, we are learning about how to stay in good physical shape in a world where most physical effort is automated. When I take a train to go to another city, I am not worried that my physical self is atrophying. Why is this?

Namely, I try to sleep well, eat well and work out almost every day. I am probably not as healthy or as mentally sharp as a hunter gatherer, but I can maintain myself in good health (knock on wood) with some good habits and about an hour a day. I am not required to dig with a plow or pull my own cart to do so. From my privileged vantage point, the industrial revolution automated most of my physical toil and only asks from me to put an hour of exercise a day to stay sharp.

Could this be also the case for this cognitive revolution? Will AI take most of the cognitive toil away? If it does so, I’m pretty sure we’ll need an equivalent of good sleep/nutrition/exercise for our brains. For a programmer, this is a challenging proposition. We used to stay sharp (or at least, we thought so) by writing code by hand, by thinking the data flows of a program in our heads. Now that, for most cases, that plow can be automated, how are we going to stay sharp? And can we be able, as a knowledge worker, to break the link between being mentally sharp, and actually producing knowledge work?

I’m surely exaggerating this, at least in the short term. Judicious use of AI requires being sharp and pay attention. But it takes a lot of vigilance, and I am having a hard time keeping the rust at bay. Perhaps working with computers is no longer enough to stay mentally fit (if it ever was).

Three articles to read

I want to close this structured rant with three articles that I found to be very interesting. Many of my ideas came from reading them. They also respond to some of my concerns, or outright dismiss them, which is great. I suggest reading them in full, but couldn’t resist putting a few quotes:

Fernando Borretti, The Education of a Doomer

“Then there’s the loss of human capital formation: there is nothing to learn. Prompting is not a skill, at least, it’s a much shallower skill than software engineering. The instrumental dimension of the work has improved in that people can get more output per unit of effort, but the dimension of work that’s about building up human capital has collapsed. And maybe this is rational. Why learn to code at all? The computers can do that for us. And so the rigorous, systematic thinking you need to practice in order to be a good programmer: all gone. The machines can be rational for us. We can just vibe.”
“People used to argue online, flame each other, get angry. And that wasn’t good, but at least it was human. Now they just reply with screenshots of ChatGPT “refuting” what the other person said, with zero interest in whether that refutation is correct. So we don’t even flame each other online anymore. If we’re even automating our vices, what’s left?”

Elizabeth Mathew, AI Isn’t Replacing SREs. It’s Deskilling Them
“Somewhere over the past year, AI stopped being a tool I occasionally reached for and became the first thing I reach for, always. My instinct now is to offload as much as possible and apply my own thinking only where it’s absolutely unavoidable. The problem is that these moments are becoming the only exercises my brain gets, and I can feel the rust.”

Venkatesh Rao, Cognitive Mercantilism
“Now replace wealth with intelligence, and mercantilism with cognitive mercantilism.”
“I don’t know how to farm. I can barely keep a houseplant alive. Yet I can obtain an astonishing variety of foods, in quantities that would have seemed fantastical to an early modern peasant. My inability to produce food is economically almost irrelevant. What matters is that I can consume it, enjoy it, develop tastes for it, and devote my energies to other things.

The analogous possibility with AI is that most people will no longer need to be significant producers of intelligence in order to become significant consumers of it.“

Keep on thinking, keep on writing

In the midst of this turmoil, I cherish the existence and accessibility of human voices that share their ideas in the open web. Keep on thinking, keep on writing.