The value is in the difficulty - Annotations
We’ve seen this arc before, and music is the richest analogy.
Like Bruce Sterling always says:
Whatever happens to musicians happens to everybody.
We’ve seen this arc before, and music is the richest analogy.
Like Bruce Sterling always says:
Whatever happens to musicians happens to everybody.
But this obsession with hard work as a virtue, as a good and righteous thing to do, the glorification of toil and sweat and labor… that’s a tool the wealthy who don’t work for a living use to oppress those who do.
A stack is also technical debt, non-transferable knowledge, accelerated obsolescence, and vendor lock-in. That means fragility and overall unnecessary complication. Popular stacks inevitably turn into cargo cults that build in spite of the web, not for it.
The web platform does not require build toolchains. Always default to, and regress to, the fundamentals of CSS, HTML, and JavaScript. Those core standards are the web stack.
In 1958, Mao ordered every village in China to produce steel. Farmers melted down their cooking pots in backyard furnaces and reported spectacular numbers. The steel was useless. The crops rotted. Thirty million people starved.
In 2026, every other company is having top down mandate on AI transformation.
Same energy.
I can’t remember the last time a blog post resonated with me this much.
Craig’s criteria on his job search:
- One: fuck offices
- Two: fuck AI
- Three: fuck React
And his conclusion:
Fuck work
This is a guide to how to be a web developer.
Really good advice from Laurie.
What this site is not is a tutorial. Tutorials are very specific to a time and a technology. This is intended to be a guide to tell you all the things you can learn, so you can then go off and learn them.
Eleven years ago, I wrote:
Sometimes I consider the explosive growth of computation and think that strong AI is a near-term inevitability.
Then I remember printers.
That was just a brainfart, but Robin tackles it seriously in his thoughtful essay.
A pleasing image: if indeed AI automation does not flood fill the physical world, it will be because the humble paper jam stood in its way.
Software cannot, in fact, eat this world. Software can reflect it; encroach upon it; more than anything, distract us from it. But the real physical world is indigestible.
Related to Matt’s thoughts:
…working with agents feels much less like classic deep work, and much more like playing a game. Not to say the work is frivolous—it’s just because it feels like I’m in a game loop.
Flow, at least in the usual sense for me, feels smooth and continuous. The work and your attention starts to line up so cleanly that the experience becomes frictionless. You disappear into the work and meld with it. One notable aspect of flow has been I lose track of time. Working with agents on the other hand, is not like that at all. It’s highly engaging, but in a more jagged, reactive way. I’m focused, but not settled. I’m absorbed, but not merged with the task. I’m paying close attention the whole time, but the attention is dynamic and tactical rather than continuous. I don’t lose track of time at all.
Matt has some smart reckons on the relationship between time and technology:
The factory bell, the railway timetable, the telegraph wire, the always-on smartphone — each imposed a new temporal discipline, each produced its own characteristic form of exhaustion, and each was eventually (partially, imperfectly) domesticated through a combination of regulation, design, and collective action.
This is about something that’s already happening, that doesn’t show up in employment figures: the quiet destruction of the feedback loop that turns inexperienced people into competent ones. The process by which you get something wrong, feel it, understand why, and become slightly less wrong next time. It’s unglamorous and it’s slow and it’s the only way it’s ever worked.
AI short-circuits that learning completely. Not maliciously. Just structurally. When you can generate something that looks right without doing the thinking, you will (most people, most people being me, will, most of the time, under pressure, with a deadline) and the muscle that thinking would have built never develops.
The cognitive overload of AI trying to Make You More Productive™️ whilst you’re actually trying to be productive is so shockingly absurd. And yet, we are being made to feel like we are stagnating, being left behind, not good enough, that we are luddites should we not adopt this imposing technology. We are being told we’re missing out, even though we’re probably doing just fine. The technology is gaslighting us.
Large language models help you build the thing faster, which is the primary end goal for your company but only sometimes for you. My primary goal might be to build the thing faster, but it also might be to learn something durably, to enjoy the work, to look forward to Monday.
I don’t like the mental fragility of not fully understanding how my own code works, where AI-generated code is “mine” in that it’s attributed to me in the git blame and I’m its maintainer going forward.
I’ve had a lot of people recently tell me AI is “inevitable.” That this is “the future” and “we all better get used to it.”
For the last decade, I’ve had a lot of people tell me the same thing about React.
And over that decade of React being “the future” and “inevitable,” I worked on many, many projects without it. I’ve built a thriving career.
AI feels like that in many ways. It also feels different in that non-technical people also won’t shut the fuck about it.
A thoughtful approach from Sam:
- Use AI only for tasks you already know how to do, on occasions when the time that would be spent completing the task can be better spent on other problems.
- When using AI, provide the chosen tool with something you’ve made as an input along with a specific prompt.
- Always comprehensively review the output from an AI tool for quality.
My social networks are currently awash with Deep Blue:
…the sense of psychological ennui leading into existential dread that many software developers are feeling thanks to the encroachment of generative AI into their field of work.
The issue isn’t with the code itself, but with the understanding of the code.
That’s the difference between technical debt and cognitive debt.
- I don’t and won’t use “AI” in the text of any of my published work.
- I’m not worried about “AI” replacing me as a novelist.
- People in general are burning out on “AI.”
- I’m supporting human artists, including as they relate to my own work.
- “AI” is Probably Sticking Around In Some Form.
- “AI” is a marketing term, not a technical one, and encompasses different technologies.
- There were and are ethical ways to have trained generative “AI” but because they weren’t done, the entire field is suspect.
- The various processes lumped into “AI” are likely to be integrated into programs and applications that are in business and creative workflows.
- It’s all right to be informed about the state of the art when it comes to “AI.”
- Some people are being made to use “AI” as a condition of their jobs. Maybe don’t give them too much shit for it.
Frameworks like React are often perceived as accelerators, or even as the only sensible way to do web development. There’s this notion that a more “modern” stack (read: JS-heavy, where the JS ends up running on the user’s browser) allows you to be more agile, release more often with fewer bugs, make code more maintainable, and ultimately launch better sites. In short, the claim is that this approach will offer huge improvements to developer experience, and that these DevEx benefits will trickle down to the user.
But over the years, this narrative has proven to be unrealistic, at best. In reality, for any decently sized JS-heavy project, you should expect that what you build will be slower than advertised, it will keep getting slower over time while it sees ongoing work, and it will take more effort to develop and especially to maintain than what you were led to believe, with as many bugs as any other approach.
Where it comes to performance, the important thing to note is that a JS-heavy approach (and particularly one based on React & friends) will most likely not be a good starting point; in fact, it will probably prove to be a performance minefield that you will need to keep revisiting, risking a detonation with every new commit.
There are two wolves inside you…
My Builder side won’t let me just sit and think about unsolved problems, and my Thinker side is starving while I vibe-code. I am not sure if there will ever be a time again when both needs can be met at once.
I’ve seen so many times how 10 lines of code can end up being worth £millions, and 10,000 ends up being worthless.