代码死亡的报道为时过早。
Reports of code's death are greatly exaggerated

原始链接: https://stevekrouse.com/precision

## 代码并非消亡,而是在进化 尽管有相反的说法,代码并非正在消亡——它正被人工智能改造。利用自然语言通过人工智能生成代码的“氛围编程”的兴起,感觉是革命性的,它允许快速迭代和原型设计。然而,这种便捷性创造了一种精确性的假象;建立在模糊基础上的复杂系统*最终*会崩溃,正如协作编辑器失败等现实世界案例所证明的。 关键不是放弃代码,而是改进**抽象**——创建越来越精确的层来管理复杂性。人类擅长这种信息压缩,而AGI将放大这种能力,解决我们最具挑战性的抽象问题。 代码本身的价值不仅仅在于它产生的软件,还在于其内在的质量和清晰度。 正如语法正确的写作仍然至关重要一样,即使有了先进的人工智能,编写良好的代码也将至关重要。 AGI不会消除对良好代码的需求;它将*使*我们能够编写*更好*的代码,专注于优雅的解决方案和强大的系统。 现在否定编码就像否定印刷术的发明中的讲故事——一种为强大新时代做准备的基本技能。

## 代码并非正在消亡,只是面临成长阵痛 最近的 Hacker News 讨论强调,围绕“无代码”和 AI 驱动开发的炒作并非取代传统编码,而是制造了新的问题。用户观察到一种循环:快速修复的 AI 解决方案导致软件架构不良,最终需要昂贵且令人困惑的重写——被称为“理解债务”。 核心问题是缺乏理解;工程师越来越多地依赖 AI 代理,却不掌握其底层逻辑,从而阻碍了他们调试或维护系统能力。 例子包括最近由 AI(Kiro)导致 AWS 中断,以及随后对 AI 生成代码进行手动审查的需求,具有讽刺意味的是,这*减慢*了开发速度。 讨论表明,虽然 AI 工具功能强大,但它们并不能消除对熟练工程师的需求,这些工程师理解基本的编码原理,并能够解释技术决策。
相关文章

原文
Reports of code's death are greatly exaggerated

March, 21 2026

A sufficiently detailed spec is code begins with this lovely comic:

image.png

There is a profound tension here: english specifications intuitively feel precise until you learn better from bitter experience. (It's all in that facial expression of the last frame.)

"Everything is vague to a degree you do not realize till you have tried to make it precise."

– Bertrand Russel

Programming, like writing, is an activity, where one iteratively sharpens what they're doing as they do it. (You wouldn't believe how many drafts I've written of this essay.)

AI helps you with this, because it – increasingly instantly and well – turns English into running code. You can then react to it – "move the button there; make it bluer" – to get incrementally more precise about what you want.

This is why "vibe coding" is such a perfect phraseology: you stay operating at the level of your English-level vibes while reacting to the AI-created artifacts that help you sharpen your thinking.

But, vibe coding gives the illusion that your vibes are precise abstractions. They will feel this way right up until they leak, which will happen when you add enough features or get enough scale. Unexpected behaviors (bugs) that emerge from lower levels of abstraction that you don't understand will sneak up on you and wreck your whole day.

This was Dan Shipper's experience when his vibe-coded text-editor app went viral, and then went down. As it turns out, "live collaboration is just insanely hard."

"Live collaboration" intuitively feels like a perfectly precise specification. We've all used Google Docs, Notion, etc so it feels precisely spec'd. It's incredibly hard a priori to see what this is not the case.

The only reason that I personally know otherwise is that I tried to add a collaborative text editor to a product I was working on 10 years ago, and it was an unexpected nightmare of complexity.

What was hard about it? I don't remember! That's part of the problem! Complexity can be incredibly boring, unpleasant to think about, and hard to remember all the details and edge cases. For example, the classic flowchart of how Slack decides when to send you a notification:

image.png

But, this isn't the end of the story either. We are blessed with an extremely powerful tool to master complexity.

There is a fundamental limit in the human brain. We can only think of 7 (plus or minus 2) things at a time. So the only way to think about more than 7 things is to compress multiple things into a single thing. Happily, we can do this recursively, indefinitely, which is why humans can master unlimited complexity. That compression step is called abstraction.

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.

— Edsger Dijkstra

For example, Sophie Alpert used clever abstraction to refactor the Slack diagram to this much simpler one:

This is the best part of programming: coming up with increasingly good abstractions to help us master complexities. My favorite examples of this are functional programming concepts, like functional reactive programming, which I wrote a wonderful essay on.

So yes, collaborative text editors are fundamentally complex, but that just means that we're continually in search of better abstractions to help us master complexities, like ReactJS or TailwindCSS did in their respective domains.

But let's play this out 1, 2, 5, 10, 100 years. AI is getting better/faster/cheaper at incredible rates, but regardless of when, unless you believe in magic, it's only a matter of time until we reach the point at which machine intelligence is indistinguishable from human intelligence. We call that point AGI.

It may seem like an AGI world is a vibe world. If anyone can afford 100 Karpathy-level geniuses for $1000 / month, why ever trouble yourself with any troublesome details? Just have your army of Karpathys handle them for you.

This is such a joke to me. This is clearly only something you'd think in the abstract, before this technology arrived.

If you told me that I had access to that level of intelligence, there is zero part of me that is going to use it to ship more slop. Are you freaking kidding?? Of course not.

I think we're confused because we (incorrectly) think that code is only for the software it produces. It's only partly about that. The code itself is also a centrally important artifact. When done right, it's poetry. And I'm not just saying this because I have Stockholmn Syndrome or a vested interest in it – like a horse jockey might in the face of cars being invented.

I think this is a lot clearer if you make an analogy to writing. Isn't it fucking telling that nobody is talking about "vibe writing"?

We're not confused with writing because there's nothing mystical about syntactically correct sentences in the same way there is about running code. Nobody is out there claiming that ChatGPT is putting the great novelists or journalists out of jobs. We all know that's nonsense.

Until we get AGI. Then, by definition, machines will write amazing non-slop and it'll be glorious.

The same exact situation is true for coding. AI produces (increasingly less) shitty code. We all know this. We all work around this limitation. We use AI in spite of the bad code.

As Simon Willison says, AI should help us produce better code. And when we have AGI this will be easy.

When we have AGI, the very first things we will use it on will be our hardest abstraction problems. We will use it to help us make better abstractions so that we can better understand and master complexity.

You might think the need for good code goes away as AIs get smarter, but that's like using ChatGPT to write more slop. When we get AGI, we will use them to make better abstractions, better collaborative text editor libraries, etc.

For example, my favorite success story with Opus 4.6 was that it helped me with my dream full-stack react framework for Val Town. It one-shot solved my list of unsolved problems that I had with getting React Router 7 to work full-stack in Val Town. The result is my nascent vtrr framework. I'm particularly proud of this 50 line full-stack react app demo in a single file:

Screenshot 2026-03-21 at 18.48.14@2x.png

If you know of any other snippet of code that can master all that complexity as beautifully, I'd love to see it.

It seems like 99% of society has agreed that code is dead. Just yesterday I was listening to podcaster Sam Harris of all people confidently talking about how everyone agrees coding is dead, and that nobody should learn to code anymore.

This is so sad. It's the same as thinking storytelling is dead at the invention of the printing press. No you dummies, code is just getting started. AI is going to be such a boon for coding.

I have so much more to say on this topic, but this essay is already 3x longer than I wanted it to be. I'll stop here and leave you with some of my favorite quotes on formalism.

Instead of regarding the obligation to use formal symbols as a burden, we should regard the convenience of using them as a privilege: thanks to them, school children can learn to do what in earlier days only genius could achieve.

When all is said and told, the "naturalness" with which we use our native tongues boils down to the ease with which we can use them for making statements the nonsense of which is not obvious.

– Edsger W.Dijkstra, On the foolishness of "natural language programming"

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.

Tony Hoare, h/t Paul Buchheit

The quantity of meaning compressed into a small space by algebraic signs, is another circumstance that facilitates the reasonings we are accustomed to carry on by their aid."

– Charles Babbage, quoted in Iverson's Turing Award Lecture, quoted in Succinctness is Power by Paul Graham

联系我们 contact @ memedata.com