- Published on
Stages of grief in AI development
- Authors

- Name
- Kevin van Zonneveld
- @kvz
Recently, the creator of Node.js, Ryan Dahl, shared the following tweet:
This has been said a thousand times before, but allow me to add my own voice: the era of humans writing code is over. Disturbing for those of us who identify as SWEs, but no less true. That's not to say SWEs don't have work to do, but writing syntax directly is not it.
— Ryan Dahl (@rough__sea) January 19, 2026
Reading this hit me harder than I expected. It sent me straight back to 2009, when Ryan announced Node at JSConf. That moment felt like a beginning; and we built a company on it. In sharp contrast, this moment felt like an ending.
In actuality, I think Ryan's statement contains two things that are 80% true now, and will get to 99% before too long.
As someone who spent most of my life getting good at coding, I went through the five stages of grief on all this: from denial, anger, bargaining and depression to, ultimately, acceptance. Like many, I felt sad at a life investment getting depreciated in the marketplace, which hurt my self-esteem. I became fearful of solo competitors eating our lunch, and anxious about a strange world in which nothing is real. My mind wandered to depressing thoughts about mass job displacement, a widening gap between rich and poor, and looming social unrest.
It's natural to have a negative response. After all, the consequences of AI development in software engineering have already been sweeping and disruptive. I'm constantly seeing others bounce back and forth between denial, anger, bargaining and depression. For your own sake, I'd strongly urge to not get stuck in these stages. Reality is changing and we need to adapt. Others out there are getting leverage from the changes in our field. And as long as we're relentlessly combative or remain stuck in denial – we can't.
I initially thought AI would take the fun away, and honestly it did for a while. Waiting, fighting slop, and then more waiting. There was still a net productivity benefit, but enjoyable work it was not.
In the last few weeks, though, the tools and workflows have matured past that threshold. There is less waiting and less slop. And I suddenly began to find that same sense of Lego-like creativity again – only now at a higher level of abstraction than if statements and for loops.
Here's what I spend my time thinking about these days:
- Context design: an LLM is like a big alien brain that has spent its life in a prison cell reading every book known to man. What tools does it need? Can we poke any windows in that cell?
- Sequencing: I can build all these components – in what order do I arrange them for maximum leverage, each amplifying the next?
- Guardrails: how do I ensure good outcomes, instead of spending one day building and two days cleaning up? Can I give the agent 'hard things' to bounce off of? Which tests do we need first?
- Iteration speed: what can be sped up to cut down cycle time dramatically?
- Human checkpoints: at which strategic points do I still interject, handroll, or vet?
- Formalization: what can become a procedure doc/skill to avoid friction next time?
- Division of work: what will be the least regretful division of work in the longer term? This is true as much for components as for division of work between agents from different houses (Codex for backend, Claude for front, Gemini for visuals), and for the tools they get to use (e.g., a browser to check their own work).
- Scaling: where lies the true bottleneck? In worktrees, machines, imagination or CI time? Or perhaps in my own sanity? How do I avoid an agent simply always adding more code, resulting in a colossal maintenance hell down the line. How do I effectively force it to re-use what we have? How does it know about this without polluting context? What should your project look like if you had to onboard a fresh dev every day? That's probably the direction to take your project in if you want maximum leverage from agents.
These are still rewarding puzzles. Different puzzles. But seeing them work out and breathing life into larger systems is just as, and sometimes maybe more rewarding on the multi component/project level as on the multi line/function level.
One thing is certain, though: we won't ever get there by categorically refusing. It may require sitting down, taking a deep breath, and accepting the discomfort and the new reality, but you too can start getting leverage from AI. Especially with your skills as a developer.
Speaking as an employer: there is a place for SWEs who can herd agents and vouch for outcomes, for a long time to come. The leverage I can get is wild, but there's a real limit to how many agents I can safely manage in parallel. Engineers who can think about these puzzles and take ownership of outcomes are absolutely worth their weight in gold to me – and likely to other employers too.