Three related articles, with minimal commentary:
Florian Herrengt, “AI is removing the middle class of software engineering”:
Excerpts
AI removed the speed limit
AI makes projects with weak engineering culture fail much faster.
There used to be a time when people sat down and talked about how they'd do something. Now they can just prompt an agent for a few hours and open a PR.
The most tragic aspect of this way of working is that, to the untrained eye, it works.
If you pull the branch and test it, you'll probably get something somewhat functional. So what do they do? They keep going. Again and again. Until the project reaches a point where no one knows how anything works.
Just like someone buying a new luxury car on a credit card. You don't see the debt. You just see the car that looks great.
“Bad engineers always existed”
The difference is the speed.
It is the difference between crashing at 30 km/h and crashing at 200 km/h. Before AI, a bad engineer would struggle to produce code that even compiled. When they did produce something, it took them a long time and the blast radius was limited. The damage was bounded by how fast a human could type.
Now a bad engineer can produce 10,000 lines of working code before lunch. The damage we can do in an afternoon used to take them months. The speed at which bad decisions compound has changed completely while the speed at which you can fix them has not.
“Will anyone actually care?”
They will care when nothing works, nobody seems able to fix it, building new features takes forever and every change breaks something somewhere else.
This was already happening before AI. But now, a lot more companies that previously might have taken many years to reach an unmaintainable state can get there in just a few months.
Reminder: being good at software engineering isn't just about algorithms or systems design or whatever. Even pre-LLMs, it 100% definitely wasn't correlated with how fast you can put out new features.
It's about creating a system that's easy to reason about: easy to debug, easy to change, and hard to break—even when it's complicated.
Sophie Alpert, “There are no lossless transformations of natural-language text”:
Good writing is a tool to clearly communicate ideas from your brain into someone else’s.
There are no lossless transformations of natural-language text — every rewrite and rephrase changes the meaning of your writing, and if this is done by an entity that doesn’t have the most detailed mental representation of what you personally were trying to communicate, information will be lost. Readers will appreciate hearing your thoughts, even at the expense of supposed “polish”.
Solution: give the agent the full context of what you're trying to communicate.
My words aren't a faithful representation of my thoughts.
Lossless isn't the same as faithful. A different transformation can match my thoughts with more fidelity and give you a truer version of what was in my head.
That said: the AI output must reflect your thoughts, not vice versa. Anything else is having no thoughts in the first place and letting AI fill the blank space in your head.
Adam Mastroianni, “I like ’em thick”:
Aka why slop is slop, and why it can't be “thick” the way great art and literature are.
Thickness = depth of thought and content. Blood and sacrifice. Trying and discarding alternatives. Taste.
But not everything needs to be thick. Thicker is better, but time and cost set limits. Good enough is good enough.
The desire for thickness can be writer's block in disguise: perfection as the enemy of good. Put something out. Refine it when it needs refinement. Start thin. Layer on tens or hundreds of refinements, and it becomes thick.