upvote
I’m a big proponent of writing simple, understandable code, so I’m playing devil’s advocate here a bit, but: who cares?

A significant (majority?) portion of developers have been shipping JavaScript/node applications for the last decade that contain hundreds of MB to GB of code from god knows where doing god knows what with dependency trees the size of redwoods. It’s not like your average mediocre dev really knew what was going on behind their gluing of frameworks together - at least from what I’ve seen.

If you have remotely competent tech leadership that enforces relatively intelligent patterns (a good one I’ve found is “write everything backend in rust”) you can make AI churn out monstrous amounts of code that… isn’t all that bad? And if you enforce it writing and updating a docs/API.md on every commit/PR you’re probably doing better than 80+% of devs I’ve ever met. Up until a few years ago it wasn’t uncommon to roll up to a new job that was a “legacy” pile of garbage concocted over 20+ years with no comments or API docs and a readme that tells you to ask for help from someone who has been dead for 5 years. At least AI code is full of comments (some of which might even be accurate) and there’s a finite (relatively low!) cost to figuring out “wtf is this doing and how is it doing it”

reply
I care!

What happens when the maintainers lose access to frontier models because of cost, politics or other external factors? What happens if they don't have enough hardware to spin up an open-weights model?

I've seen variants of this play out before AI, so I can tell you: they will inherit a codebase they've never seen before, take forever to ship fixes (forget new features), and they'll either scrap it, completely rewrite it, or, if they're "enterprise" enough, will pay consulting companies literal mountains of cash to make it their problem.

The whole point of writing simple code was to write code that other humans can maintain. If AI is here to stay and becomes economical enough for everyone to use it, then you're right; writing code for other humans is no longer useful. If that doesn't happen though...developers who can/want to still code by hand will be loving life

reply
One is abstraction, one is complexity that _you_ own. Even 100 lines of trad-coded C relies on "hundreds of MB to GB of code from god knows where" in the Linux kernel. The difference is, you can perfectly understand that C, and own it. Then delegate ownership of the rest to Linus. If AI writes 1000 lines of C instead, now there's code no human owns in the world.
reply
> The difference is, you can perfectly understand that C, and own it.

and there is a community of developers who care about the quality of those libraries and take the weight of their responsibility seriously

reply
The point is that saying "I own the code" is just drawing an arbitrary line in the sand.

You can give the AI the spec, and own the spec instead of the code.

Eventually, the spec too will be something the model owns, and you'll work at a higher level of abstraction.

reply
The longer you work in a large engineering organization; the more clear it becomes that no amount of processes, documentation, documentation management systems or training programs can actually transfer the institutional knowledge of the origination to new people other than people-to-people interactions.

Beyond a certain size, the documentation becomes too large to ingest. Below a certain size, it can only contain a fraction of what is needed. If you take any sufficiently engineering project, and give every engineer amnesia; the project will go to shit for a undetermined amount of time, as it takes months or years go build-back the understanding that was lost.

This is clear enough then large companies fire and replace workers randomly to cut costs; a worker that has built up useful knowledge in the origination over a few years is more valuable than three cheap consultants from "low-cost countries" that are fired when the work package is over.

---

AI, looses its memory every time we press "new thread". No spec can bring that back until AIs become able to write and ingest whole books of context without getting confused.

reply
Exactly. As someone much smarter than me once argued here on HN, the value of a software company is less in the software but much more in the mental map the team has built of the problem and of how the software solves it. Throw the team / mental map away and you'll have a very hard time maintaining the software.
reply
At the same time if the organisation want code fast, it gets code fast.

The revenue for a new feature today is something sure. While the cost associated with supporting such feature will be up to debate in the coming quarters.

As often it is the case, we are moving on a long vs short term trade-off space. And I don't think any experience will generalize

reply
I'm not saying we can get rid of humans (yet). I'm saying that it's not critical to write and review the code yourself anymore, and that the LLM is the new layer of abstraction through which code is written.
reply
I completely agree with everything you’ve said, in the pre-AI world. Now, I’m not so sure.

When I worked at a big tech company on a large codebase (tens of millions of LOC across dozens of repos), it was extremely common to work on something in an area of the codebase I had zero familiarity with, and due to turnover, no one else at the company did either. As you say, docs were frequently missing or out of date.

However, with some effort over a couple hours, I could make a LOT of progress in understanding the history of the code. Every commit and PR were linked to JIRA tickets, most had eng design docs with comments, slack discussions, etc. I could step through the git history and watch the code change, alongside the artifacts of the human discussion and decisions that led to the changes. It wasn’t perfect, but I could make tremendous progress. Now, this was a remote company with pretty strong culture around using JIRA, design docs with review, etc. Probably the biggest gap was meeting transcripts.

Today, an agent can chew through years of history and artifacts on a large codebase in a half hour, documenting as it goes, and have way better understanding of it than I ever will.

It’s true that an agent can’t hold all of that in its head at once without context rot (though this is improving every year), but neither can any human!

If your goal is understanding how to do something, why something was done, why something wasn’t done, etc, and the codebase is large, mature, and extremely well-“artifacted”, I’m not at all convinced that you’re better off asking Bob who has worked on this section of the codebase for a decade than just asking a really good frontier-level agent. Maybe, but it feels like that won’t be true much longer.

reply
> Today, an agent can chew through years of history and artifacts on a large codebase in a half hour, documenting as it goes, and have way better understanding of it than I ever will.

At my last job we worked in a large, but publicly available code base. My experience was that just giving an agent the prompt to look at area X to figure out how it works would use up half or more of the context window. And that was thrown away every time we started again. We had docs, agent generated overviews but the agents still filled their context windows way too quickly to actually really be any use.

reply
The spec will never be able to capture all the edge cases. The code is what runs. It also doesn't capture all the edge cases (that's why code has bugs) but it does a better job at that than documentation. Documentation can also become stale easily
reply
This, and maintaining the spec is a cat-and-mouse game precisely to cover those edge cases.

Like "if you're using this database, and the engine has these configurations, then do _x_, unless _x'_ and _y'_ are enabled, in which case, do _y_..."

Which, if you're already being THAT specific in your spec, you might as well, idk, write the code yourself?

Because at that point your human language is basically the code and AI is the compiler. A non-deterministic one.

Regardless, your business stakeholders won't understand what's going on anyway (nor should they), so we're back at square zero.

(I wrote Technical and Functional Requirements Documents as a business analyst in college. What's happening now _for most situations_ is more or less the same thing.)

reply
I mostly agree with you, but for “Documentation can also become stale easily” … historically I’d 100% agree with you—I often forgot to update separate documentation files, forgot to update comments on related functions, etc—but AI is so much better at automatically catching and fixing this without prompting than I ever was.
reply
That's true, but it's also prone to over documenting. As an example, for some reason it always tries to include a diagram of the folder structure in the project. I think that's not really useful and it's something that changes so often it's not worth documenting
reply
AI is not an abstraction.
reply
I beg to differ! Everything is an abstraction.
reply
I think the main problem with this statement is that different facets of an entity are abstracted at different rates.

AI abstracts effort and cognitive load away from code at a heafty rate, but it doesn’t abstract liability away from code at all.

My business is paid to produce artefacts for which it has liability in the case of error, so we need to do additional work to mitigate and eliminate the liability risk introduced with language models. So far I’ve not found a better way to do that than a plan/act/assert type approach on every feature.

reply
What a very useful definition.
reply
You’re being too abstract ;)
reply
> hundreds of MB to GB of code from god knows where doing god knows what

If you use established libraries then actually the code IS well known to someone (and likely many), even if that's not you. Likely it was built with an actual purpose and with the foresight to not add red herrings to the design.

You can't say any of that for the equivalent amount generated lines. Literally no one knows what it does.

reply
When slop code needs to do something different or new or in a different environment but still stay working on the original things, it’s hard to change, sometimes catastrophically so. When your code has concequences, quality means more people understand it which means more people can maintain it.

Arguments against it are sort of like why have devs on staff at all when you build the thing the first time, or why not outsource everything, or why should I care what my code looks like when the code seems to work?

The cost of tokens is not zero, and the bigger the thing you’re doing the more low quality will cost. When your company is the software, you take on an existential risk based on the software working or not.

Pure AI generated code without human curation is full of bad wordy comments but those comments can mislead, be stale, contain duplicates, and drastically reduce the ability to understand things. I watch teams that still care about code understanding ship good products while those vibe coding in the same org just flounder after the initial burst of features. Some problems only come up after the first 90%, and AI can help you solve them but a big ball of spaghetti is still a big ball of spaghetti.

reply
Magecart has been very $ucce$$ful at hiding in JS dependencies.
reply
moreover there is not a black and white "code you can read" and "code you cannot read", there is a spectrum between. In this era, IMO if you know which module do what kind of function it should be enough, you don't need to have deep understanding of the file.
reply
Seems to me that if the AI writes the code, then AI can easily copy the code.

I.e. how hard is it to point an AI at a piece of software and say "AI, copy this"?

Seems like sooner or later copying just becomes a matter of spending enough on tokens.

Seems in that world, all significant software projects get copied. That turns software into a commodity loss leader for other business models or an open source project. Similar to the way Chrome works for Google and the way Firefox works.

reply
It's harder than you might think. Mature software is battle-tested. All of the bugs and edge cases are handled. You can't just copy that from the UI.
reply
Long term, that also just seems like a matter of spending enough tokens. I.e. we have these "red team" AIs that are finding security bugs in very mature software. As AI improves it seems you will be able to just point them at your copy, spend enough tokens and get most of the bugs.
reply
This has been the experience of everyone making decisions in any company without being the one doing the technical work. It's not a novel concept. It's actually the opposite, compared to technical people running companies.
reply
Well they had actual people who understood the code - because they wrote it and had a mental model pretty deep. Now the people owning the code don't understand it.

Won't you be worried if your mechanic didn't understand your car but offloaded it to a robot that made mistakes all the time?

reply
In many places it's demanded by upper management that devs use AI.. so even if engineers wanted to avoid using it, they would have to meet their quotas.

This is what happens when executives suffer from AI psychosis. They were already impatient, now with AI all they care about is feature velocity.

The faster they can hit that refresh button to see the features, the quicker sales can close the deals for them.

AI has basically sold them to wet dream.

reply
I am reminded of the cartoons where the car kept going faster and faster, the driver kept pushing on the pedal, parts started to fly out, the gauges started to go in circles, smoke started to billow out of everywhere and then boom!

I guess we just wait for the boom.

reply
Do you understand every part of your dependencies now, pre-AI?

I see it kind of like baking/cooking. Do you bake your bread from scratch? Do you grow your own wheat and grist your own flour?

I think over reliance on it or not even trying to understand what is happening is a big problem to be sure, but it's certainly not a new problem.

reply
I do try to learn how systems work and remove "abstractions" as much as I can. I do that with coding and my personal life.

Actually baking is a good example, I used to be really bad so I spent time learning. I don't do it every day but now I understand how bread is made. I bought a 3D printer so I could print parts to fix stuff myself. I learned to do my own oil changes, I learned how engines work, etc.

My point is that I try to learn more, not less, which is what AI is trying to achieve

reply
The person who grows the wheat understands how to grow the wheat. The person who grist the flour understands how to grist the flour.

And I would understand how to bake bread from scratch.

Now in the entire chain, we will get to a point where no one knows anything.

reply