Files
davideisinger.com/static/archive/simonwillison-net-yekorg.txt
David Eisinger 0899b91eb2 Add links
2025-11-06 00:11:21 -05:00

289 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[1]Simon Willisons Weblog
[2]Subscribe
Vibe engineering
7th October 2025
I feel like vibe coding is [3]pretty well established now as covering the fast,
loose and irresponsible way of building software with AI—entirely
prompt-driven, and with no attention paid to how the code actually works. This
leaves us with a terminology gap: what should we call the other end of the
spectrum, where seasoned professionals accelerate their work with LLMs while
staying proudly and confidently accountable for the software they produce?
I propose we call this vibe engineering, with my tongue only partially in my
cheek.
One of the lesser spoken truths of working productively with LLMs as a software
engineer on non-toy-projects is that its difficult. Theres a lot of depth to
understanding how to use the tools, there are plenty of traps to avoid, and the
pace at which they can churn out working code raises the bar for what the human
participant can and should be contributing.
The rise of coding agents—tools like [4]Claude Code (released February 2025),
OpenAIs [5]Codex CLI (April) and [6]Gemini CLI (June) that can iterate on
code, actively testing and modifying it until it achieves a specified goal, has
dramatically increased the usefulness of LLMs for real-world coding problems.
Im increasingly hearing from experienced, credible software engineers who are
running multiple copies of agents at once, tackling several problems in
parallel and expanding the scope of what they can take on. I was skeptical of
this at first but [7]Ive started running multiple agents myself now and its
surprisingly effective, if mentally exhausting!
This feels very different from classic vibe coding, where I outsource a simple,
low-stakes task to an LLM and accept the result if it appears to work. Most of
my [8]tools.simonwillison.net collection ([9]previously) were built like that.
Iterating with coding agents to produce production-quality code that Im
confident I can maintain in the future feels like a different process entirely.
Its also become clear to me that LLMs actively reward existing top tier
software engineering practices:
• Automated testing. If your project has a robust, comprehensive and stable
test suite agentic coding tools can fly with it. Without tests? Your agent
might claim something works without having actually tested it at all, plus
any new change could break an unrelated feature without you realizing it.
Test-first development is particularly effective with agents that can
iterate in a loop.
• Planning in advance. Sitting down to hack something together goes much
better if you start with a high level plan. Working with an agent makes
this even more important—you can iterate on the plan first, then hand it
off to the agent to write the code.
• Comprehensive documentation. Just like human programmers, an LLM can only
keep a subset of the codebase in its context at once. Being able to feed in
relevant documentation lets it use APIs from other areas without reading
the code first. Write good documentation first and the model may be able to
build the matching implementation from that input alone.
• Good version control habits. Being able to undo mistakes and understand
when and how something was changed is even more important when a coding
agent might have made the changes. LLMs are also fiercely competent at
Git—they can navigate the history themselves to track down the origin of
bugs, and theyre better than most developers at using [10]git bisect. Use
that to your advantage.
• Having effective automation in place. Continuous integration, automated
formatting and linting, continuous deployment to a preview environment—all
things that agentic coding tools can benefit from too. LLMs make writing
quick automation scripts easier as well, which can help them then repeat
tasks accurately and consistently next time.
• A culture of code review. This one explains itself. If youre fast and
productive at code review youre going to have a much better time working
with LLMs than if youd rather write code yourself than review the same
thing written by someone (or something) else.
• A very weird form of management. Getting good results out of a coding agent
feels uncomfortably close to getting good results out of a human
collaborator. You need to provide clear instructions, ensure they have the
necessary context and provide actionable feedback on what they produce.
Its a lot easier than working with actual people because you dont have to
worry about offending or discouraging them—but any existing management
experience you have will prove surprisingly useful.
• Really good manual QA (quality assurance). Beyond automated tests, you need
to be really good at manually testing software, including predicting and
digging into edge-cases.
• Strong research skills. There are dozens of ways to solve any given coding
problem. Figuring out the best options and proving an approach has always
been important, and remains a blocker on unleashing an agent to write the
actual code.
• The ability to ship to a preview environment. If an agent builds a feature,
having a way to safely preview that feature (without deploying it straight
to production) makes reviews much more productive and greatly reduces the
risk of shipping something broken.
• An instinct for what can be outsourced to AI and what you need to manually
handle yourself. This is constantly evolving as the models and tools become
more effective. A big part of working effectively with LLMs is maintaining
a strong intuition for when they can best be applied.
• An updated sense of estimation. Estimating how long a project will take has
always been one of the hardest but most important parts of being a senior
engineer, especially in organizations where budget and strategy decisions
are made based on those estimates. AI-assisted coding makes this even
harder—things that used to take a long time are much faster, but
estimations now depend on new factors which were all still trying to
figure out.
If youre going to really exploit the capabilities of these new tools, you need
to be operating at the top of your game. Youre not just responsible for
writing the code—youre researching approaches, deciding on high-level
architecture, writing specifications, defining success criteria, [11]designing
agentic loops, planning QA, managing a growing army of weird digital interns
who will absolutely cheat if you give them a chance, and spending so much time
on code review.
Almost all of these are characteristics of senior software engineers already!
AI tools amplify existing expertise. The more skills and experience you have as
a software engineer the faster and better the results you can get from working
with LLMs and coding agents.
“Vibe engineering”, really?
Is this a stupid name? Yeah, probably. “Vibes” as a concept in AI feels a
little tired at this point. “Vibe coding” itself is used by a lot of developers
in a dismissive way. Im ready to reclaim vibes for something more
constructive.
Ive never really liked the artificial distinction between “coders” and
“engineers”—thats always smelled to me a bit like gatekeeping. But in this
case a bit of gatekeeping is exactly what we need!
Vibe engineering establishes a clear distinction from vibe coding. It signals
that this is a different, harder and more sophisticated way of working with AI
tools to build production software.
I like that this is cheeky and likely to be controversial. This whole space is
still absurd in all sorts of different ways. We shouldnt take ourselves too
seriously while we figure out the most productive ways to apply these new
tools.
Ive tried in the past to get terms like [12]AI-assisted programming to stick,
with approximately zero success. May as well try rubbing some vibes on it and
see what happens.
I also really like the clear mismatch between “vibes” and “engineering”. It
makes the combined term self-contradictory in a way that I find mischievous and
(hopefully) sticky.
Posted [13]7th October 2025 at 2:32 pm · Follow me on [14]Mastodon, [15]Bluesky
, [16]Twitter or [17]subscribe to my newsletter
More recent articles
• [18]A new SQL-powered permissions system in Datasette 1.0a20 - 4th November
2025
• [19]New prompt injection papers: Agents Rule of Two and The Attacker Moves
Second - 2nd November 2025
• [20]Hacking the WiFi-enabled color screen GitHub Universe conference badge
- 28th October 2025
This is Vibe engineering by Simon Willison, posted on [21]7th October 2025.
Part of series [22]How I use LLMs and ChatGPT
29. [23]Tips on prompting ChatGPT for UK technology secretary Peter Kyle - June
3, 2025, 7:08 p.m.
30. [24]Designing agentic loops - Sept. 30, 2025, 3:20 p.m.
31. [25]Embracing the parallel coding agent lifestyle - Oct. 5, 2025, 12:06
p.m.
32. Vibe engineering - Oct. 7, 2025, 2:32 p.m.
33. [26]Claude can write complete Datasette plugins now - Oct. 8, 2025, 11:43
p.m.
34. [27]Getting DeepSeek-OCR working on an NVIDIA Spark via brute force using
Claude Code - Oct. 20, 2025, 5:21 p.m.
35. [28]Video: Building a tool to copy-paste share terminal sessions using
Claude Code for web - Oct. 23, 2025, 4:14 a.m.
[29] code-review 13 [30] definitions 35 [31] software-engineering 59 [32] ai
1658 [33] generative-ai 1463 [34] llms 1430 [35] ai-assisted-programming 265
[36] vibe-coding 52 [37] coding-agents 88 [38] parallel-agents 6
Next: [39]Claude can write complete Datasette plugins now
Previous: [40]OpenAI DevDay 2025 live blog
Monthly briefing
Sponsor me for $10/month and get a curated email digest of the month's most
important LLM developments.
Pay me to send you less!
[41] Sponsor & subscribe
• [42]Colophon
• ©
• [43]2002
• [44]2003
• [45]2004
• [46]2005
• [47]2006
• [48]2007
• [49]2008
• [50]2009
• [51]2010
• [52]2011
• [53]2012
• [54]2013
• [55]2014
• [56]2015
• [57]2016
• [58]2017
• [59]2018
• [60]2019
• [61]2020
• [62]2021
• [63]2022
• [64]2023
• [65]2024
• [66]2025
References:
[1] https://simonwillison.net/
[2] https://simonwillison.net/about/#subscribe
[3] https://simonwillison.net/2025/Mar/19/vibe-coding/
[4] https://www.claude.com/product/claude-code
[5] https://github.com/openai/codex
[6] https://github.com/google-gemini/gemini-cli
[7] https://simonwillison.net/2025/Oct/5/parallel-coding-agents/
[8] https://tools.simonwillison.net/
[9] https://simonwillison.net/2025/Sep/4/highlighted-tools/
[10] https://til.simonwillison.net/git/git-bisect
[11] https://simonwillison.net/2025/Sep/30/designing-agentic-loops/
[12] https://simonwillison.net/tags/ai-assisted-programming/
[13] https://simonwillison.net/2025/Oct/7/
[14] https://fedi.simonwillison.net/@simon
[15] https://bsky.app/profile/simonwillison.net
[16] https://twitter.com/simonw
[17] https://simonwillison.net/about/#subscribe
[18] https://simonwillison.net/2025/Nov/4/datasette-10a20/
[19] https://simonwillison.net/2025/Nov/2/new-prompt-injection-papers/
[20] https://simonwillison.net/2025/Oct/28/github-universe-badge/
[21] https://simonwillison.net/2025/Oct/7/
[22] https://simonwillison.net/series/using-llms/
[23] https://simonwillison.net/2025/Jun/3/tips-for-peter-kyle/
[24] https://simonwillison.net/2025/Sep/30/designing-agentic-loops/
[25] https://simonwillison.net/2025/Oct/5/parallel-coding-agents/
[26] https://simonwillison.net/2025/Oct/8/claude-datasette-plugins/
[27] https://simonwillison.net/2025/Oct/20/deepseek-ocr-claude-code/
[28] https://simonwillison.net/2025/Oct/23/claude-code-for-web-video/
[29] https://simonwillison.net/tags/code-review/
[30] https://simonwillison.net/tags/definitions/
[31] https://simonwillison.net/tags/software-engineering/
[32] https://simonwillison.net/tags/ai/
[33] https://simonwillison.net/tags/generative-ai/
[34] https://simonwillison.net/tags/llms/
[35] https://simonwillison.net/tags/ai-assisted-programming/
[36] https://simonwillison.net/tags/vibe-coding/
[37] https://simonwillison.net/tags/coding-agents/
[38] https://simonwillison.net/tags/parallel-agents/
[39] https://simonwillison.net/2025/Oct/8/claude-datasette-plugins/
[40] https://simonwillison.net/2025/Oct/6/openai-devday-live-blog/
[41] https://github.com/sponsors/simonw/
[42] https://simonwillison.net/about/#about-site
[43] https://simonwillison.net/2002/
[44] https://simonwillison.net/2003/
[45] https://simonwillison.net/2004/
[46] https://simonwillison.net/2005/
[47] https://simonwillison.net/2006/
[48] https://simonwillison.net/2007/
[49] https://simonwillison.net/2008/
[50] https://simonwillison.net/2009/
[51] https://simonwillison.net/2010/
[52] https://simonwillison.net/2011/
[53] https://simonwillison.net/2012/
[54] https://simonwillison.net/2013/
[55] https://simonwillison.net/2014/
[56] https://simonwillison.net/2015/
[57] https://simonwillison.net/2016/
[58] https://simonwillison.net/2017/
[59] https://simonwillison.net/2018/
[60] https://simonwillison.net/2019/
[61] https://simonwillison.net/2020/
[62] https://simonwillison.net/2021/
[63] https://simonwillison.net/2022/
[64] https://simonwillison.net/2023/
[65] https://simonwillison.net/2024/
[66] https://simonwillison.net/2025/