213 comments

[ 0.19 ms ] story [ 4.4 ms ] thread
Don’t be out of touch…while continuing to use twitter behind a paywall. Cool story, old man.
We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.

I love being able to quickly bring out the program that is already running in my head without having to worry about the grind of typing it into a format that the compiler understands. Dealing with API names. Syntax. Language quirks. Library gotchas.

Once I've mentally solved the problem, I want to see it running as quickly as possible. Pure vibe coding is dull and unsustainable with current technology for all but the simplest systems; AI-assisted coding, on the other hand, rekindled my passion for computers.

Have you tried live programming (smalltalk, LISP)? Or a proper Edit-Compile-Run cycle with a good editor?

A lot of people are bashing old practice, but from standpoint, it always seems like a lack of proper tooling to streamline the coding phase of building software.

Dear sir, I appreciate the help but, as I mentioned, I've been around since the Assembly days... Been there, done that. I currently have a crazy efficient Edit-Compile-Run setup and a great VSCode personal config, all of which were made a lot more crazy efficient with Codex.
I like your constructive outlook and I want to believe that we can now focus on the bigger picture, but I'm not really seeing it around me. Most everyone I know that's "AI-pilled" has spent the newfound capacity on throughput instead of altitude.

Is anyone actually seeing a shift towards improved structure rather than more code, faster? We seem to be living in the Gatling-gun version of the picture John Carmack drew when modernity also ushered into precision marksmanship...

>> Is anyone actually seeing a shift towards improved structure rather than more code, faster?

Yes. At work we recently finished a complete rewrite of the platform. The old codebase got abandoned and two new codebases got stood up. Previous stack was Phoenix LiveView and the new one is Phoenix API + Vue /w TypeScript. Zero code shared between the two. We took the opportunity to re-architect a lot of the core functionality and get rid of the tech debt that had been hounding us and killing our velocity for the past six years.

We finished the rewrite in two months. A little over 700k LoC total. 95% of it was planned, orchestrated and written by AI. We could have gotten it done faster, but we were well aware of the potential for slop and thus paid an absurd amount of attention to (and tokens for) code quality. For example, there is a 100% test coverage requirement in both server and client, combined with AI-driven review rules that say all tests must be non-vacuous, plus a ton of invariants enforced via deterministic checks. Everything from standard linting and formatting rules to AI-necessitated stuff like "comments cannot be more than five lines each" is in there. At the end of each week, we get together for ~30 minutes to review each bug that was fixed that week (there haven't been that many) and try to figure out if more deterministic checks can be added (or new ones extended) to prevent that class of bug from re-appearing. We actually have an Architecture epic with a dedicated Fable agent orchestrating all the initiatives and tickets in it and keeping track of improvements (and the occasional regression). So things like accessibility, usage of shared helpers, enforcement of common patterns, etc. are all kept track of.

The difference between the old codebase and the two new ones has been night and day. The new codebases, combined, are ~35% larger than what we had before, and yet there are way fewer bugs (we actually got suspicious at first and had to check to make sure our logging instrumentation was configured correctly). Performance is also stellar, features have been a lot easier to add and extend, and everything is a lot easier to find. When someone asks a question or has an issue we have a pretty good idea of what part of the codebase to look in and we're usually right.

It wasn't all unicorns and rainbows. Not everyone on the team was proficient with AI-driven development, so they had to be brought up to speed quickly and taught the tools and also what works and doesn't. Code reviews were also difficult and time-consuming. We had to deal with our anxieties about working in two new codebases none of us had authored much code in ourselves. What made all of it worse was that we were racing towards a deadline imposed by external factors so we all ended up working a lot of hours. It was essentially between getting it done this summer or waiting until next summer and we bit the bullet and did it. It absolutely would not have been possible without AI.

> For example, there is a 100% test coverage requirement in both server and client, combined with AI-driven review rules that say all tests must be non-vacuous,

look, your application works, right? so it doesn't really matter what you or i think, and this is why AI matters. but this, your "100% test coverage" - that is pure slop. just 20 years ago, all the most popular software shipped with NO tests. are you getting it?

> just 20 years ago, all the most popular software shipped with NO tests

not sure what you're point is here. It sounds similar to "we use to use blood letting and leeches and doctors didn't clean their hands and everything was fine so what are you getting at?"

Good tests have real benefits. The fact that people shipped without them in the past in no way suggests they aren't needed or have no point.

While I don’t necessarily agree with them, I think their point is that AI can write slop code, and then write slop tests to “prove” it works (often without proving anything in practice). Whereas humans used to write code that worked despite having zero tests because we’re inherently capable of understanding code and predicting its behaviour from the implementation alone - something many LLMs seem to still struggle with.
Also, 20 years ago SW was tested by QA department and approved before shipping. Don't want to go back to that, but there were testing, just differently.
IMHO getting rid of proper QA done by teams of QA specialists is the main reason for the current software quality crisis (and that already started 15 years ago or so). We should go back to QA teams and proper QA procedures.
>> but this, your "100% test coverage" - that is pure slop.

Not really, but I can see why some people think that.

We treat 100% test coverage as "required, but by itself not sufficient". It doesn't give us false confidence that everything will be perfect or anything like that. But it provided us with the discipline to make sure no corners were cut, and the bugs that were fixed didn't come back.

One refreshing aspect was that during PR reviews we stopped debating whether something needed test coverage. Instead we focused on what was being tested and how.

> One refreshing aspect was that during PR reviews we stopped debating whether something needed test coverage.

I’d be curious to know what percentage of the time spent implementing tests would have otherwise gone to discussions about whether to implement them or not. ;)

And 80 years ago cars didn't have seatbelts. Your point?
What kind of software are you talking about? Test harnesses were commonly used in 2006. JUnit was created in 1997.
> just 20 years ago, all the most popular software shipped with NO tests. are you getting it?

Not really?

About 20 years ago, I was working on Firefox and we had millions of tests on CI. I was working on a host of other open source apps and they all had tests (most of them had no CI, of course).

> just 20 years ago, all the most popular software shipped with NO tests

Are you getting older? A lot of people anchor their intuition of time and history to a certain year. There are probably still lots of people who think the 1990s is not that long ago even though it’s now over a quarter century since it ended. Maybe you mentally default to 2012 or so, when it might be true that most popular software shipped without automated tests (although manual QA was a lot more extensive in 1992).

But 20 years ago is now 2006, and unit tests were well established as a best practice. Perl had extensive automated tests in the late 1990s that everyone who ever compiled Perl would have noticed, since they were run by default and produced obvious output. Kent Beck’s “Test Driven Development: By Example” was released in 2002, and popularized both the name and practice.

> We finished the rewrite in two months. > racing towards a deadline imposed by external factors so we all ended up working a lot of hours.

2 months of 80 hour weeks is 4 months of regular weeks. Can you clarify how many hours your team was putting in? And how large was your team?

Probably averaging 70. 9 devs and 1 QA engineer.
Assuming the LLM never got anything wrong or otherwise had to be re-prompted, that means your devs were reviewing 130 SLOC per hour, on what was described as moderately greenfield (examining new implementations rather than comparing to old historical accidents).

How?

I don't want to sound flippant, but if the point is to add human thought to the mix, that's a high review rate even when examining small tweaks to an existing, working product, even with substantial AI help to pre-filter major gotchas before you bother spending a lot of human effort on the review. That's only 20-30wpm, but a review isn't just scanning or reading code, especially if you're trying to figure out how a new system which doesn't run yet will fit together.

No don’t worry they said it’s not slop because there’s tests lol
Is that actually a high review rate? Especially if you know the language and domain. Sure, initially there's a learning curve for a new codebase structure, but lots of lines will also be trivial and many changes might also be similar to each other.
For small separate changes in isolation then maybe it's ok? But not for whole days 8 hours each.

But then you need to watch for bugs coming from interaction with previous changes and in 700k loc that might be nontrivial. How do you know which states are reachable and which are not? That takes time.

It only takes a botched condition here (forgot a "not"? swapped "and"/"or"?), a swapped variable name there, code that looks ok, but isn't.

> Assuming the LLM never got anything wrong or otherwise had to be re-prompted, that means your devs were reviewing 130 SLOC per hour,

It's possible, I think, but humans cannot do repetitive mental work (like reviewing code) constantly without atrophy.

Can I review 130 SLoC/hour? Sure. Can I do it 80 hours a week? No. Not even a single 8-hour workday.

Could you share more about how you guys set up the rewrite? I am interested in the shape of the software as well as how you achieved (or aimed to achieve) high quality.
LLMs are a game-changer. You work more for less money.
Need to get the budget for those tokens somewhere.
> We could have gotten it done faster, but we were well aware of the potential for slop and thus paid an absurd amount of attention to (and tokens for) code quality. For example, there is a 100% test coverage requirement in both server and client, combined with AI-driven review rules that say all tests must be non-vacuous, plus a ton of invariants enforced via deterministic checks.

This is why my current view in terms of LLM productivity gains are:

- debugging and triaging 5x

- refactoring when you have tests in place 3x

- greenfield where you have zero tests is about 1.5x

That is interesting, but... is it actually improving structure?

We're mid-way through a similar process at work. Rewriting a legacy app in a new language, with new architecture and new features.

And it's a mess.

We're at 10x loc (admittedly, the new programming language is more verbose than the old one), comments make no sense. Yes, we have ~100% coverage, but most of the tests are meaningless. The agent keeps removing our tests to replace them with tests that are easier to pass, breaking code invariants, removing all the engineered data structures and replacing them with stringly-typed code, etc.

And of course, given the number of LoC (and the fact that the agent rewrites so much code all the time), it's physically impossible that all of them were reviewed by a human being.

AI made it possible, insofar as upper management would never have greenlit the project without AI, but I can't escape the feeling that we're building on quicksands.

Are those people working on products or platforms?
The people who are using AI to improve what they were already doing anyway, aren't going around expounding "I made this with AI!" or "AI helped me do this"

One of my personal projects is a sort of "middleware" for Godot, and it needs to be lean, precise and match certain rules, because it's meant to be used by many games, so I can't trust AI to generate code for it, it'd be too sloppy,

BUT Codex reviews have been a great help in finding bugs that would have taken me ages to even notice on my own.

I use vibecoding to capture UX. It's the best way of capturing requirements I've seen so far. Then once it's all captured and dies down towards requirements that are all in the "could have" category of MoSCoW, then I use AI-assisted coding (and the fun task of reading tens of thousands of source code lines) to refactor or create an entirely new application that is more technically sound.

I'm making full-stack applications at the moment.

I’m the opposite. I don’t believe there is a royal road to understanding anything. For me, the process of programming involves frustration. That is usually when I find my greatest insights.

Syntax isn’t a big deal. Names either. You can look them up. Remember them. Language gotchas are annoying and sometimes problematic.

To me, our job is understanding problems. And for me, understanding the problem involves wrestling with the code. I learn much from modelling problems in code, building theories, testing them.

Once an LLM system has generated some code I haven’t learned anything. Even when I read through the solution. It doesn't require the same activation of my brain. There’s nothing quite like through the problem yourself.

LLMs definitely feel like they are draining my passion for computers. There were plenty of folks who checked out or were never truly passionate about programming. Now they’re louder than ever. “Nobody cares about code,” and, “optimizing is a waste of time.” Now we don’t even want to understand how it works, or whether it works at all. They repeat the lines their master have told them: get on board or get left behind.

I’m pretty sure I am risking getting, “left behind.” But I’m okay with that. The tech is truly the least interesting thing to me. If I don’t have a career in 10 years… oh well. I’ll still be programming.

ya i find all LLM output to be incredibly boring and unskillful, I can ship vibe bugs fast with the best of them but it brings me no joy.

I'll never let myself be left behind but the joy professionally of writing quality software is 100% gone.

The possibility to have an agent implement every little thing that comes up in your mind as you're building doesn't spark the tiniest bit of joy? Previously, "ooh it would be cool if" had to answer to "yeah but it'll take too long". Now, it's more like, "how important is that really?" to stupid ideas that never would have seen the light of day before.
> "ooh it would be cool if" had to answer to "yeah but it'll take too long". Now, it's more like, "how important is that really?" to stupid ideas that never would have seen the light of day before.

My answer was it to "ooh it would be cool if" has always to build a PoC of the thing or a MVP, then I can flesh it out when I need more features. Sometimes a web app can be a single PHP script, and a cli command can be as simple as a single file C program. Or using tkinter with python for GUI.

The answer to "ooh it would be cool if I can travel fast" is not "yeah but it'll take too long to build a car". It's "let's build a kick scooter first".

Not even a little bit to be frank. The joy of things came from their implementation to me. I will write something and then peruse its code on github for hours afterwards just looking, like one would at an art gallery.

If I did not toil on it I wont use it most likely. There's a very very small amount of software I ACTUALLY desperately need in a way that I would not care how it came to exist.

Do not get me wrong, those things exist, i have a plethora of dog shit vibe code websites, clis and tuis and other random stuff on a self hosted forgejo. They did their job now they die. But it brought me no joy, in fact it was rather unpleasant the entire time doing it.

This is where I’m at as well. It is incredibly liberating I feel very empowered
> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.

Focusing on data structures, architecture and algorithms is what competency in programming has looked like since forever. Building systems out of smaller pieces gets you there.

If your complaint above is that you were struggling with syntax and reading documentation, one might ask if you failed to progress past beginner levels, and now AI is just your cheat-code?

[dead]
It is the same. I mean many mainstream languages made thinking in datastructures hard. Not a coincidence why functional languages, Haskell, F#, OCAML, Scala, Clojure, LISP, etc. had their enthusiast, as they felt just like what you claim.

The datastructures already did the heavy lifting. The syntax was not something to struggle with, but it was the natural way to stick the bits together.

JavaScript for one never gave me this feeling, and I always felt that either the language, or the libraries, but something was always a struggle to overcome. (Python too... seriously, working with collections is a pain in the "pythonic" way for someone who has experienced LINQ... and for most line of business apps it is all about working with collections.)

Syntax is listed right there in the GP comment. They've given plenty of rope to hang themselves by.

Someone who says that programming is not about working at the level of about data structures and algorithms without LLMs raises red flags.

Do you remember how bad documentation was? I still have nightmares about Twisted.
And I have wonderful lucid dreams about MSDN.

Also, are you implying that docs became better in the AI era?

Some projects have fantastic documentation. Qt comes to mind. The experience of writing Qt is a pleasure because I can always jump to the doc for whatever class I'm dealing with and find what I'm looking for immediately. Also every argument type is well-linked in every signature so it's easy to follow and understand everything you're dealing with.
> Focusing on data structures, architecture and algorithms is what competency in programming has looked like since forever

yes, being able to bang out leetcode hard from head on an interview on paper matters so much... oh wait. it does not.

in the real world, outside of interview questions, it hardly matters. when it comes there, I'll optimizite it, but getting the first system up and running in a way I want is way more fun & challenging. need a lock free ringbuffer? I'll look up what's the latest way to build it. or just ask my AI.

> yes, being able to bang out leetcode hard from head on an interview on paper matters so much... oh wait. it does not.

That's about reciting standard data structures like stack and queues. I think parent is talking more about the design of primitives for the domain of the software. That requires creativity and insight.

> AI-assisted coding, on the other hand, rekindled my passion for computers.

AI-assisted coding isn't a thing. Why would anyone pay you to code when your competitor spends 1 minute spelling out a problem and doing the same thing for 59 more problems?

As far as I'm concerned coding is dead as a profession, now we are Harness Managers.

You guys can downvote all you want. If you don't already realize this you'll realize soon enough.
> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.

That exact sentence could have been said 20 years as well as 40 years ago. I don't know how you programmed pre-LLM, but line-by-line has long been a thing of the past, if it ever existed. I'm sure the folks creating the Apollo software were thinking a lot about data structures, software architecture and algorithms.

They weren't. A lot of abstraction concepts like ADT, modularization, structured programming had to be developed over the following decades.
> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.

I prefer an AI that is good at data structures, architecture and algorithms. Then, finally, no more leetcode.

a lot of people don't understand that the joy of making something is not coding but actually being able to build anything I want. AI just made it 50x better, as exactly as you said, we don't need to deal with the useless junk (what's the API syntax? what's the library syntax? oh it changed in the last 3 versions, let me look up the new API, this and that...).

it's great.

> a lot of people don't understand that the joy of making something is not coding but actually being able to build anything I want

I expect "a lot of people" understand perfectly well that that's where the joy comes from for you. Do you not understand that other people have different motivations?

coding for the sake of coding is, well, dumb.
Is painting for the sake of painting dumb too?
(comment deleted)
The number of down votes the parent comment has seems to me like a litmus test of people who will use AI and those that are just critical of it.

I have my reservations about AI but so far I’ve found ways to make me faster. So I’ll continue to use it but make sure to review my usage regularly.

The number of downvotes reflects the fact that people don't consider just calling something "dumb" a worthwhile contribution to the discussion.
Crafting code in your preferred language in a way that it is easily understood by others or fulfills some other constraints while doing whatever algorithm requires can be as fulfilling as writing poetry.

I can write „you live, you die, get over with it, life is hard, love hurts” - it basically encodes all wisdom of countless poems, books. Yet I have seen many people getting that idea better when the knowledge of this simple truth is in a form of a story.

Conversely, if you write an algorithm using better structure, better data structures it makes a lot of difference.

You're describing software developers, even better, coders, not really engineers.
> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.

That would be lovely.

It's sad that we're being forced to vibe code, though, because my day-to-day experience of that is that the agent does not respect the data structures I feed it, nor the architecture, nor the algorithms.

> Pure vibe coding is dull and unsustainable with current technology for all but the simplest systems; AI-assisted coding, on the other hand, rekindled my passion for computers.

Agreed.

>AI-assisted coding, on the other hand, rekindled my passion for computers.

I would be interested to know what you mean by AI-assisted coding.

I've been coding for 50 years (40 professionally) and maintain several largish C++ code bases for commercial apps. There is no way that I am going to let an AI scan (train on), let alone edit, my code. But I do ask MSCoPilot questions, basically using it like turbo-charged StackOverflow. And I do get some value from that, even if it is often wrong. Is that what you mean?

I kinda of agree, but still believe that writing most of the critical code yourself has long term advantages. IME the initial mental model hardly survives contact with reality and all those little micro decisions that come up during implementation are good to have in your own head instead of just written to MEMORY.md where no human ever ventures.

Eg the best laid plans usually don't survive first contact with reality.

It depends of course where the code sits between "critical bedrock code" and "high level throwaway code".

E.g. the lower level the code, the more I want to get directly involved, even wgen that means typing each line manually.

Also you should try assembly coding with modern (non-LLM) tooling, it feels incredibly more productive than on 30..50 years ago ;)

Also:

> software engineers can focus on data structures, software architecture and algorithms.

This was already the case decades before LLMs, that's why an entire zoo of high level languages were created.

How can you have proper real understanding of data structures and algorithms without at same time having line-by-line mental model?

Or do you blindly trust what machine tells you at whatever time you are communicating with it?

Architecture I might give not needing line-by-line model. But I really doubt the same with data structures and algorithms. Those are in the end build from lines.

Seems to indicate to me that he had full mental model of everything. Whole thing in his head at once. Clearly having it in mental model sentence by sentence.

AI would here be the word processor.

He still thought in terms of what the actual code would need to be, at that level of precision, and also wrote pseudo-code.
> AI-assisted coding, on the other hand, rekindled my passion for computers.

"Walking on stilts made me taller"?

> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.

Why? What makes you think your data structure design, architecture and algorithms are ever going to surpass AI in the near future?

You honestly can't see a (near) future where those 3 elements are done by AI, not by you?

I understand why people value the code John Carmack has released but I do not understand why people value his public statements.

"eventually id Tech 5 is going to be open source also. This is still the law of the land at id"[0]

"Great! I think Microsoft has been a good parent company for gaming IPs"[1]

By sheer coincidence, John Carmack is peddling machine generated code.[2]

[0] https://web.archive.org/web/20081003111457/http://www.linuxg...

[1] https://x.com/ID_AA_Carmack/status/1308069857913720832

[2] https://80.lv/articles/john-carmack-s-agi-startup-keen-techn...

I have a new theory as of this moment.

Elon Musk, Paul Graham, Steve Yegge and now, sadly John Carmack. Your average hacker scoffs at the idea of religion or faith, but somehow is comfortable with complete unquestioning fealty to whichever person who did something interesting with technology in the past and made enough money to afford drugs you don’t get arrested for and then they started prophesying.

Before you stone me, remember every prophet was downvoted in their own forum.

The nice thing about religious faith is that most minds can hold only one at a time. I may believe in an oddly resurrected deity who took the shape of a man, but I don't have room for anything crazier.

"We are fools for Christ's sake." 1 Corinthians 4:10

Sure, but it is that Christ, Buddha or any of the other incarnations of the same idea? I am right there with you, believe it or not, but don’t John 3:16 the wrong football game.
Is that the nice thing about religious faith? Polytheism seems somewhat more tolerant of others. And religious pluralism takes in one step further.

I am sure about few things, but it seems to me that monotheism and religious exclusivism at some times represent the worst aspects and outcomes of religious faith.

I see it as those who learn to use AI effectively are seeing massive benefits. Those that haven't seen those benefits are still skeptical.

Someone who's seen the benfits, knows, with proof, the benefits exist. They're like Copernicus who realized the plants go around the sun, not the earth. The others are still like those who look up, see the planets go around the sky, and can't believe the earth is not at the center. They then shout "you're lying, you're crazy, burn the hertic!"

The story of the discovery of heliocentricism is a lot more complex than this; the people who didn't immediately accept heliocentric theories (including the ancient Greeks - look up Aristarchus) often had good, scientific reasons for doing so. Or just look up at the sky at night yourself and ask yourself how you, personally, would confirm it if someone told you that what you see in the sky is better explained by the Earth moving around the sun than the sun moving around the Earth.
> those who learn to use AI effectively are seeing massive benefits

The massive benefits should be visible to outside observers as well, but where are they?

> Elon Musk, Paul Graham, Steve Yegge and now, sadly John Carmack. Your average hacker scoffs at the idea of religion or faith, but somehow is comfortable with complete unquestioning fealty to whichever person who did something interesting with technology in the past and made enough money to afford drugs you don’t get arrested for and then they started prophesying.

Why do you characterize people you disagree with as having "complete unquestioning fealty" to any of these figures who did something interesting with technology in the past? Seriously, why do you think that accurately characterizes anyone's view? I think this observation that John Carmack made on Twitter has some merit to it - it doesn't mean that I worship John Carmack as my god, or even that I think he's necessarily correct about any other issue. And why would I need to do either of those things to think that the one specific observation of his that we're talking about in this thread has merit to it?

I am not lumping everyone in, more observing we are still amplifying the signal from radio stations that should have ceased broadcasting years ago.
Don't throw the baby out with the bathwater. It makes more sense to read his 'public statements' and judge them individually rather than in aggregate. No one is correct all the time.

As for this current post (just a tweet really, public statement sounds overly official), I think he's making sense. If you don't follow industry trends, you'll eventually be out of touch. Whether you're a senior software engineer or engineering manager, keeping current with the evolution of tech will make you better at your job. Today that happens to be related to following AI developments, but it applied equally to learning higher level programming languages in the 90s, or big data engineering practices in the 2010s.

Yep. Having to type the code is a form of accidental complexity, and with it gone, you can focus more on the problem to solve, getting it down faster.

Of course it's possible for it to go off the rails. Consider that a wildly swung sword can do damage you can't do with your bare hands. To prevent this, constrain your model to the solution shape you want by grounding it; give it contact with reality; ways to run the code it's generating and refine it to meet your goals; granular tests; etc.

The new job is in how you wield the tools and it is at least as complex as the old.

'Make sure you don't fall behind!!!' is my least favourite type of post about ai. There's resllt nothing to learn about ai. You're just typing and telling it what to do.
the point of AI hype is to increase shareholder value.
This is like saying there's nothing to learn about programming, you're just telling a computer what to do. :)

It's partly true, but where this logic gets stuck is software engineering, for both the cases.

Just telling the AI what to do won't get you to good software, especially when you want to use dozens of agents working in parallel, when you have something correctness sensitive, when you want the AI to try and solve a research problem you have a hunch about but not a concrete solution.

but the solution, ironically, is not learning more about ai, but learning more about good software engineering, so you can tell when the ai is not doing it
No, software engineering is fundamentally changed because of AI. No amount of digging our heads in the sand is going to undo that.

For example, the traditional best practice cycle of "small incremental change, code review, test, commit" is pretty much obsolete now. The way ten collaborating agents can make short work of a complex project is not something that fits in with our existing software engineering wisdom at all.

We are still trying to figure out the new science of software engineering. And the best way to get better now is to just figure out what works and what does not for your use case.

Yeah I'm hoping AI can bring us back to software engineering of 20 years ago. Where studying the solution to a problem, finding clever solutions, getting everything to work without getting buried in little concerns is really important and "best practices" can just be a line in agents.md and the uninteresting part can just be handed off.
I'm not talking about the transient aspects of producing software; I'm happy to accept that AI will change that, but also I feel that it will change it in ways that really aren't very hard to learn, and truth be told the more time that passes the smaller the gap will get as the agents get more capable.

what I am talking about is principles that govern what good software looks like, what properties it has to satisfy in order to be extensible and maintainable and performant and all that other good stuff, and the AIs are not going to make that knowledge obsolete any time soon.

> what good software looks like

I think this will change quite a bit too. Code being readable is one of our core tenets. Functions fitting within, approximately, a screen of code used to be ideal.

Modern AI as already past solving that problem. You can give it a million line codebase, ask where something specific is happening, and it'll tell you in less than a minute.

If we can de-emphasize readability, what do we gain?

Custom hand rolled containers and data structures for your use cases are somewhat frowned upon unless really needed. Well, probably not anymore.

What about a manually inlined mega-function with loops unrolled that pre-empts some of the compiler's work? No way that would fly a couple of years ago. Already seeing this in performance sensitive code.

The system that solved Navier-Stokes certainly was not about OpenAI engineers just typing and telling it what to do.
The recent advancement in math with the Riemann Hypothesis by Jared Sumner was basically him saying "you can do it! keep going!", however.
Also the thing that is infuriating is, do people obsessed with using AI for everything not realise that, they are surplus to the entire process? They are doing 'prompting' or whatever but the end goal will eventually be that they are obsolete and will not be required. Companies will just endlessly, automatically pump out AI generated stuff without any human intervention at all. The tools they gloat about will be closed up and they will not have access to them any more.

You're not really 'keeping up' with anything, you're just fooling yourself into being part of a process that wants to eradicate your presence.

It's almost like embracing this stuff is giving them an illusion of control they don't have

Why are we always at war?
Competition drives innovation
I mean, there is still a place in the world for a Kung Fu master… it’s just not as someone trying to win in an anything goes combat competition.

If you think there are going to be as many jobs in the future for people writing all their code by hand, I hate to break it to you. However, there will still be some jobs, and fewer people who want to do it. It will still be a path for some people.

"don’t be the out of touch Kung Fu master"

posts on Twitter

Ironically, this post comes off as out of touch. The purpose of the various martial arts isn't just to win in a life-or-death brawl. Similarly, the point of programming isn't just to generate as much code as possible, or only to be more "productive".
Martial arts acquired that purpose only once they ceased to be a practical mode of combat due to technical advancement, that's the author's entire point.

Knitting likewise went from how 'clothes are produced' to 'something people do for fun'. Drawing used to be a practical method of capturing likenesses and became 'art' after it was effectively replaced by photography for the original purpose.

In Musashi's era, meaning the late 1500s, kendo (sword fighting) was absolutely about being as "productive" (read: lethal) as possible.

As it happens, Musashi lived through the era when firearms were introduced to Japan, and participated in the decisive Battle of Sekigahara (1600) where both sides used them extensively.

The end of the Sengoku Jidai was triggered by a warlord (Nobunaga) who equipped his armies with massed ashigaru levies armed with long spears and tanegashima arquebuses. It was absolutely a technological brawl where the valiant highly trained cavalry of warlord's like Takeda Shingen got mowed down by the bullets of musketeers stationed behind well prepared and covered firing positions.

If it was still going on today, the warlords would be adopting drone warfare and vibecoded 3d printed cruise missiles.

Code in most organizations is a means to an end to produce an actual product.

The job of a SWE is to not produce the most sublime readable code with cute language bells and whistles that you can show off to your other programmer friends. Yes its fun to do and interesting, but the main value in writing code is to express your intent so you and other people that are working with you can actually build something of value.

Software has value to the people on your team reading it. The product that you create with your software has a far wider impact than just that. As such, there is for _sure_ optimization pressure on "professional software engineering" to be more productive and actually make the product better to use, faster, with more features users like. The user typically does not care that you used a new C++26 feature, as much as I enjoyed writing it for them.

If I can produce features for users faster and I can iterate on them faster, this is a boon to me. I can program by hand for fun all I want in my spare time, but if I want to produce value for someone else, it is economically infeasible for me to be a luddite, and I will simply be outcompeted. Previously you were outcompeted by smarter teams who out executed you (and who also worked more), and now you can be out executed by basically anyone using an LLM who actually understands that the end goal is the product, not the code used to make it.

You're reducing programming to its utility in producing exchange value in the captitalist political economy. That's what "value" means in this context. That's exactly what I'm pointing out. Programming is more than that, if you can think beyond your current economic constraints. Your life's activity ought to be more than just a tool for producing capitalist exchange value.
People are used to paying for food. They delight in paying more for highly rated Michelin starred food, even. Software is the opposite. People really really hate paying for software. It should all be free! The fact that making an additional copy of a piece of software is basically free vs creating an additional plate for dinner is very much not, has a lot to do with that. For sure. But it also means that I don't see a future where the "capitalist political economy" truely "values" aka pays seriously good money for a bespoke, handcrafted, no AI slop here, version of Photoshop to be run only once, and then you poop it out later.
Absolutely correct take. People are so caught up in doing the bidding, they forget what it is all about.
Products in most organizations are an end to making profit.

The job value of an SWE is to maximize that profit. It doesn't matter if the product is better to use, faster, with more features users like - that's an early 20th century model of value production.

What matters is how much money the company can extract from its customers, and how little it can pay its employees. Use dark patterns, increase lock-in, and switch to a rental system with recurrent payments. Minimize employee benefits, require broad non-compete agreements, have long vesting periods and lay people off before its reached, or simply fire them and order the others to pick up the slack using AI.

If you want to write software meant to please the user, do that for fun in your spare time -- though remember that your employer still owns your IP, so it's not like you can create a market competitor.

/s

The Luddites were not opposed to machines. They were opposed to bad labor practices, with machine-breaking as way of applying pressure on employers.

The whole latter part of the post is exactly about that.
As someone who did train one of the traditional martial arts for a few years, I appreciate the comparison.

I don't know how much weight your "just" is meant to carry, but I remember a culture of cope and excuses about why "my" flavor wasn't the winner of any MMA event.

But at least I got some exercise, strength, and flexibility out of it.

I think it's an interesting analogy, not to be dismissed so easily.

Japanese martial arts generally come in 2 forms. -do (the way) and -jitsu (the art). -do forms are about self improvement, -jitsu forms are about effectiveness. You can see this with judo and jujitsu. Carmac is clearly aware of this difference as he says:

"We aren’t there yet, but carefully writing code completely by hand is moving from a -jitsu to a -do. "

IIRC Carmac has done judo (I'm not sure to what level).

Everyone who writes enthusiastically about AI already has the benefit of having worked without AI. They have been schooled in the basics. Enough of us know about data structures, concurrency, networks, language design etc. from the ground up that the knowledge is passed on. I worry about the world that we will be living in when a whole generation has skipped learning the basics the hard way. Given the attendance rates at various educational institutions, I fear that day is already here.
Right, I weirdly feel like we are entering an era where industry doesn’t invest that much in training the next generation - it feels like a rich getting richer scenario in all aspects of society
I think mathematics is feeling that concern with training acutely. The average math department pays its way by teaching in all forms and all levels: they don’t bring in the magnitude of grant money that concretely impacts a university’s budget. But they are already dealing with the consequences of that - that’s why universities that are cutting due to “low student demand” are going after math programs.
> I worry about the world that we will be living in when a whole generation has skipped learning the basics the hard way.

Have you been schooled in farming? Raising livestock? Milking cattle?

> Have you been schooled in farming? Raising livestock? Milking cattle? Does your ability to cook good food ...

For me, AI is the equivalent of automatically managing everything from farm to table, where the human just says what they want. The next generation will have lost hands-on experience with growing, tilling and cooking.

It's not there yet, but rapidly making it a reality.

There is no one "tech". Different pieces of technology have different levels of effect on the world, and different timelines in which the world can come to terms with it. AI is the thermonuclear weapon introduced to a musket world ... it came upon us suddenly, and instantly flattened the talent/merit based economy. Now everyone has access to the same exoskeleton; the difference between muscles is not important.

The second huge difference between AI (and ordinary tech) is that a literal handful of people are in control of its direction. That kind of power breeds fascism.

> That's a problem with society, not technology.

Semantics. The tech directly enables the incredible power imbalance, and helps seize the means of consensus and debate and reporting. There is no incentive/mechanism left to fix society. An advanced society like the US is weaponized against vaccines, and social media and AI are to blame.

> That kind of power breeds fascism.

uhmmm what have y'all been doing to prevent fascism and wealth inequality up until the point BEFORE AI became a thing?

What did y'all do about the mandatory government IDs required to access the internet?

What did y'all do to prevent police brutality and unaccountability in the USA?

AI is the ONE thing that COULD give the common peasantry a chance.

maybe that's why so many fires are being stoked against it.. *thinking emoji*

You do realize that the same powers that have bred fascism and mandatory id requirement are hand in glove with the AI oligarchs, no? They gain with rampant use of AI disproportionately more than the peasant.

The peasantry stands no chance. Unless there is a French Revolution style uprising

I haven't been schooled in farming, but my understanding of food has greatly increased since we started growing our own vegetables.
Yes, but that still has little bearing on actual cooking skills, no?
Knowing how to go from whatever is fresh today in the garden to a meal is a cooking skill, yes. And how to preserve gluts of fruit, also a skill.
I mean, if I grow my garden and just provide you with the vegetables,

does that affect your cooking skills in any way?

In fact, if you divide your time between growing your own produce AND honing your cooking, both of those skills may suffer

compared to devoting your time to just focusing on one ability.

Otherwise if you try to do everything you'll never be as good as a full-time farmer or a full-time chef.

or how about another analogy:

Say one day your idea for a dish requires softer or sweeter carrots, etc, but oops you spent the last season only growing crunchier and mellower carrots, what're you gonna do now? With external suppliers you always have a wider choice of ingredients better suited to the end product you want at any given time.

Some people are schooled in farming. Farming is not some kind of lost knowledge people dont practice anymore.
>Have you been schooled in farming? Raising livestock? Milking cattle?

No! And good thing I'm not a farmer!

I read your first sentence as:

> Everyone who writes enthusiastically about AI already has the benefit of not having worked with AI

... because if you really do, and you actaully a capable developer, you become much less enthusiastic.

Anyway, definitely agree with your point, and let us also remember that it is our human output and expression which LLMs are trained on.

Herodotus wrote about finding people living in the ruins of a great city (Babylon) who had no idea who built it or how they built it.
The city of London was abandoned for about 400 years and fell into ruins after the people who built it left.
I think that anecdote is from the Anabasis by Xenophon and refers to Assyrian city of Nineveh. Babylon was still occupied during the time of Herodotus and was one of the biggest cities in the world at the time. (the book spends some time discussing Cyrus's conquest of Babylon).
I don't think with the models we have, you shouldn't need to even write a single line of code. What you need is to prompt it right, check for over engineering, check for edge cases, test it very thoroughly. That means don't accept it writing 10,000 lines of code that you cannot review or test properly. Make modules small enough that can be reviewed/tested properly.
Use and learn the tools, even if it sucks and is painful. It does not take long to feel how they work at all.

Once you have that you can pick and choose when to engage this new tool at will to "not fall behind."

It doesn't have to be all or nothing.

> WorldEnder

> Its just that, it used to be free. All I needed was a computer.

https://xcancel.com/rustishard/status/2098853622263976328#m

Same here.

In particular regarding free as in freedom, so about access and control. Just like I never enjoyed working with proprietary coding platforms, OS, or IDEs, I’m not particularly excited about proprietary models.

HN is loaded with out of touch Kung Fu masters. They were the loudest skeptics against AI. Still a lot here.

It's human nature. If your identity is defined by your kung fu and a technology is about to obsolesce your kung fu, then all logic goes out the window as you go all out in protecting your identity. It's mostly for themselves. They have to lie to themselves and tell themselves that they still "matter".

I've been doing martial arts for more than 20 years, some in TMA, some in modern boxing/kickboxing. I have yet to meet an "out of touch Kung Fu master" in person. Nobody thinks they can clear the bar or win in a ruleset they haven't trained for. I mean I don't deny Frank Dux, George Dilman, and the DUST guy exist, nor do I support their claims. It's just that they are larger-than-life personalities to start with and I haven't met them in person.

Similarly, most of the programmers skeptical about AI---me included---don't really do so out of a threat to a domain we've mastered. The problem is, models, to this day, need supervision so they understand requirements, so they know where to properly look for prior art, so that they "understand" the existing architecture. That includes you, Claude. Our kung fu has been six months away from obsolescence since roundabouts 2022 and in 2026 they even rehired a bunch of out-of-touch kung fu masters.

It's funny that we almost agree except you have it 100% backwards.

The out of touch kung fu masters are all retired or close to it. They continue to shout about their big bet on AI as loudly as possible to protect their egos and, as a last ditch effort, whatever money they threw in.

After all, everyone who is mid-career and younger cannot possibly be a master of anything. Of course they're using AI at work, but that is an extremely far cry from the AI actually helping. They use it because it's shoved down their throats and they don't want to rock the boat. Working extra hours from home is the perfect way for everyone to save face.

In other words, the older generation is delusional. Nobody is surprised except the older generation.

I honestly feel personally attacked by this and I don't consider myself to be an out of touch kung fu master or technologist at all. It is just very odd to read such an inflammatory comment on HN and then have people pretend this is correct and perfectly socially acceptable to say.

Like put your shoes into the person you are arguing against, with some empathy, would you want to be treated this way?

Funny thing coming from a person with such a bio.
> The introduction chronicled the evolution of swordsmanship and martial arts in general from pragmatic battlefield necessities to sports, historical curiosities, and hobbies.

Eh? Martial arts has always been a mix of utility and cultural artifact.

Greco-Roman wrestling flourished in a/alongside of military utility. Greeks and Romans had swords, shields, spears, bows and arrows. Boxing also traces its history all the way back to the Greeks.

Japanese, Korean, and Chinese arts developed in a society with, also, swords, shields, spears, bows and arrows. Notably these cultures often included weapons training ("kobudo" in Japanese) in their curriculum but that did not phase out the empty-handed aspect of the art.

Catch wrestling developed among sailors who would not be strangers to guns and rifles.

BJJ developed, well, today.

There has always been a component of sportsmanship and self-improvement in martial arts. Carmack misreads this introduction, methinks.

My problem with AI is not that they aren't useful, John. Like everything else in life the question is what we shape ourselves to be as a culture, as a community, what is a path we want to take. It's not on the same scale than ditching assembly instruction for a C compiler.

I get why most people get with the flow of what competition taught us: if you can't fight them join them. Yet I think it's demoralising we're force to live the life force upon us by a few techbros, without real collective intelligence about the use of our resources and goals. Again, always been a bit that but never at this scale.

We're souless automatons feeding a machine god.

So what does this guy have to show for working on AI research for more than half a decade at this point? Apparently full time too.
His analogy might be accidentally appropriate given MMA-fighters propensity to develop CTE.
So, don't be John Carmack. Got it.
The author of the work that John Carmack is referencing is named Musashi, which is also the (coincidental?) name of a WW2 Japanese Yamato class battleship, which is quite fitting. Musashi the battleship having met its end at the hand of carrier launched aircraft, which remain a dominant technology to this day.

Aircraft carriers are to a small extent superseded in their own right by strategic bombers and ballistic missiles. We may see nuclear aircraft carriers eventually superseded to some extent by missile/drone swarms and missile/drone deployment platforms, or some other threat.

If the new dominant technology, military in the sense of being used to dominate your adversaries in any arena, relies on data centers, is that infrastructure considered pretty robust? Will that data center infrastructure fully supersede the nuclear powered aircraft carriers, as has been done to battleships? Do hardened data centers and the software they run represent the main locus of national front line capability? Are AI researchers more like WW2 pilots, or are they more akin to the people who worked on the Manhattan project?

This post makes me think harder about physical computer infrastructure. Continuing the metaphor, silicon fabs, computer manufacturing supply chains and their related infrastructure are certainly the WW2 drydocks of our modern conflict, the WW2 drydocks having been critical for the Americans to churn out aircraft carriers. And the drydocks were only one piece, but might have been considered one of the most brittle.

Some seemingly brittle pieces of AI/data center infrastructure today are the fabs and the communication links. As far as I know, the fiber optic cables connecting continents are so exposed it's almost ridiculous, the cables lay directly on the ocean floor. If severing these links favors one or another global actor, my main question is why hasn't this already been done? You can ask the same questions about severing oil pipelines and the various global shipping chokepoints. I do wonder if fiber optic cables are defensible at all in the final analysis. And what life would/will be like without fiber optic connection between continents.

I'm not sure how much more durable satellite links are, due to the cascading debris effects of Kessler syndrome.

A key idea is that if the transoceanic communication links between the Americas and Eurasia were to be cut, either powers based in Eurasia or a power based in the Americas would gain an advantage.

Semiconductor fabs... Well, if I were a military strategist in charge of national security, I definitely wouldn't publish the location of every fab. And a a self respecting superpower wouldn't leave its EUV machine production external, or would it?

Fabless semiconductor companies and AI researchers are critical to current national security capabilities in the way that people who developed radar were critical to WWII. In the long enough term some people think that eventually data centers and the software running inside will supersede and encompass these functions. The question being increasingly not if, but when. Some people think that if it can be done by a computer, it eventually will be.

It really is all about timing, the Japanese thought the Pacific conflict with the USA would be short.

John, if the introduction of the translation of Book of Five Rings is so good, could you please share the identifying information including the translator or the person who wrote the introduction?

It's interesting to see how over the span of just a few years a lot of people went from:

> Architecture astronauts are out of touch and shouldn't give any advice because they haven't written code in ages. Only the hands on engineers can shape it since the design evolves in step with writing the code.

To

> I focus on the architecture patterns and high level goals and let the LLM take care of the rest.

Similar commentary was shared about anyone not writing the code daily, not just the architects.

No gotchas, I just think it's something which calls for introspection.

I think they are lying to themselves. The patterns change with the hardware and environment, i sure code different and use other data structures when having to account for VRAM now, network security, etc.

Going from the specification to the code is not a one way street. You adapt the whole chain. Saying the only thing that matters is the spec is squinting your eyes and hoping for the best.

You stop learning how things actually end up in memory, compute, storage and network this way. Not sure how you can build a secure and fast spec then.

And even if you do know i never understand why not typing it out. You can use a lib if you don't want to worry about these details or know you are not skilled enough (tls f.e. ...). But having AI do it introduces uncertainty where there can be determinism.

I think it's just laziness and people not liking the pain of learning or needing to show off whatever first. Who knows. Still don't see a reason to use these tools outside of learning or whatever i used a google search for before.