289 lines
13 KiB
Plaintext
289 lines
13 KiB
Plaintext
[1]Simon Willison’s 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 it’s difficult. There’s 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),
|
||
OpenAI’s [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.
|
||
|
||
I’m 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]I’ve started running multiple agents myself now and it’s
|
||
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 I’m
|
||
confident I can maintain in the future feels like a different process entirely.
|
||
|
||
It’s 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 they’re 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 you’re fast and
|
||
productive at code review you’re going to have a much better time working
|
||
with LLMs than if you’d 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.
|
||
It’s a lot easier than working with actual people because you don’t 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 we’re all still trying to
|
||
figure out.
|
||
|
||
If you’re going to really exploit the capabilities of these new tools, you need
|
||
to be operating at the top of your game. You’re not just responsible for
|
||
writing the code—you’re 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. I’m ready to reclaim vibes for something more
|
||
constructive.
|
||
|
||
I’ve never really liked the artificial distinction between “coders” and
|
||
“engineers”—that’s 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 shouldn’t take ourselves too
|
||
seriously while we figure out the most productive ways to apply these new
|
||
tools.
|
||
|
||
I’ve 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/
|