How I think about writing quality code fast with AI
Essay - Published: 2026.01.23 | 1 min read (491 words)
ai | software-engineering | tech
DISCLOSURE: If you buy through affiliate links, I may earn a small commission. (disclosures)
I recently did a small tech talk at Recurse Center's weekly presentation day on software engineering with AI so thought I'd share the key ideas here.
I've also recorded the presentation slides with a lot more detail (RC presentations are only 5 mins!).
Mental Models AI
I think of AI as an eager, book-smart junior engineer that doesn't eat, sleep, or get bored. It's a super fast reader, typer, and researcher. It's a decent coder in most mainstream languages and has read tons of books and articles. But it has little hands-on experience, low taste and judgment for choosing what to apply when, and low discipline for sticking to rules.
What AI means for the industry
There are three approaches to building with AI:
- Vibe Coding: Very fast, hands-off, produces "slop"
- Vibe Engineering: Fast, human-in-the-loop, production-ready
- Traditional Engineering: Slow, hands-on, craftsmanship
I think the future is vibe engineering - take the principles of traditional engineering and leverage the super fast speed of AI LLMs.
Different work calls for different approaches.
- Tree nodes (critical infrastructure, core value, new frontiers) still need Traditional Engineering.
- Branch nodes (CRUD features, N+1 work) benefit from Vibe Engineering.
- Leaf nodes (prototypes, internal tools, non-load-bearing code) can tolerate Vibe Coding.
Vibe Engineering Workflow
The standard agentic AI loop is: Plan -> Build -> Review.
- Plan: You with AI feedback
- Build: AI with you tweaking
- Review: You with AI feedback
This is very similar to a normal software engineering cycle. The difference is that you now play the role of the Tech Lead / Manager and AI is the implementer.
Going Further
You can enhance each phase:
Better Planning:
- Use layered specs: Product PRD (what exists) -> Change PRD (what we're building) -> Tech Spec (how to implement)
- Define explicit success criteria upfront
- Have AI critique your plan and interview you about clarifications
Better Building:
- Have AI follow checklists and update progress
- Automatically run tests, linters, and builds after changes
- Use fresh agents for clear context on each task
Better Reviews:
- Define what "good" looks like in AGENTS files and PRDs
- Enforce deterministic guardrails: types, tests, linters, e2e tests
- Spin up parallel AI reviewers with different perspectives (correctness, simplicity, performance, security)
And once you've gotten those loops nice and reliable, you can move onto chains where AI auto passes from one loop to the next.
Further Reading
- 5 AI Coding Best Practices from a Google AI Director (That Actually Work)
- If AI can code, what will Software Engineers do?
From the Pragmatic Engineer:
Want more like this?
The best way to support my work is to like / comment / share this post on your favorite socials.
Inbound Links
- Benchmarking my Markdown Blog in Rust and C# - 4.6x Less Memory, 2-8x Faster Latency on the Same App
- 9 Parallel AI Agents That Review My Code (Claude Code Setup)
- I Built an AI Orchestrator and Ran It Overnight - Here's What Happened
- High-Level Rust: Getting 80% of the Benefits with 20% of the Pain
- 2026.01 Release Notes
- AI Token Clicker Game
