From AI doomer to handwriting code again
Let no good crisis go to waste
-- Winston Churchill 1
I’ve been thinking about the above quote lately. Normally this is applied in political contexts, but I think it does a good job describing the last couple of months for me. For example, today I’ve been sick as a dog (probably with that new covid variant). Normally I would be trying to speed things along by rotting my brain on YouTube or other pointless entertainment. While there was some of that, I was really surprised to find myself wanting to write some code for a project I’m working on! And this wasn’t Agentic Engineering™. I was enjoying writing good old-fashioned, organic, artisanal, free-range, handwritten code. I knew I had to summarize (at least for myself) how exactly I got here.
The “crisis”
Around last September I started working pretty hard in my free-time on a startup idea (state of idea still tbd). Even though I’m anti-social media, I decided to swallow the poison pill and get on LinkedIn to try and build some early traction/validation. When I got on, I started getting drowned by
- “AI has made programmers obsolete.”
- “Agentic engineering is the future”
- “If you aren’t orchestrating agent swarms you are falling behind.”
That started to raise some hairs and my anxiety. Now at the time I was using Claude Code daily at work and for my personal project. I noticed that Claude Code was decent at my work tasks but not very good at my more innovative personal tasks. Then my feed started hitting me with news about the “inflection point” with Opus 4.6, full agent dev teams, mandated agentic engineering in big tech. The news about Gas Town and Ralph Loops made me feel like I was falling behind.
Personally I saw big workflow and productivity improvements with AI tools. This was particularly around search and boilerplate generation. Biggest use-case was copying patterns (although I always had to double-check it was actually implemented correctly). When I tried doing more complex changes, I saw the LLMs struggle. None of this suggested that full agent dev teams were actually feasible long-term. So I thought this was a skill issue.
Now I have two kids and my wife raises them full-time. This means it’s on my shoulders to make sure we can eat and that we have a roof over our heads. I really had to figure out some way of getting through the AI apocalypse intact. I was mainly experimenting with different projects, different types of AI vibe coding (spec-driven, human in the loop, human-less Ralph loops). I’ve seen articles suggesting it wasn’t just me.
The realization that I’m spiraling
After several months of grinding with steadily growing anxiety, I came across Mitchell Hashimoto’s workflow. I wrote another post about it here. This was the first time I was exposed to a serious guy who wasn’t on the AI will replace us hype train. After this, I started paying attention to a lot more news that was also anti-hype:
- Mo Bitar, guy that talks a ton about AI code quality and, more importantly, the impact of AI on our own brains.
- Commentary on Metr article suggesting code quality from LLMs isn’t actually getting better.
- Metr article suggesting AI doesn’t actually improve productivity.
- Armin Ronacher post about comprehension debt and AI psychosis among vibe coders.
Those resources, among others, talked me down from the doomer cliff I was on. I’m a lot more pragmatic now. Current AI can’t replace a good dev (it’s not a skill issue). There is no guarantee one way or another that future AI will be able to replace a good dev (I lean towards it won’t be able to). Regardless, the only thing I can do is continue to keep my coding skills sharp and keep using/exploring Claude code/codex, but without the anxiety. I don’t think it’s worth learning the modern advanced agent orchestration techniques since best practices around LLM techniques are constantly changing. In the last 6 months since I started paying attention, I’ve seen a lot of noise with different approaches. Two major changes I can recall off the top of my head are:
- Claude.md is important, you can have claude generate it2 → agent generated Claude.md worsens results. Only good approach is minimal human generated3
- MCP is the best standard for calling external tools → clis are the best standard for calling external tools4.
There is no guarantee that the prompting/orchestration skills relevant now will be relevant to a future LLM that can fully autonomously generate robust, secure, and production ready code. Those skills are also not relevant if LLMs continue to have the same issues they have today. Either way it’s still useful to continue writing code manually. If LLMs don’t get much better than demand for a dev that can actually write robust, secure, and production grade code will be high. If they do get better, then at least I will have refined my taste. I can always learn the advanced prompting/orchestrating skill-set later.
The change
Was this roller-coaster of anxiety pointless? I think the answer goes back to the quote of never letting a good crisis go to waste. I used the stress and anxiety induced by all of this to develop a habit of daily project work and generated a backlog of projects to explore. To try and find alternative approaches to surviving the AI apocalypse I decided to try publishing more writings (which I’ve been enjoying greatly). These have replaced the ways I used to waste my time, which I think is a huge net positive. The biggest change is just genuinely enjoying programming again. I’m no longer spending my cognitive capacity on the soft LLM prompting skills5. Instead, I’m working on things I enjoy more like exploring new languages, developing my taste for code architecture, and solving hard technical problems myself.
If you are worried about AI and the links I included above haven’t convinced you otherwise, that’s okay! Just don’t let a good crisis go to waste. Use the motivating power of stress and anxiety to drive you instead of letting it stop you. No matter how things play out, you will be better off!
This is attributed to Winston Churchill although supposedly this attribution is in question. The source doesn’t really matter to me though. ↩︎
The /init command generates an overview of the project structure and notes. This is still recommended by Anthropic in their best practices ↩︎
From Evaluating AGENTS.md: Are Repository-Level Context Files Helpful for Coding Agents? ↩︎
Cloudflare suggested that having LLMs generate code was a better approach to traditional MCP. ↩︎
I became an engineer for the hard technical skills, not to be a manager! ↩︎