back
146 comments
Quote of the main point in the article:

    In other words, the hard part moves from recall (“How do I write this?”) to judgment (“Does this actually make sense?”)
This is very true. But to evaluate if it makes sense, you first need experience writing the code. I am glad I learned software development over 15 years ago, and not today. AI is a super power, but without the experience to guide it, it can go horribly wrong really quickly.
Yup!. Over 30 years experience here. Landed on the same place with the added feeling of "We were always intended to develop the judgement of what makes sense and maintainable, where is the surprise here?"

People want the "Fluent Text Generator" to think for them because its marketing calls it AI. At the end is just a tensor collection, probabilistically backtracked adjusted, text generator. It does produces fluency in the answer, but the fact that it sounds correct, to the point of passing a compiler approval, has nothing to do with been well thought out.

"How can we dig a well here" and "should we dig a well here" are neither mutually exclusive nor sufficient in their own regard.

Cant answer should we without having done a lot of it before. Cant learn unless you actually do it and see the consequences through.

Yes a LLM is mostly an information memory de vice, but as a worker you still have to vet it.

I believe the human constraint made us find ways to layer and modularize systems so it is easier to check. Now the LLM produces a lot of code and abstraction have to be enforced. Something is missing.. (resonates with the latest Pocoo blog)

Yep, I feel fortunate that programmers that made it well before AI are going to be very sort after in a world where software development is going to explode and be in very high demand.
I wonder about this. One would think new programmers, like old, will learn through experience to care most about the things that matter, and ignore things that don’t. In 10 years my pre-AI experience may condition me to waste time thinking about struct packing, while younger developers simply won’t know or care
That's where I've landed too. Maybe I'm just delusional and telling myself a comfortable story, but I think my ~15 years of experience building software by hand lets me utilize these robots in a way that people lacking it simply can't.

I still absolutely loathe talking to them and using them. But I feel less scared about losing my career these days. Work wants me to use it, I'm using it at work. In my hobby projects I still code by hand.

This is called the bargaining phase.
Definitely not my experience. No matter the model, if I'm working on something important (and there is little reason on working on something not important) I do care about correctness and understandability. While LLMs are great for throwaway one-time code (although that's also debatable), they cannot compete with code written by a seasoned professional. No matter how many times I've tried delegating writing code to LLMs I've always regretted it in a few months' time, because it is more buggy and I don't really know what is happening there.

The future is using LLMs for what they are good for. What that is still being found out. I've had great experience with LLMs reviewing the code (matches with Primagean's ~50% accuracy at finding bugs, which is really good) and for explaining unfamiliar concepts to me.

I firmly believe that the code itself needs to be 100% organic, and if it's not and you're relying on LLMs to generate tons of code, you haven't built enough abstraction to make it unnecessary.

After 18+ months of this, LLMs are incredible for getting rid of the work I hated most: Updating JIRA tickets, tedious little cleanup jobs, refactoring, etc. They are great at finding infosec issues.

They are also GREAT at writing code based on standards and patterns established by an actual human engineers. They are STILL trash at anything meaningfully complex from the ground up. I will go through hours of planning where I have to kick the hell out of its plans in ways that I don't think someone without a ton of real world experience could do. Even in the fancy new Fable models that remains true. They are not creative and any engineering worth doing requires creativity.

Some things to consider:

1: The quality of code varies widely from model to model. In Visual Studio Copilot, I get so-so code from GPT, great code from Claude 4.x, lousy results from Claude 5.x

2: "Novel work" is harder to get from an LLM than when it's following an example. For example, I can get great Blazor / HTML / css from an LLM (and then spend time iterating making small adjustments,) but if I'm writing a complicated DB query or implementing a novel algorithm, it's best to do by hand.

3: But, in the case of a novel algorithm or query, I get great results saying "please write unit tests for XXX". That alone makes me develop code twice as fast!

You're moving too slow.

Over the last four days I've few shotted a 1:1 clone (and improvement) of Fal, OpenRouter, and Replicate in Rust. It's going to be open source.

I've lined up $300k of monthly commitments for it that land at launch. Might apply to YC with it.

Moving "organic" is too slow for the world today.

I can generate LLM code and it will be very stable long term, but you must be QA minded and non-stop testing, ask and make sure it generate maintainable code, watch for code smell etc. Maybe it won't match a very seasoned dev, but LLM's generate sht code because the dev allows it at the review stage.
One thing that I find frustrating/disturbing about LLM generated code is that wrong stuff doesn't usually look wrong, so you almost have to review it even closer than what you'd review from a person. Like in the past when a developer was being sloppy, usually you could kind of tell superficially, but with LLM code it's usually well documented and superficially well structured, all while doing batshit insane things. Like today I noticed some code that it had written was just silently returning on errors without logging a warning or returning an error code. It "worked" but it was a major foot-gun!
It’s the same with writing: AI writing is coherent on the surface, but is impossible to edit because it’s built on no real insight.

Now the sharpening of a coherent point, challenging one’s assumptions, and editorial decisions of what (not) to include are super important because they’re no longer a byproduct of the writing process.

Human insight can emerge from attacking the semblance of sense in the LLM's output.

Much of the cognitive work in writing emerges in the labor of writing prose and challenging assumptions against the model you build in your head as you go. I've found this process is inverted when working with an LLM: it in effect emits a provisional structure first, and I discover what I actually think by finding where its output is vague, overconfident, incomplete or outright false.

Accepting surface-level coherence as finished thought is the failure mode to avoid.

> It’s the same with writing: AI writing is coherent on the surface, but is impossible to edit because it’s built on no real insight.

LLMs lie in the unhappy-medium between an abstract machine we can reason-about versus a person we can instinctively model and simulate.

Instead it's a complicated machine that evades both reasoning and intuition.

I am looking at the subtitle:

The future of software development will belong to those who can think clearly at scale, maintain durable mental models amid rapid change, and integrate machine-generated output into human-directed intent.

Wasn't this always the case? Maybe I just take this for granted because I am dumb Army guy and this is the only lens through which we dumb Army people see the world.

Whenever the subject of AI comes up in connection to programming it feels like the conversation always misses the human element. When you look at this only in terms of human behavior I am not seeing anything new with AI.

Maybe, its because I write in JavaScript and maybe its different in other areas of programming. In JavaScript it has always been a race to the bottom. The product is never the goal. The goal is always hiring and regarding code as a commodity that is designed to fail elegantly and frequently. So, when I look at AI writing code for developers I can't help but ask: What's different? Isn't that why Angular and React became popular, because they abstract away writing code?

Ever since the first programming language the goal was to make the work easier, although there are different kinds of "easy", and sometimes you end up worse off because tools don't live up to promises.

The human element is "What do I want?" You have ideas about how you need things to work. Some folks don't care much at all about how things work, just that they can shove a thing out the door and get paid with minimal effort. Sometimes their boss is completely in agreement. Sometimes things fall apart because nobody cared enough to bother, and sometimes even that doesn't matter, and everybody gets paid anyhow.

Sometimes you wish things mattered more, and sometimes they do.

> Whenever the subject of AI comes up in connection to programming it feels like the conversation always misses the human element. When you look at this only in terms of human behavior I am not seeing anything new with AI

You’re not wrong. I think that’s the confusion in LLM conversation. It seems that most people believe that programmers only think about code like it’s some kind of lego bricks we have to assemble. While the truth is that most projects is about building a sets of concepts that interacts in a specific way. The code is just the medium to do so, like letters helping to create words when writing.

I was reading the OpenBSD code (some investigation about a pen tablet) and the layers in abstraction was the following:

  xinput
  ws       (driverfor x11)
  --|ioctl syscall|---
  wsmouse  (wscons subsystem)
  hidms    (hid mouse) Some other things use the usb hid format
  ums      (usb mouse)
  uhidev   (usb hid device)
  usb      (root controller hub abstraction)
  xhci     (usb root controller under the hood, usb side
  pci_xhci (usb root controller, pci side)
You can stop at several point and not worry about what’s in the lower level of the abstraction tower, but those mechanism exists and have been built by someone. Imagine if that tower has been flattened out and all the code needed to coexist within the same module. It would be madness.

Programming was always about taking some lower order of things and rearranging it into meaningful concepts for some higher purposes. Whether it’s the DOM api, the jQuery suite of functions, the React model of components and reactive state, the goal is to create UI widgets for a page.

People (sometimes?) see the building blocks (dom api…) and the end result (figma sketch) but have no idea how the two connect.

It's somehow more tiring, reading complex plans in response to your guidance, and then making decision after decision. Reminds me of this Alan Watts bit...

A farmer who ordered a farmhand quickly discovered he was an extraordinarily efficient worker.

The first day, he put him on sawing logs, and the farmhand sawed more logs than anybody else, ever. It was fantastic — but the wood-cutting work was all done in one day.

So, the next day, the farmer put him onto mending fences. There were all kinds of broken fences around the farm. And, again, the farmhand had all the work done in one day.

So the farmer thought, “What am I going to do with this guy?”

The next day, he took the farmhand to a basement and said, “Look, here all the potatoes that have come in from this harvest. I want you to sort them into three groups: those we sell, those we use for seeding, and those we throw away.”

He left the farmhand to it. And at the end of the day, the laborer came back and said, “Well, that’s enough, mister, I quit.”

“Oh,” the farmer replied, “You can’t quit. I’ve never had such an excellent worker. I’ll raise your salary — I’ll do anything to keep you around me.”

The farmhand said, “No. It’s all right mending fences and chopping wood, but this potato business is decision after decision after decision.”

> It's somehow more tiring, reading complex plans in response to your guidance, and then making decision after decision.

This is the world of a manager working with a development team hah. When writing the code yourself is it not the same? If you're writing the code by hand then you're still making the decisions and still having to plan and design. I mean someone/something has to...

For me, the stress about making decisions as an employee isn't about making a choice.

It's knowing that any moment a manager is going to wander along and change it from under me. So I might as well ask the manager first.

It showed up on my performance reviews that I'm bothering other people with questions and I should make my own choices, so I started doing that and documenting every time the choice I made got overturned by a manager. Next performance review when it came up I brought out my list. My performance reviewer was pissed at me for documenting this and I was let go four months later. :)

I would love a job where people let me make decisions after decision after decision

And yeah you could say that if my manager had to overturn my decisions that often it probably meant that I made bad decisions, and maybe that's true, but I don't think so. It was often things like "this is the best solution but it will take longer", "This low priority, do it the quick way instead". But priorities changed a lot.

Historically, we make systems to make these decisions - build a method to sort potatoes. Or build a method that can build a method to sort potatoes.

Ai, as a cognitive technology, has the potential to climb that hierarchy.

Yes, current software developers need to make more decisions now. But that is just until the methodologies settle.

Then it is over.

If the AI is asking you questions and requiring you to make decision after decision, then perhaps it's a spec issue. I know I've written a good spec if the AI does not ask any questions and doesn't get anything wrong after implementing the user story.
This article will apply for about 3 months until AI advances again and the assumptions made are no longer true.

You can't take a rapidly developing field and pretend progress is going to freeze at its current development level so you can decide how to handle it.

It's a coping mechanism to deal with rapid change by pretending change is going to stoo right here right now and you can get a handle on it.

I always find it hilarious when these opinion pieces about the impacts of AI are AI-written (as is almost certainly the case here, a major trend in ACM and IEEE publications). Like, really? An LLM has a breadth of experience managing AI, and can recall it, and explain it to humans?
How many times can we have the same discussion.
That's the neat thing, with LLMs we can fully automate this discussion and have it at thousands of tokens per second and millions of tokens per dollar.

:P

It's way easier. People don't need to read code anymore, nor will they have to care about building mental models about the system as this article suggests.

The way to think about coding agents is that a good one should in theory literally replace the developer entirely. No, a whole organisation of developers.

In theory a product owner should just be able to dictate how they want to product to function at a high level and the AI should take care of the rest in the same way a human programmer or team of programmers would have in the past. If there are conflicts in what's being requested, then the AI should be able to recognise that and ask for production direction.

As always with every generation of AI people seem to way over index on the now.

- "They're good for autocomplete, that's about it"

- "They're good for quickly mocking up small functions, but they make a lot of mistakes"

- "They're good for scaffolding some parts of the system if you're good at prompt engineering"

- "They're good at writing most of the code, but humans will always need to do the last 10%"

- "They can write all of the code, but humans will still need to architect the system"

You are here. Perhaps this is where progress stops. I wouldn't bet on that however.

AI is making programming an irrelevent field.

I am tired of all these AI is so smart vs AI is not so smart. AI is a tool. It is like CNC machine tools or robotics in manufacturing.

How's about a test? Put all the smart AI researchers/developers onto an airplane that its software was entirely created by AI. Now tell that airplane to travel around the world with airborne refueling and land at an airport. When will this happen and how many of AI advocates will get on this autonomous airplane?

I agree with this, but I'd add that good judgment comes from experience. Before you can evaluate whether AI-generated code makes sense, you need to have written enough code yourself to recognize the trade-offs and failure modes. AI is an incredible productivity multiplier, but it can also make it much easier to move quickly in the wrong direction without even knowing that you are moving in the wrong direction
I don't think I write or read or code anymore, bar prs from juniors or senior colleagues wanting a review.

I didn't think it would work just 6 months ago, but reality is that at this point AI writes better code than me and I'm not the average developer, but someone who loved the craft and was good at it.

Lots of effort was required to get the repositories to a good level, best practices, documentation, etc, but reality is that once you do that and have strong rails most of your work is having it to write a plan focused on business logic, review it, have it derive an implementation plan, review it and then it's mostly on its own.

Codebases have never been healthier, cleaner, better documented, consisted and thoroughly tested as they are now. There was just no spare time and mental energy to bring them there before, now there is and experimenting to get there was cheap.

Needless to say I no longer enjoy the job anymore and thinking of changing domain. I loved tinkering about implementation details, etc, but the job nowadays is more of qa and architectural design than writing or reviewing code.

> Code becomes only one representation of thought among many overlapping ones.

This is wrong, code is the concrete "truth" being executed, the rest (plans, prompts, agent instructions) are just temporary artifacts used to generate the code. What's left is the code alone.

LLMs don't have any semantics, they can't execute anything with 100% certainty. So far programming languages are the only langugues that can do that.

AI merely reduces the difficulty of coding, without directly increasing the difficulty of architectural judgment. It merely brings to light the actual difficulty of this task. Moreover, I believe that in the future, AI will also possess certain architectural judgment capabilities. However, the cost of such AI might even be higher than that of humans.
Also, the need to move with speed is an exercise in self control so you don't cut corners and accept code without really look at it. There are so many times when I catch really blatant stuff that if not caught would be over engineering, wrong engineering, hacks, logic code copies without reuse etc etc.
Since rise of AI u haven't touched single line of code. Even though I know AI isn't good enough still in many areas, I cannot find the energy to invest in programming with writing code.
It's true that there are new skills to acquire (and that those with talents for the old skills may be less talented with the new skills).

It's absolutely not true that it "just" moved the difficulty around. If that were true then I'd be just as well off continuing to use my decades of programming expertise just as I always have; but the reality is I can get more done, and get better work done (depending on level of vibing), than ever before.

Thing is, though, making programming easier doesn't mean programmers will work less hard. That's how competitive markets work. LLMs made programming easier. Capitalism prevents workers from capturing that value.

The convergence is ongoing. We are Borg. You will be assimilated.
Oh finally my ADHD will pay for itself! I waited for so long!
It also made it way orders of magnitude more expensive.
It can be both at the same time - easier and different.
we automated the easy part of programming and it turns out the easy part was the fun part
Tackling software architecture is not programming, that is architecture. They're called different things for a reason. It is now easier to write working code via AI. Anyone that can type can do it. The syntax (language) barrier is fully removed. I'm done with syntax, looking up the new right way to do things, etc. It works via prompting. Tell it what to write and it comes out the other end with a working program. That's programming, and that's not an opinion. This alone makes it easier to program.
The tools do a shit job at that final 20% of a project. An absolutely shitty job.