347 comments

[ 3.4 ms ] story [ 174 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.
LISP has been around since 1959. To the point: the proclaimed advantage of operating at new levels of "abstraction" is not a novel contribution of LLMs to coding.

Put another way: live coding, meta programming, high level abstraction, all have been possible for some 60 years now. Two generations! We don't need the monstrous amounts of accidental complexity involved in running dozens of GB in RAM for LLMs and all the "harness" apparatus, we have had from the right tooling for almost a century (!) now.

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.
Well. First they came for the testers. Then they came for the developers.
>> 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?
Careless drivers got weeded out.

Cars today are safer than ever. Drivers (in my memory anyway) have never been worse.

If only the careless drivers were those crippled or killed by their poor driving, it'd be a self-resolving issue as you imply, and nobody should care.

However, what actually happens is that careless drivers often cripple or kill innocent bystanders in other vehicles as a result of their poor driving. That's why seatbelt laws and improved vehicle safety features are a good thing.

But surely then you agree they are having an effect. Thus my analogy serves its point - test coverage isn't to be dismissed out of hand.
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.

But 20 years ago is now 2006, and unit tests were well established as a best practice.

I agree with the spirit of what you wrote, but my recollection of the timeline is different. The first decade of the 2000s was peak Crazy Agile Advocacy, but IIRC it wasn’t until the 2010s that unit testing really became almost universal practice. Much before that and it was still tangled up with XP, TDD and lots of other things that certainly weren’t universally accepted as good practices (notwithstanding the strident advocacy of a certain group of consultants/authors/speakers/bloggers and their fans).

I remember, back in the mid-2000s, when we had some consultants brought in to talk about different aspects of quality and testing. There were several working groups, each led by one of those external consultants, and one of them was about unit testing. This was in a relatively large software development organisation for the time, a few thousand people, and while some parts of the organisation had some form of automated testing operating by then, it definitely was not the case that the well-known products produced by the organisation all had a unit test suite. Other practices we’d consider routine today, such as peer code reviews, were also in their infancy during that period: some were doing them, many were not, and generally we had much less experience of how to do them effectively than we have today.

As an industry, I don’t think we really matured in how even the most ardent fans of unit testing were writing test suites until the 2010s either. In the 2000s, we still had lots of people mocking the entire universe and then writing unit tests that were 99% testing those mocks because of 100% test coverage requirements, and similar dogmatic nonsense.

By the 2020s, I think there was much more awareness of that automated testing is generally a good idea, but there are different kinds/levels of automated testing and finding a mix that suits each project’s specific needs is important. One of the great benefits from the more recent AI tools, particularly the agentic ones over the past year or so, has been that it has clearly demonstrated both the value of a good automated test strategy and how much of a waste of time vacuous tests are.

> 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.

The fatigue aspect matters too, but another important point I was trying to get across is that not all reviews are created equally. In a working, well tested, properly factored system, with a high quality PR, I can do a cursory, local analysis of the new code and be very confident that it works. AI code I've seen is ... not that. I wouldn't be comfortable in that review without manually checking preconditions and postconditions, defining invariants, examining lifetimes, and a host of other activities. Moreover, for a greenfield replacement of lots of SLOC, I'd expect that most of the code for the early PRs can't even meaningfully run or do anything important, making any sort of broader architectural analysis impossible.

I could see a world potentially where they came up with a magic prompt allowing each proposed PR to be cohesive, shippable, well factored, and everything else you need to be able to actually review it at a higher level and be comfortable with the results, but I'm skeptical. That's a major innovation if they managed to do so even as a one-off, and that wasn't the thing they highlighted when talking about the project.

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.

10x loc? wow. That makes me wonder how it will perform. And how you will review that, since if it is physically impossible for a human then who will take responsibility for what you release?
Benchmarks look good.

Reviews? They were the first casualty.

In my experience, when you attempt something like this it grows like a crystal. If you start badly, with poor tests and poor architecture, that is the code that has the attention of the model going forward. More than any rules you give it, what matters to the model is all the code that’s already there. I’ve found myself in such a situation from going to fast and expecting new hyped models to “just take care of it”. The solution was to stop and take stock. I ended up deleting most of the dead-end and using the models to refactor the rest. From that point on, new code from the models was at the standard I needed, following rules already expressed in the code base.

If your code base is script-kiddy garbage, your models are only going to keep writing more garbage. You should throw it all away. I expect that isn’t an option. Try instead instructing the model that the code you have is legacy garbage written in a hurry that needs siginificant refactoring, but that right now I need one new feature written to these new standards instead. Take it one small piece at a time. Don’t let context go beyond 100k. Good luck!

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

Can you be more specific? "Improve structure" can mean different things to different people.

We've ensured that agents strictly adhere to code architecture rules, using both agentic review rules and deterministic CI gates. Everything from file naming, location and namespacing to the "shape" of each file that shares the same role are consistent. We can trace functions of the same role across the same set of modules, with abstractions and code reuse where they make sense. Once someone learns the code in one part of the codebase, their understanding of that "spine" translates to other areas - the only differences relate to the specific business rules governing those areas.

>> 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.

Code review was difficult at the start due to the volume of code. One insight we gained midway through though is that the value humans bring to code review is judgment and business context. So we created a code-atlas skill that creates an artifact for PR reviewers. That artifact highlights the most important parts of the code. For example, if a PR author has made the choice to use soft-deletes when the product uses hard-deletes for everything else, that is flagged by the code atlas, and a human reviewer can use that to ask questions about it. Meanwhile, things like boilerplate are de-emphasized; any problems associated with them are reliably found and flagged by AI reviewers anyway. The refreshing part about this is that this has almost completely eliminated bike-shedding: people no longer argue about module naming or whether a comment is worded properly.

> Code review was difficult at the start due to the volume of code. One insight we gained midway through though is that the value humans bring to code review is judgment and business context. So we created a code-atlas skill that creates an artifact for PR reviewers. That artifact highlights the most important parts of the code.

Yeah, we did that, too.

But every time I end up, for some reason, digging up deep in the code, I realize that it's not nearly sufficient in our case.

Awesome. Any further writeups? Would love to read.

Also what kind of problems did you have with LiveView?

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 feel like using LLMs as a sort of deep search to find bugs and security issues is going to end up relatively uncontroversial all around, if the externalities of LLM use are ever taken care of.
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.

Miyamoto having an assault rifle doesn’t exclude 19 year old cannon fodder also having assault rifles and spraying them liberally to little effect.
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.

That's really sad! I'm sorry for you. If you try reframing it, maybe you can find joy again.
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.

So which is it now? Do you hate thinking about algorithms and data structures or do you hate writing code? Or both?
> 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.

leetcode and data structures are 2 different things. Just like a marathon and jogging in the park
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?
that's a dumb comparison.
Did Michaelangelo paint his works himself, or did he buy a bunch of slaves and give them some prompting?
Eh, take your fav painter then.
(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"?

More like, not having to read the docs of a library or a domain with a million gotchas is a bummer and best avoided if possible.
> 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 can and I'd be okay with that too. The world doesn't have carriage makers anymore. Nobody is entitled to doing what they love or what they are good at. I certainly didn't as my job as a software engineer, despite being profitable, was far from what I like in the discipline.

That said, I think AI is still many years or decades away from completely replacing the Software Engineering profession. My kids are entering college right for a CS degree and that's what I tell them. I have skin in the game as I'm ultimately responsible for them.

I could be wrong, but anyone's opinion is at most an educated guess at this point.

I'm exactly the opposite. I like knowing how the code works, what the data structures are, what APIs are being used, and yes even typing the code into the editor. When I'm working with LLMs there's less thinking. I'm bored. My brain is not fully engaged in the task. There's less sense of accomplishment in the finished product.

I also prefer to drive cars with manual transmissions.

Yes. You are the Kung Fu master in Carmack’s analogy.
Not necessarily a bad thing. Just because Carmack has an optimistic view and has some catchet in the programming world doesn't mean he's any more correct than a raving lunatic. Frankly, he said relatively little of substance and it's only made more irrelevant because he's said it from a priveleged position.
>Not necessarily a bad thing.

Agree. I made no judgement call.

>Just because Carmack

"Just because a man, who has some cachet with mountain climbers for being the first to climb mount everest doesn't mean he's any more correct about how to climb mount everest than a raving lunatic". That's your pitch?

Carmac has shipped massive selling, fun games, using low-level, innovative techniques, back when such crazy shit was necessary. The issue is the difference between what is necessary ("Miyamoto") and what is prescriptive ("Kung Fu").

I agree, if he were talking about programming a game. But he's not. He's talking about how to have fun from a priveleged position....

If Carmack said, "you're wrong in your game design, here's how to do it instead", yeah I'd listen. Same as if Kasparov gave me chess advice. But if Kasparov said, "AI won't take the fun away from chess" then how the hell does he have any expertise on that when he's spent the majority of his chess career without AI. Let's keep in mind that he made it to world champion before Deep Blue beat him.

Do you consider yourself to be part of the retro computer scene?

> That’s ok! The retro computing scene is delightful, full of people building and exercising old skills for the love of it.

What's stopping you from slowing down and doing those things even with AI?
> I like knowing how the code works, what the data structures are, what APIs are being used, and yes even typing the code into the editor.

I'd say it probably depends on the kind of work you do - if the low level details are exciting then that's totally understandable. But if you're dealing with more rote CRUD work or soul sucking enterprise bullshit, then probably less so and the low level details are obstacles to getting things done, alongside sometimes unreasonable workloads.

I'm reminded of: https://www.stilldrinking.org/programming-sucks

> Every programmer starts out writing some perfect little snowflake like this. Then they’re told on Friday they need to have six hundred snowflakes written by Tuesday, so they cheat a bit here and there and maybe copy a few snowflakes and try to stick them together or they have to ask a coworker to work on one who melts it and then all the programmers’ snowflakes get dumped together in some inscrutable shape and somebody leans a Picasso on it because nobody wants to see the cat urine soaking into all your broken snowflakes melting in the light of day. Next week, everybody shovels more snow on it to keep the Picasso from falling over.

That said, AI will probably saturate most CRUD work first, which doesn't make for great job prospects.

> I'd say it probably depends on the kind of work you do - if the low level details are exciting then that's totally understandable.

Even those who work with CRUD apps need to know things like computational complexity of standard container types, and how to pick basic data structures or choose which basic algorithms to use. Otherwise you'll end up implementing things that have an unreasonably high computational cost that will rear its head at the wrong time.

> That said, AI will probably saturate most CRUD work first, which doesn't make for great job prospects.

I think so too. Today's AI models excel at makeshift plumbing. The boring CRUD jobs are the first ones to go with a prompt.

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

I see this a lot and I'm not sure why people don't think AI will be able to do this too. The self-play training that got them writing code can be used for this too.

> 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.

This is what declarative programming gives us, not what LLM-based generation offers.

> 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.

Using natural instead of a formal language to get probabilistic results based on token fields is not bypassing arbitrary constraints of the compiler, it is dereliction of the responsibility to know and articulate precisely what you are specifying.

Would you mind elaborating on where exactly the boundary between vibe coding and AI assisted coding lies?
AI is not an abstraction and is not like moving up from assembly at all.
not that i disagree, but its funny because i just came back from a presentation from a "chief ai officer" where he boldly stated that ai is the next big abstraction for programmers (even had fancy charts and tables to boot)
Architecture is the first to be outsourced to AI, because AI shepherds have no idea how to do it.
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.

Hadn’t good developers been focussing on those things, and other high-level modelling that relates the software system back to the underlying real world domain, for many years before the LLMs were in the picture?

I’d even say that it’s one of the most reliable markers of a more senior/experienced developer that their code reads like a clear and logical explanation of what the system does and why, with concerns well separated and minor details and technicalities abstracted away so they don’t clutter the rest of the code.

I think I feel similarly to you.

M currently re-writing an app that I wrote years ago. All the issues came from data structures, queries, architecture that didn’t fit what emerged as the use case.

Now I can focus on those things and work far faster, and even ADJUST architecture, theorize about pros and cons of changes as I work … sometimes I find that some adjustments are easier than I thought.

The result is far faster development, and a more optimal result where I can stay focused on improvements / efficiency rather than random minutia.

There will always be people who will like it because they are the ones getting ahead and get some reward. If a person is rewarded for something, it's unlikely that they'll care how the reward comes or be critical of the mechanism. It's just human nature; AI has incredible downsides but those who get ahead won't mind, as long as they get ahead.

I bet thieves feel a rush when they rob a store. Does that also make it right?

> 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.

AI is getting good at picking those as well. Frontier models can be fed a vague problem, analyze the code base, and pick out an architectural solution that makes sense.

We're going from a world that needs specialized "software engineers" to speak the language of the machine into one where ordinary people need only sit down and think, "what exactly would solve my problem here?", spell it out in ordinary procedural language, and get a software solution that employs best practices without the intervention of professional computer-touchers.

Tim Bryce was right 20 years ago. Abolish programmers, bring back systems analysts!

Kinda agree with this. And your point is valid for most of the problems that we solve today as software engineers.

However, you cannot forget that there are problems where - all the knowledge of - AI don't help. Problems where letting AI do the work for you means putting more time and effort than doing yourself.

Problems where you need to be so precise in your prompt/spec that at that point you're coding in English. But English don't compile.

I like the idea of power tools vs hand tools. AI is a power tool, but that are times that the most pragmatic approach is using a hand tool.

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.

Whatever your view of religion, you are not very good at literary analysis. The verse you quote, in full:

"We have given up our wisdom for Christ, but you have insight because of Christ. We are weak, but you are strong. You are honored, but we are dishonored"

Not quite the same of what you imply is it?

But now I don't know what you think it means. Who do you think "you" and "we" are in this quote?
Go read Corinthians? I'm just pointing out it was quoted halfway through to make it sound like Paul just wrote "we dumb" in a letter.
Right. But you didn't quote it in full either, so I couldn't figure out what you thought it said.

So yeah, there's a base unit of meaning which is well beyond one or two verses (something I wish the church would learn).

> most minds can hold only one at a time. [...] I don't have room for anything crazier.

I feel you don't appreciate exactly how much "crazier" some churches/sects are, both currently and historically.

I think you got downvoted unfairly because I really think you're sincere. My brain heard your comment in the voice of Nightcrawler from X-Men—and as the descendant of German Catholics, he's become one of my favorites.
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?

Yes. People see orgs tackling more problems and resolving bugs faster.
I don't agree that people do see that, and if they do, it's hardly an overwhelming trend.
I see my org delivering twice as many features and implementing way more tools that actually solve problems.

The issue is that doesn’t necessarily mean that customers will pay more, as most of the features of software are not actually core.

Would that really count as a 'massive benefit' then?
For the customers? Yes. For engineers building tools that increase their quality of life? For sure. For removing legacy cruft? Absolutely.
Even if we just look at public markets: manufacturers and hyperscalers stocks are through the roof, while they finance private model providers that are ever pushing their IPO into the future.

Doesn't look very much like growing prosperity as much as vacuuming value into the core of the corporate world system.

> 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.
I don't think that John Carmack or any of the other people you mentioned are categorically not worth listening to because in some cases the accomplishments that originally made them famous are decades old. If you think that Carmack is wrong on this specific point, make an argument for why; I for one don't think he's wrong, and I think that putting him into a category of people who "should have ceased broadcasting decades ago" is simply avoiding engaging with what he actually said.
One of the great joys of following guys I admire like Carmack is the little smile I get when I see one of his tweets and go, "yeah, John Carmack was totally wrong about that." For example he argued that UI buttons should act on press rather than waiting for the release, and it's been a UI principle for decades that once a button is pressed you wait for the release on the button, giving the user one last chance to back out of a destructive operation by letting them move the pointer off the button and release. And I was like no, I don't care if you wrote Quake, or the Principia Mathematica, don't fuck with my UI expectations.

Carmack has cheerfully admitted to being wrong in the past, for example admitting that the Saturn port of Doom should have used the Saturn's hardware primitives for a smoother experience rather than a faithful replication of the PC's BSP renderer which made it slow. When brilliant guys like him are wrong, they often are in profound ways.

I would suggest that last line is both wildly indulgent and dangerous. Inventing reasons why someone being completely wrong is actually helpful is a level of freedom no one really deserves.
Someone being wrong almost always offers an opportunity for them or others to learn. If someone extremely smart is wrong, the gaps in their knowledge may point to interesting directions for the curious. Einstein was wrong to doubt the principles of quantum mechanics, but the conflicts with relativity he elaborated helped point the way for future physics work.

Of course, it's important to be right when there are consequences on the line, but being wrong isn't ipso facto something bad.

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.

> truth be told the more time that passes the smaller the gap will get as the agents get more capable

Yup. A lot of work is going in to reducing the skill required to operate AI agents.

> skill required to operate AI agents

For accomplishing the same task, yes.

But given these tools straight out of science fiction, why on earth would you be stuck doing the same things? There's no point spending human thought over something an agent has just automated yesterday.

Think bigger, take on more ambitious projects that are perpetually at the limits of what you and AI can accomplish.

>No, software engineering is fundamentally changed because of AI. No amount of digging our heads in the sand is going to undo that.

Yet anyone who claims that fails to procure sufficient evidence or instruction on how exactly training the to-be software engineer in the age of AI should be. Until that happens, people still learn DSA, write code manually, and train their problem solving skills with programming exercises.

And I mean handwriting them, not ordering "one solution for Leetcode 1133 in Rust, please" so we can proclaim that we're writing Rust so fast that I don't have to read a book about it anymore.

> fails to procure sufficient evidence or instruction on how exactly training the to-be software engineer in the age of AI should be.

Of course there's no instruction on how to succeed in a rapidly changing new field.

Do you think someone is more likely to succeed by getting their hands dirty and trying things out or waiting around for 'instruction' to be available?

> people still learn DSA, write code manually, and train their problem solving skills with programming exercises.

Maybe you're confusing computer science with software engineering? Of course you'd still need to learn about algorithms, just like calculators do not reduce the need of learning algebra and trigonometry.

> This is like saying there's nothing to learn about programming, you're just telling a computer what to do. :)

Counterpoint: a friend of mine who's not a developer has vibe coded multiple apps. They work just fine. Granted they're not particularly complex (e.g. domain specific CRUD type apps) - but clearly the skills required to do that are just "ability to talk to the AI" - in other words, everybody can do it.

You could also copy paste large blobs of code from stack overflow 'back in the day'.

The baseline of what you can do without being an expert has jumped significantly. My claim is that the baseline of what you can do being an expert has also jumped significantly.

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

There's nothing to learn about being an engineering manager. You tell your developers to write code, go on vacation, and come back to a completed product.
AI is built to adapt to you. ICs aren't.
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.

Everyone in Sengoku Era Japan had access and knowledge of guns and cannons.

The key for Nobunaga is "Ashigaru". Nobunaga gave the guns to the peasants. That also means that Nobunaga mass produced the guns to a level that no one else was doing.

Yes it was a technological brawl, but inadvertently it was one that worked with and uplifted the Ashigaru into a real combat force.

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.
It would be nice if I could live my life without concern for producing capitalist exchange value. However, I live under the regime of capital and need to pay rent. So my goal is to pay rent with the least amount of suffering on my part.
But we can agree that writing with such disdain about people doing literally anything else, is perhaps a bit of a bad look.

Especially if it comes from Carmack, a guy who doesn't need to pay rent any more and can in fact live the rest of his life without concern for producing value, etc etc. He is currently doing exactly what he wants, just because he wants it. And that happens to be VR stuff, currently, afaik. And that's his choice. So when he speaks deeply condescending about other people doing exactly what they want ("retro computing is so delightful") it definitely comes from a different place as "hey I just want to pay my rent".

You're reducing programming to its utility in producing exchange value in the captitalist political economy.

Well, yes? If you want to write code that isn't useful to anyone and just gives you warm fuzzies, go for it. I've done plenty of that. But it's exceptionally selfish to try to forbid technological improvements so that you can get paid to work exactly how you want to.

Does cooking food serve any purpose beyond mass producing food for restaurants to sell?

Should we ban industrial agriculture so that you can feel more proud of your rooftop garden?

Rapid, empty, and poorly integrated code that appears to work but no one bothers to understand is much less valuable than everyone seems to believe.
> exchange value in the captitalist political economy.

how can one exist in modern society without being an exchange value in the capitalist political economy?

linux is where it is because it is able to be a critical part of said capitalist political economy. even if you want to be a FOSS contributor all your life, you need someone to figure out the "economy" part of it.

food is a false equivalence in this case.

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 Luddites were not opposed to machines.

In the sense they were not opposed to all machines as a concept. They were definitely against machines they thought reduced their labor value:

"They wrecked specific types of machinery that posed a threat to the particular industrial interests in each region. In the Midlands, these were the "wide" knitting frames used to make cheap and inferior lace articles.[22] In the North West, weavers sought to eliminate the steam-powered looms threatening wages in the cotton trade. In Yorkshire, workers opposed the use of shearing frames and gig mills to finish woollen cloth.[23]"

Citations in

https://en.wikipedia.org/wiki/Luddites

Yes, that's what I wrote. "They were opposed to bad labor practices, with machine-breaking as way of applying pressure on employers."

Otherwise it would be like claiming that an industrial union is opposed to people working in factories by pointing to a strike action and concluding they members just want to stand around outside the factory instead of work.

Recall that my comment is in response to "it is economically infeasible for me to be a luddite".

If that means something like "infeasible for me to oppose bad labor practices" then collective action is the typical response to bad labor practices.

If that means something like "infeasible for me to destroy the employer's use of AI" then I think that's mistaking what they did for their goal.

You wrote "The Luddites were not opposed to machines." What you wrote makes it sound as if there was no problems with machines, only with labor practices. That's simply misleading to untrue in this chain.

You can say Luddites were not only opposed to machines they thought cost them (which was the main reason they started the trouble they did at that point), but they also (insert labor practices).

Read their writings or contemporary reports. The wiki page has ample references to good material.

Quoting the Wikipedia link you gave:

"Luddites were not opposed to the use of machines per se (many were skilled operators in the textile industry); they attacked manufacturers who were trying to circumvent standard labour practices of the time".

How is that different than what I wrote?

It’s the difference between “he hates food” and “he hates some food”.

If you don’t see the first as a not honest, misleading restatement of the latter, then we think fundamentally differently about accurate statements.

It's the difference between "Paul McCartney is not opposed to food" and "Paul McCartney is opposed to eating meat."

Here's a paragraph from p45 of my paperback edition of "The AI Con" on the Luddites:

"But Luddites were not against technology. Some Luddites, weavers in particular, were into technologies that helped evaluate the quality of their work, for instance, being able to count the number of threads per inch, such that they could fetch a higher prices at the market. Luddites were instead against technologies of control and coercion, and concerned about the loss of jobs, health, and community."

I do not think your assessment of my statement is correct.

When programmers say "pleasant to read", they usually mean something which is of real economical value, i.e. the code is easy to understand and maintain (whether by a programmer or an AI).
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).

I think you are slightly missing the mark of the historical reference.

What you say is true for modernized budō disciplines. They have very different purposes.

But this this is not what Musashi was concerned with. He was practicing kenjutsu (not kendo) / writing about hyōhō.

The primary criterion was absolutely murdering people as efficiently as possible in a life and death situation.

"The true Way of sword fencing is the craft of defeating the enemy in a fight, and nothing other than this"

> The purpose of the various martial arts isn't just to win in a life-or-death brawl or murder people as efficiently as possible

That's a retroactively-applied justification to save the embarrassment for martial arts that don't make the cut for modern CQB.

When photography came out, artists redefined their purpose as not being about realism.

Similar has already happened with martial arts, as the OP mentions, and you've been taught the new definition not the original one.

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.

Constraints are a good thing. I'll get creative with what I have, instead of having to rely on a supply chain that makes everything available to everybody all the time. I don't have to have apples grown on the other side of the planet.
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!

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

You're equating life skills to professional skills. I was not taught to milk a cow, but my milk comes from someone who was. The topic is whether software engineers in a professional context learned certain things about software.

> my milk comes from someone who was.

Your milk likely comes from an automated milker machine..

The tooling for industrial farming is reliable on the scale of millions though, and the same for any other innovation that has replaced older ways of working. AI is in a weird place because it is not 100% reliable, and we do not know if it ever will be, but we also do not know if it will eventually good enough to where we are irrelevant.

If tractors plowed reliably 95% of the time, but unless carefully monitored the other 5% of the time they would blow a big hole in the ground, it would be difficult to abandon your shovel entirely.

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 thought it was Xenophon. MSCopilot assured me it was Herodotus. The irony! ;0)

(I spent a few minutes checking, but couldn't find the original quote)

Given the context of the thread, what you have done here fits so perfectly.
I think this has long been the norm without AI. Just look at a lot of politians cheating with their university tests, outsourcing the work that lands them their titles to low earning ghost writers. Why do you think so many incompetent people rise to powerful managerial positions to make terrible decisions without consequences. It's probably going on for much longer than we all think because it's not always easy to find hard evidence and we're all trained to treat circumstantial evidence. How many scandals were there of influential people buying their kids into elite colleges? AI is just accelerating what's been ongoing already.
Tech priests reciting blessings to the Omnisiah. Time to do the blessing of checking how much 5h usage I have left.
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 just that they are larger-than-life personalities

That is a very generous assessment of Frank Dux and George Dillman.

Dillman at least started off as the real deal. Dux was a total fantasist. I still find it hard to believe any bought into his 'blood sport' story, let alone made a film about it.

People who are out of touch don’t know they are out of touch. Thats why you haven’t met one. Because they all declare themselves as relevant. And this is also why you can’t recognize yourself as out of touch.

How do you recognize someone who isn’t lying to themselves? It’s hard. There’s no definitive answer but lies people tell themselves tend to be rosy and comforting. When someone tells you their own identity has been eviscrerated by AI that’s not a comforting lie. It’s more than likely a practical analysis.

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 never commented on age. So we are actually in perfect agreement. Yes, older people tend to have their identities and expertises ingrained. They have more to lose in terms of identity.
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.
You feel attacked? I’m only referring people who are out of touch and lying to themselves. If you’re not doing that then it’s not you.

Unless if you feel it’s referring to you then you’re saying what I said is true. If what I said is true, then it’s not an attack is it? I’m just spitting facts. So don’t get offended, don’t think of it as an attack.

> 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.

  > We're souless automatons feeding a machine god.
whats the machine, capitalism?
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.

I'm one of (if not the) original architecture astronaut, so you may not want to listen to me, but you're sliding from "architecture astronauts are bad" (true) to "architecture doesn't matter" (false).

Arguably, architecture is the only thing that ever mattered. Below the level of architecture you're dealing either with algorithms or API calls. Algorithms can be validated by tests and API calls can be validated by tests and the type system.

But architecture is the one thing that could make or break a project and that you can't test for ahead of time. You either know how to create a good architecture or you don't. In fact, the whole point of the Spolsky's Architecture Astronauts' essay is that bad architecture (and bad architects) are a big problem.

AI works amazingly well below the level of architecture, but (I've found) it's not very good at architecture.

I agree architecture is important. But I think the best way to design a good architecture is to have a high level plan, and then feel it out by coding parts of it (usually near component edges / interfaces) in the actual domain with real use cases.

That exploration helped me see whether general "best practices" are applicable in this frame, and let me justify if not.

I think your argument is you can't create good architecture without writing code. I sort of agree. You can't be a good software architect without knowing how to code, and you can be a good architect of a specific code base without being familiar with the code.

But I don't think you expect an architect to have written all the code, right? I don't even think you expect an architect to have read all the code.

The whole point of being a good architect is understanding the abstractions so that we can focus on the overall system without necessarily knowing all the details. I don't need to know the FFT math behind JPEG to integrate an image library.

So there's no real change in opinion. Architects were never expected write or even understand every line of code.