That sounds like it's going to take a lot more time that just writing the code for an experienced developer. The issue with AI for me is that it produces plausible-looking code which requires a lot of attention to read through, because things that look superficially "right", including any justification in code comments, can actually have really problematic flaws.
There are a few kinds of developers: good, bad, slow and fast. Everyone wants to be a good developer but a fast and bad developer is worse than a slow and bad developer because they end up doing so much damage.
There are four kinds of military officers: smart and lazy, smart and hard working, dumb and hardworking, dumb and lazy.
Keep the dumb and hardworking away from any high level position. They actively make things worse. Dumb and lazy are useful for simple tasks with oversight. Smart and hardworking are excellent for high level staff and analyst positions.
The Smart and Lazy should be saved for high level command. They expend only the energy necessary to get the job done and then focus on the next important task.
The original tweet[1] talked very specifically about not caring about quality, just accepting whatever code the AI produces blindly, as long as you get the black box output you're looking for, and just randomly try again if you didn't.
Are people now using this term to mean "giving an AI agent broad tasks"?
[1] https://x.com/karpathy/status/1886192184808149383?lang=en
> I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it
That sums up vibe coding, imo.
The article talks about code quality with vibe coding, but I think that misses the point. The real problem is code knowledge. When a vibe coder inevitably needs to debug something, if they have no idea what any of the code does, or why it is the way it is, they are not going to have a good time.
Sure they can copy paste the error into the LLM and hope for the best, but what happens when that doesn’t fix it? I’ve already had to spend hours at work tracking down bugs that ending up being in there because someone just blindly accepted the code an LLM wrote, I fear it’s only going to get worse.
> It's not too bad for throwaway weekend projects, but still quite amusing
You were never supposed to vibe code on serious projects.
Also I am a backend engineer. I don't know what kind of code it's producing for my front end. I just hit accept all. But seeing how it does the backend code and having to prompt it to do something better (architectural, performance, code reuse) I have no doubt the front end of my pool is a pile of poop.
I fear that management will see these small quick gains and think it applies to everything.
I'm of the opinion now, that vibe coding is good if you are familiar with the code & stack and can ensure quality. You don't want to give it to a product owner and have them try to be an engineer (or have a backend dev do front end, vice versa).
Just my opinion.
I have lost count of the number of quick one off scripts that ended up still being used in production workloads five (or more) years later.
Kernighan's law still applies.
Neither side cares unfortunately.
When users attempt to prompt away their problems without understanding the error and it doesn't solve it, that is still good news for Cursor and Anthropic and it is more money for them.
The influencers encouraging "vibe coding" also don't care. They need to be paid for their Twitter money or YouTube ad revenue.
And I’ve also had to spend hours at work tracking down badly copy pasted stack overflow code, or from other places in the codebase that didn’t do what the programmer thought it did. A shitty carpenter will build a shitty staircase whether they have a chisel or a dremel
I wonder if maybe some people have been trying to jump on the "I have also tried vibe coding" train without being willing to hop as far as the term initiator defined it.
I definitely still stick to the "Vibe Coding is when you don't read / grok the code" definition.
"Vibe-coding" as it is defined, throws away all the principles of software engineering and adopts an unchecked approach into using AI generated code with "accept all changes" then duct-taping it with more code on top of a chaotic code architecture or none (single massive file) and especially with zero tests.
The fact is, it encourages carelessness and ignores security principles just to make it acceptable to create low quality and broken software that can be hacked very easily.
You can spot some of these "vibe-coders" if they believe that they can destroy Docusign in a day with Cursor + Claude with their solution.
Who's going to tell them?
If you read to the end of his tweet, he specifically says "It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works."
I think it is. He is certainly a great AI researcher / scientist, but not really a software engineer.
> It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works."
So is that the future of software engineering? "Accept all changes", "Copy paste stuff", "It mostly works" and little to no tests whatsoever as that is what "Vibe coding" is.
Would you yourself want vibe-coded software that is in highly critical systems such as in aeroplanes, hospitals, or in energy infrastructure?
I don't think so.
Try reading the whole tweet! https://twitter.com/karpathy/status/1886192184808149383
"Would you yourself want vibe-coded software that is in highly critical systems such as in aeroplanes, hospitals, or in energy infrastructure?"
Of course not. That's why I wrote https://simonwillison.net/2025/Mar/19/vibe-coding/#using-llm...
To save you the click:
> The job of a software developer is not (just) to churn out code and features. We need to create code that demonstrably works, and can be understood by other humans (and machines), and that will support continued development in the future.
> We need to consider performance, accessibility, security, maintainability, cost efficiency. Software engineering is all about trade-offs—our job is to pick from dozens of potential solutions by balancing all manner of requirements, both explicit and implied.
> We also need to read the code. My golden rule for production-quality AI-assisted programming is that I won’t commit any code to my repository if I couldn’t explain exactly what it does to somebody else.
> If an LLM wrote the code for you, and you then reviewed it, tested it thoroughly and made sure you could explain how it works to someone else that’s not vibe coding, it’s software development. The usage of an LLM to support that activity is immaterial.
... And then a few weeks later, my boss' boss scolded the team for not having heard of the term, and told us to learn and use vibe coding because it's the future.
It's his job to sell now. He's selling.
Broadly I agree with the two other replies: his 'day job' has not been coding in some time, so I would put him in the same bucket as e.g. a manager who got promoted out of writing code 5-10 years ago. I do want to understand where you're coming from here -- do you think that's a fair characterization?
He spends a lot of time as an educator these days.
The whole point of AI agents is to eventually get good enough to do this stuff better than humans do. It's okay to dogfood and test them now and see how well they do, and improve them over time.
Software engineers will eventually become managers of AI agents. Vibe coding is just version 0.1 pre-alpha of that future.
Source? This seems very optimistic on both ends (that AI will replace SE work, AND SEs will still be employed to manage them).
You can be an enthusiastic adopter of AI tooling (like I am) without wanting them to eventually be better than humans at everything.
I'm very much still in the "augment, don't replace" camp when it comes to AI tooling.
I'm okay with directing AI to write exactly the software I need, without having to manage "stakeholders", deal with the egos of boomers up the management chain, and all the shitty things certain people do in any organizations that get large enough.
I agree with that. The problem I have is that people are getting sucked into the hype and evaluating the results of those tests with major rose-colored glasses. They glaze over all the issues and fool themselves into thinking that the overall result is favorable.
Vibe coding is when you don't review the code at all. If you're using LLMs to help you write code but you're actually reviewing what they produce (and iterating on it) that's not vibe coding any more.
This battle is almost certainly lost already, but dammit I'm gonna keep fighting anyway!
Salty version: https://bsky.app/profile/simonwillison.net/post/3ll2rtxeucs2...
> Feels like I'm losing the battle on this one, I keep seeing people use "vibe coding" to mean any time an LLM is used to write code
> I'm particularly frustrated because for a few glorious moments we had the chance at having ONE piece of AI-related terminology with a clear, widely accepted definition!
> But it turns out people couldn't be trusted to read all the way to the end of Andrej's tweet, so now we are back to yet another term where different people assume it means different things
I found out this anti-pattern where a newly coined term loses its definition as it spreads more widely is called "semantic diffusion": https://simonwillison.net/2025/Mar/23/semantic-diffusion/
Vibe-but-verify? Faux-Vibe? AiPair? (... I'll see myself out...)
Entirely fictional creature that doesn't exist
Every person who I have seen embracing AI coding has been getting lazier and lazier about verifying
In a dream world, each new terminology goes through an RFC to figure out a meaning we all (some of us) can agree to, so at least we can link to an angry RFC when people continue to misuse the term anyways.
I have a suspicion that Facebook insist on calling their open weights models "open source" because the EU AI act says "This Regulation does not apply to AI systems released under free and open-source licences" but doesn't do a good job of defining what "open-source" means! Bottom of this page: https://artificialintelligenceact.eu/article/2/
Correction: the closest it gets to defining open source is in https://artificialintelligenceact.eu/recital/102/
> The licence should be considered to be free and open-source also when it allows users to run, copy, distribute, study, change and improve software and data, including models under the condition that the original provider of the model is credited, the identical or comparable terms of distribution are respected.
(I found that by piping the entire EU AI act through Gemini 2.5 Flash - https://gist.github.com/simonw/f2e341a2e8ea9ca75c6426fa85bc2...)
"There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. ... I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension ... Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. ..."
So yes, "not reading the code" is baked in quite specifically.
I asked ChatGPT for help, and it was quite helpful.
However, its code was really verbose, and fairly “messy.” Even though it worked, it didn’t work well.
I used it as guidance for training myself in the tech, and developed an approach that is far better. I had to learn the tech, and refactored the code example in a pretty major way.
Maybe some of the other tools are better, but I haven’t gotten any code that I would even consider shipping; pretty much exactly like my experience with Stack Overflow, for years.
The first kind of quality is the only kind that matters in the end. The second kind has mattered a lot up until now because of how involved humans are in typing up and editing software. It doesn't need to matter going forward. To a machine, the entire application can be rewritten just as easily as making a small change.
I would gladly give up all semblance of the second kind of quality in exchange for formal specifications and testing methods, which an AI goes through the trouble of satisfying for me. Concepts and models matter in the problem domain (assuming humans are the ones using the software), but they will increasingly have no place in the solution domain.
How easy it is to maintain and extend does absolutely matter, in a world where software is constantly growing and evolving and never "finished"
Just an observation though:
There seems to be a world in software where "it works" well enough to grow a large user base to achieve a a large valuation and then dip out is also a viable option.
Growing/evolving the code does not matter because the product no longer matters after the founders have made a large sum of money.
You're harming:
* your customers who trusted you
* the people that purchased your product
I think "grift" is a good term (GPT recommended 'predatory exit' as an alternative) for what a team that's done that has done.There’s nothing wrong with iterating fast or building MVPs. But when teams knowingly pass off a brittle mess to others, they’ve stopped building products and started selling lies.
I was not trying to imply that it was not. Just observing that when money is on the table there appears little incentive in some cases to build a good product.
Or to follow good engineering practices because the founders & investors already made money without it.
From a business perspective, this is what's exciting to a lot of people. I think we have to recognize that a lot of products fail not because the software was written poorly, but because the business idea wasn't very good.
If a business is able to spin up its product using some aspect of vibe coding to test out its merits, and is able to explore product-market fit more quickly, does it really matter if the code quality is bad? Likewise, a well-crafted product can still fail because either the market shifted (maybe it took too long to produce) or because there really wasn't a market for it to begin with. Obviously, there's a middle ground here, and if you go too far with vibe coding and produce something that constantly fails or is hard to maintain, then maybe you've gone too far, but it's a balance that needs to be weighed against business risk.
Yes. But the first kind of quality is enabled with the second kind.
Until we live in a faultless closed loop[1], where with AI "the entire application can be rewritten just as easily as making a small change." you still need the second kind.
[1] and it's debatable if we ever will
Your end users will eventually notice how long bugs take to get fixed, how long and how often outages occur, and how long it takes to get new functionality into your software.
But beyond your end-users, you likely have competitors: and if your competitors start moving faster, build a reputation of dependability and responsiveness, your business WILL suffer. You will see attrition, your CAC will go up, and those costs get absorbed somewhere: either in less runway, less capex/opex (layoffs), higher priced or all of the above. And that’s an entire domain AI isn’t (yet) suited to assist.
There’s no free lunch.
That’s the easiest way to get both definitions of quality as it’s way esier to test isolated modules and their integration than testing the whole system as a whole. And way easier to correct wrong code.
Moreover, I suspect the second kind of quality won't completely go away: a smart machine will develop new techniques to organize its code (making it "neat and clear" to the machine), which may resemble human techniques. I wouldn't bet much on it, but maybe even, buried within the cryptic code output by a machine, there will be patterns resembling popular design patterns.
Brute force can get results faster than careful planning, but brute force and planning gets results faster than both. AI will keep being optimized (even if one day it starts optimizing itself), and organization is presumably a good optimization.
Furthermore: LLMs think differently than humans, e.g. they seem to have much larger "context" (analogous to short-term memory) but their training (analogous to long-term memory) is immutable. Yet there are similarities as demonstrated in LLM responses, e.g. they reason in English, and reach conclusions without understanding the steps they took. Assuming this holds for later AIs, the structures those AIs organize their code into to make it easier to understand, probably won't be the structures humans would create, but they'll be similar.
Although a different type of model and much smaller, there's evidence of this in auto-encoders: they work via compression, which is a form of organization, and the weights roughly correspond to human concepts like specific numbers (MNIST) or facial characteristics (https://www.youtube.com/watch?v=4VAkrUNLKSo&t=352).
Tell that to the vagus nerve in the giraffe.
An AI will be as flustered by spaghetti as a human. Or not so much flustered it will just make willy willy changes and end up in an expensive infinite loop of test failures and drunken changes to try and fix them.
For reference, Tailwind 4 will not read in config files by default (which is the older behavior) - the encouraged practice is to configure customizations directly in the CSS file where you import Tailwind itself.
This won't be 100%, but that'll be the companies who're able to hire somebody to parse the problems that arise. Without that engineer, they'll be doing what OP calls 'vibe coding', meaning they'll neither understand nor be able to fix when the whole thing blows up.
As a consultant the majority of my work is around business process automation and integrating cloud systems. We build a lot of small "applications" that change almost constantly. The number of concurrent users is low, the lifespan of the software typically short and to justify the effort has to be done quickly and efficiently.
It's 100% "value engineering".
AI agent pairing has been an absolute game changer. It can single shot most requirements and refactors. I basically am just writing technical requirements and reading pull requests all day now.
I actually think the quality of the output has gone up significantly because you can just accomplish much more in the same limited budget.
Of course outsourcing software development hasn't gone away, but it hasn't become anywhere near as prevalent and dominant as its proponents would've had you believe. I see the same happening with AI coding - it has its place, certainly for prototyping and quick-and-dirty solutions - but it cannot and will not truly replace human understanding, ingenuity, creativity and insight.
Then remember when we said tests should be the specs?
Then we said the end users are the specs?
All of them can be construed as a joke in our erratic search for the correct way to write software without those $150k developers that seem to be the only ones getting the job done, assuming they have a competent management hierarchy and stock options incentives.
[1] We have a waterfall software and I wonder whether Crockford’s license “JSON should be used for good, not evil” was meant for me
What I am saying it is a mess from beginning to end and I am honestly not sure if there is one factor that could solve it..
What did your manager say when you said this to them?
Last time i was at a faang my org also had offices in one of those “low-income countries”. So in a way we haven’t stopped.
Also, depending on how you define “low-income” then up to two thirds of the organisation i worked in was in a low-income country.
No, when I was at a large, well-known company a year ago, job listings were 2:1 off-shore (India, South America) vs on-shore. There was also an increasing amount of contractors used, even for public-facing stuff you wouldn't expect.
If you have multiple of those, you can tell it about required sections / format, or provide a good past example.
As you say, by the time you specify everything, you've written the code.
I don't know if that's a good idea but a lot of people are going to try it.
What could go wrong?
Sadly not when it’s a 2000 page word document with a million formatting quirks and so many copy-paste versions you don’t know if you should trust “reqs_new25”, “reqs_new25v1” or the x number of other copies floating around.
I worked at [insert massive retailer here] a few years ago and this mindset is still very much alive.
And importantly make sure the user doing the brain work has the experience and support to do it properly. The XY problem can cause a lot of damage with AI agents that implement what's asked of them instead of asking why.
On another note, a related but somewhat different technique that I think is still under-appreciated is "vibe debugging", i.e. repeatedly executing commands (builds, tests, typechecks, dependency installs, etc.) until they run successfully. This helps a lot with what imo are some of the most tedious tasks in software development—stuff like getting your webpack server to startup correctly, getting a big C project to compile for the first time, fixing random dependency installation errors, getting your CloudFormation template to deploy without errors, and so on. It's not so much that these tasks are 'difficult' really. They just require a lot of trial-and-error and have a slow feedback loop, which makes them naturally a good fit for AI.
I put a lot of focus on execution control in Plandex in order to make it helpful for these kinds of problems. It's built to be transactional—you can apply the changes from the sandbox, run pending commands, and then roll back all changes if the commands fail. You can do this repeatedly, even letting it continue automatically for some number of tries until the commands succeed (or you hit the tries limit). While there are some limitations to the terminal modality in terms of UX, I think this is an area where a CLI-based agent can really shine.
Simple.
Paying attention saves you energy in the long run. In the words of Gus Levy, nothing wrong with being greedy, but there's two types of greed, long term and short term; the latter is stupid.
Of course for a throwaway project it's irrelevant by definition. But the problem is in professional work you cannot get away with low effort, you're just pushing your problems to the back and they'll come back with interest. Vibe coding is simply moving your problems to other people, or to yourself at a later point in time.
> embrace the vibes, but honor the craft
Those are just some of the questions that are in my head lately. I would appreciate other people's opinion.
> Do you think AI assisted coding has a negative impact on developer's growth?
Almost certainly. Easier to do things the easier way, but you never learn unless you do it the hard way. Maybe that won't matter -- i.e., the skills that one would've learned are now to be subsumed by AI. But as long as humans are needed, it will be necessary to build deep skills and understanding of systems, which AI coding does not seem to give us.
> Are today's juniors never gonna reach senior levels because of AI assisted coding?
Some definitely will, same as some people today get really good at programming in assembly. Almost certainly fewer will -- at least to what we today consider "senior".
> Is the need for developers gonna increase in the longterm but decrease in shortterm?
It all depends on the shape of the curve -- how far AI coding will be able to take us, and how fast.
It turns out to mostly serve the same purpose as low-code/no-code, where devs are needed to do 'serious' work and mixing the two becomes difficult? I doubt there'll be a slump at all.
It turns out to obviate the need for devs entirely, but only for certain common tasks -- or, it speeds up devs across the board by enough that significant double-digit (e.g. 40-50%) percentages of their work is now handled by AI? Then yes I expect we'll see a slump of some degree. But if it's not close to a 2x multiplier I expect we slump back to the first category, given just how much code it's clear there is still to be written.
On the other hand, though: if AI continues to advance and actually replaces developers 1-to-1 at lower cost? We're probably in for a sharp exponential and the question isn't how many developer jobs will be left, it's how long humanity has left.
nivenclay•6h ago
LPisGood•6h ago