Transcript for:
Understanding Vibe Coding

vibe coding is growing in Silicon Valley vibe coding vibe coding vibe coding been vibe coding vibe coding is the future vibe coding vibe coding seems like everyone's favorite buzzword but I'm not necessarily sure it really means anything on one hand it's the thing that we expect to do when we use some AI codegen tool and spit out a bunch of code and never look at it and make features but on the other hand there's a bunch of books coming out on how to be a good vibe coding engineer and I'm not sure that these definitions make sense at all anymore bipe coding is a cool concept that started when Carpathy made a post about how he's thinking about code and not thinking about code more importantly but now since the term is so cool feel like it's being used in places that make no sense at all i felt this way for a while but I started feeling it much more strongly when Simon Willis made this post if you're not already reading Simon's blog I highly recommend it not just because he covered my SnitchBench thing recently but because he's the creator of Django and he's quickly become one of my favorite people in the AI world he came in late similar to me not as late as me at all but came in somewhat late quickly established a awesome spot being like realistic but also excited about what these things can do one of the more reasonable AI bros by far and this post hit me hard because it's a thing I've already felt that he put really simply and I want to dig in a lot further here because I at this point don't even know if vibe coding is a real thing so before we can dive into what the hell vibe coding is we have some bills to pay so quick word from today's sponsor and then we'll get started i need to be honest with you guys i'm scared for people trying to learn today be it a new developer learning from scratch or an experienced developer trying to pick up a new tool or part of the stack making sure you find reliable resources that aren't some AI hallucinated slop is super difficult if you don't know what you're doing yet making sure you're learning from the right people is really hard and that's why I'm hyped about today's sponsor Frontend Masters you've been around for a while you know how skeptical I am of courses sure you know the old phrase those who do do and those who can't do teach but what if you put together a set of courses that were made exclusively by people who are already doing and what if their jobs and companies were so relevant that you would put their names right underneath the name of the instructor that's what you get with these guys because Richard Feldman built an IDE from scratch in Rust or Melky who is still somehow employed at Twitch okay joking melky's a good friend he knows his stuff really well and you've probably seen his videos too if you want to learn Golang there are a few better places to go than him or John Coopermanman who's one of the most legendary people in the TypeScript and webdev world working over at Bloomberg you got Prime in here who used to work at Hulu or something i don't remember you got Katie is one of the smartest people in the React Native community seeing her in here actually gets me really hyped i kind of want to go through those courses myself once we start building the T3 chat app if you haven't already made the plunge and you have a job there's a good chance your company will let you spend the education budget on front-end masters either way if you use my link you'll get 25% off so check them out today at soyv.link/masters so as Simon puts it in this post two publishers and three authors fail to understand what vibe coding means vibe coding does not mean using AI tools to help write code when you are inside of cursor and you click command K and tell it to do something and it does it or you tab complete as you're making changes none of that is vibe coding those are using AI tools to assist your development process vibe coding is when you command I and go in here and also close all of the files and never look at the code i would go as far as making the argument that you can't vibe coding and cursor because once it starts making the changes you have to look at the code it always does whereas on a platform like lovable which if I recall did not initially even have a code tab when it shipped it was just the view of the thing that it was building that's vibe coding when you're using AI to generate changes to a thing or even generate it from scratch not even looking at the code just running the thing and if it does get an error you copy paste the error into the chat and say "Fix it." Give it no additional context and trust the AI to vibe it out and make it happen that's vibe coding i'd make the argument that coding and vibe coding are almost like opposites they are diametrically opposed you are either coding or you are vibe coding you can assist the coding process with AI but vibe coding is replacing the coding process it is an alternative to coding as we mentioned before the term was coined by Carpathy at the beginning of 2025 back in February a lot of people asked if T3 chat was vibe coded vibe coding wasn't a thing when T3 Chat was built t3 Chat came out a few weeks before the word vibe coding existed as Carpathy puts it there's a new kind of coding that I call vibe coding where you fully give into the vibes embrace exponentials and forget that the code even exists it's possible because the LLMs like Cursor Composer with Sonnet are getting too good also I just talk to Composer with Super Whisper so I barely even touch the keyboard i ask for the dumbest things like decrease the padding on the sidebar by half because I'm too lazy to find it 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 i'd have to really read through it for a while sometimes the LMS 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 a throwaway weekend project but still quite amusing i'm building a project or a web app but I'm not really coding i just see stuff say stuff run stuff copy paste stuff and it mostly works there are a couple key points here that I would argue are key for the definition of vibe coding otherwise the term is useless so by Carpathy's definition not reading diffs is key not too bad for throwaway weekend projects the exact quote I think is important to put in here is I'm building a project or web app but it's not really coding that is really key here and the general concept of giving in to the vibes and giving up on the code these are the key pieces in my mind to what makes vibe coding while he does use cursor for it he emphasizes that he doesn't look at any of the code he even says that he forgets the code exists a lot of ways you can do that you can hide it in the UI you can refuse to read it when it comes up you can intentionally glaze over it when you're scrolling past it but not reading diffs focusing on throwaway projects and one-off things that don't have to be maintained having more code than you would ever comprehend or care to go through much less write yourself all of these things are what makes vibe coding vibe coding and as Simon puts in this other really good blog post I'm concerned the definition is already escaping its original intent i'm seeing people apply the term vibe coding to all forms of code written with the assistance of AI i think that both dilutes the term and gives a false impression of what's possible with responsible AI assisted programming vibe coding is not the same thing as writing code with the help of LLMs oh look at that he even bold the things here forget the code even exists it's not too bad for throwaway projects but it is quite amusing and similar to me Simon thinks that this definition is really good it is very useful as a term to distinguish between the different types of AI coding tools we have things like tab complete which used to be the co-pilot experience but now co-pilot is the most diluted term in the world even more so than AI so calling something co-pilot-like means literally nothing when you tell me something is co-pilotike the immediate thought that comes to mind is the app that every time I turn on the desktop I film these videos on automatically comes up in Windows with a new unique error code every time it opens that's what I think of when I hear co-pilot like so that term is gone we can't use that anymore tab complete is enough i guess it helps and now I'm at the point where I refer to these specific key bindings when I try to describe a flow the inline prompting in cursor I just call command K cuz that's the key combo you hit to do it and there isn't a better like shorthand term for it i guess like inline prompt editing maybe but I've never heard anyone say that then there's command I which has become the agentic AI code editing i just call it command I though and a lot of other people do too these different hotkeys might seem like a silly way to distinguish but it's the easiest way to explain what thing you're talking about and what feature you're thinking about and vibe coding is a very different thought it's a different way of thinking about and framing these things it's one where this isn't just for people who know how to write code to make their code writing more effective this is for people who may or may not know how to write code that are choosing to not bother reading it as Simon says Carpathy is an extremely talented and experienced programmer he has no need for AI assistance at all another important thing you don't need to be a good or bad or non-programmer to vibe code a great programmer can vibe code by not reading the code and a bad programmer or non-programmer can vibe code because they can't do anything with the code part anyways Kyper is using LLMs like this because it's fun to try out wild new ideas and the speed at which an LLM can produce code is an order of magnitude faster than even the most skilled human programmer for low stakes projects and prototypes why not just let it rip when I talk about vibe coding I mean building software with an LLM without reviewing the code it writes huge really good key distinction here as well from Simon we need terms to describe the different types of ways you could integrate AI into your coding process but as soon as you're talking about what percentage of your code base is coded with AI you're no longer vibe coding like if somebody says that their code base is 70% vibecoded I don't know if I even believe them i would say it's probably less because you look at the code you see it when you make other changes to the code you are paying some attention and even I when I I vibe coded the snitchbench ben benchmark I did not write a single line of code in one of the two giant files in that codebase but I did read a decent bit of it not a lot of it but enough of it i wouldn't call it vibe coding because I was paying attention to the code it wrote i wasn't just paying attention to the outputs i would argue that vibe coding is almost a ratio between how much are you paying attention to the code versus how much are you paying attention to the output like product that comes out of the thing that you built the ratio there specifically the ratio on the code side being zero where you're not looking at the code at all that's what defines vibe coding also important to note that using LMS for code responsibly is not vibe coding at all things like using code rabbit or graphites diamond to review your code is very far from vibe coding things like using command I and reading the diffs and rejecting the changes and asking it to do something differently that's not vibe coding anytime you're in the code is not vibe coding somebody asked in chat is this like saying you're not doing test driven development if you don't have 100% test coverage no this is like saying you're not doing test-driven development if you're writing the code before you write the tests this isn't about the percentage but if the percentage is 100 or zero it's usually a good indicator the fact that people are calling any AI involvement in their code vibe coding makes the term go from an actual useful indicator of this specific thing to entirely useless to the point where it should be thrown out i think we might even be over that line now where I don't use the term often because everyone thinks of something different when I say vibe coding some people think that what I'm doing in cursor is vibe coding some people think lovable and bolt are the ways that you vibe code some people think tab complete is vibe coding i like having terms to distinguish between these things both because I like talking about them and making content about them but also because we need to understand these things with language and the language we're using needs to be concrete and with definitions we agree on and I'm doing my best to help us all agree on the definition here especially because there are two books coming out that are not vibe coding this one immediately contradicts itself vibe coding building production grade software with genai chat agents and beyond i'm not going to blame the authors because the authors probably didn't pick the title the publisher did because they want to get on the hype bandwagon they want to make something that people will buy the issue is that this book probably isn't useful to people who are learning how to code and getting into building via vibe coding so if a non-dev buys this because vibe coding is the thing they're getting into and this book is written for real experienced programmers trying to use AI more which is what it seems like with this title and subtitle that is a super misleading thing to use a test development example again imagine if I made a book titled test-driven development how to build type- safe side projects effectively with tests that's not what test-driven development is the fact that you're saying side projects indicates that this isn't actually about test-driven development at all you just want to show me how to add tests to a thing or even better better example test-driven development how to strategically add tests to existing projects that's not what TDD is it's the opposite of what TDD is adding tests after means you're not driven by the tests test-driven development means that your development is driven by the tests vibe coding means that you are not reading the code this frustrates me so much or vibe coding the future of programming leverage your experience in the age of AI are you joking and this one breaks me because I love Adi Osmani he's one of my favorite people in the space but we all know O'Reilly Media picked this title i love this point from Simon as well i wonder if this is a new record for the time that a term was coined to the first published books using the term entirely incorrectly that is kind of crazy that in February this term was coined and 3 months later we now have books being published that use it wrong it's kind of nuts job of a dev is not just to churn out code and features we need to create code that demonstrabably works and can be understood by other humans and machines that will support continued development in the future again like Simon's not some crazy diluted AI bro these are all going to get replaced with like random agents and he wants good engineering and AI assistance all happen because all of these things can be good and vibe coding can be good too as a way to do things that matter less as he says we also need to read the code my golden rule for production quality AI system programming is that I won't commit any code to my repo if I couldn't explain exactly what it does to somebody else i love this shout this from the mountain tops don't merge code that you don't understand 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 poof bars and the reason that both Simon and I are mad as I've hinted at a bunch is that we shouldn't lose track of what makes Vibe coding special both because we need the term but also because it enables a new type of building that wasn't really a thing before a big part of why I made the T3 stack is it was too hard to glue all the parts together to make something simple quickly and I used it to build a bunch of small simple apps that solved real problems that I had that was a skill that used to make me really unique the fact that I could build a product in under a week that was actually useful to people was one of the big selling points of why you would bring me into your team or why you would listen to my takes on engineering ai has made it so most programmers can do that and even some non-programmers can too depending on the thing that they're building that is awesome i don't feel like I am at a big loss now that everyone else can build something from scratch as fast as I used to do it 5 years ago i think that's awesome i love the fact that more people can vibe out a project and honestly the vibecoded stuff that they're building is probably similar quality of code to the first two versions of Pic thing that I threw together in a day or two because I just wanted to make the thing work and now most people can make the thing work relatively quickly going from the mindset of like building enterprise ready everything to making a thing useful as quickly as possible was something I was lucky enough to have happen early in my career but even for me it was a hard shift to like stop stuffing GraphQL into everything where it's not needed vibe coding is helping others experience that of like letting go and knowing something is not ideal but not caring because you just want the thing to work i'm not saying that my way of coding 5 years ago was five coding at all it's not but vibe coding is a path to a similar outcome which I think is really cool another important point is that we shouldn't let vibe coding become this negative term specifically associated with irresponsible AI assisted programming like when people say "Oh that outage was probably because they vibecoded it." That's not right it's both almost certainly not true and even if it was is not a good way to use the term because the point of it is that you're using it on low stakes things that you're throwing together it's giving everyone this ability to build something quicker and more effectively by not caring about things they shouldn't care about the same way that I love Versel because spinning everything up serverless means I get to stop thinking about a ton of different problems vibe coding lets you do that for the entire codebase if it makes sense for the thing you're doing versel doesn't make sense for every backend vibe coding doesn't make sense for every project but where it does it's really useful and powerful you shouldn't need a computer science degree or programming boot camp in order to get computers to do extremely specific tasks for you if you need a calculator to keep track of a specific grind you are doing in World of Warcraft or you need a dashboard to keep track of this weird collection of things that you have for your small consignment shop you shouldn't have to force another tool not built for you to fit your needs especially if you're not a developer you should be able to make something that might not be perfect it might not even be good but it's good enough for you and your bespoke needs that should be accessible to everybody and that's what Vibe Coding is meant to do and it's really cool even if right now mostly actual developers are doing it more and more non-devs are and that is an awesome thing both because they can solve real problems but also they can start learning more about code and seeing that it's accessible to build these types of things bip coding is a gateway to get people into creating software and as a way for people to solve a problem without thinking about the code those are two really powerful things that we will lose if we swap it out so this term is used for all AI coding or for bad AI coding if vibe coding grants millions of new people the ability to build their own custom tools I could not be happier about it that is Simon's quote and I fully agree some of these people will get bitten by the programming bug and go on to become proficient software devs one of the biggest barriers to that profession is the incredibly steep learning curve especially at the start vibe coding shaves that initial barrier down to almost flat a thing I talk about a lot is time to smile from the time somebody starts doing the thing to the time they they smile for the first time where it worked or it happened and they're excited about it how long does it take to get over that i'm really lucky that I learned how to skateboard when I was younger because it takes a long time to go from standing on a board for the first time to being proud of a thing you did it takes months if not years to like land your first oie it took me two years to go from the oie to the kick flip and I learned a tre flip like a day or two later which is a much harder trick but that feeling that that vibe so to speak of I want to do this thing to wow I'm making progress this feels like something I can do because it's so hard to land that first oie that the vast majority of people who try give up before they get there it makes the end much more rewarding but if you don't see the end if you can't imagine what it will be like to be there you'll never get there it's the same reason there aren't many programmers because it takes so long to go from reading this esoteric language all these weird symbols you don't know to it doing the thing you want it to do this is why I like tools like React and Next and Stack Blitz and all the cool things that the React docs have done because it lets somebody go from I want to figure out code to I made this change and this thing happened and I feel like I'm starting to understand it and then they smile because they're making progress and they can feel it vibe coding gets you that first smile so much faster it makes you feel like you can do it and if you then run into a bug that makes life way harder and you have to go dive in and fix it at least you have a path there you don't have to rely on some smarter person to hold your hand through it like I and many other devs did you don't have to go spend a bunch of money on a college that doesn't even teach you how to do these things in the first place you start by letting go and just trying to make the thing happen and then ride the wave from there i would expect there to be a ton of incredibly talented devs that get in through this and I am excited to see where they go with all that said should probably talk about when is it okay to vibe code if you're an experienced engineer this is likely obvious to you already so I'm writing this section for people who are just getting started project should be low stakes think about how much harm the code you're writing could cause if it has bugs or vulnerabilities could someone be harmed damaged reputation lost money or something worse particularly important if you plan on building software that will be used by other people that's a big detail there if you're building things that are just for yourself who cares like when I built the first two versions of P thing they were just for me they were poorly architected tons of bad decisions i didn't have to worry about other engineers contributing so I didn't care i didn't have to worry about other people using it so I really didn't care but then when it was time for me to put it out for others to use I literally started a third repo and rewrote the whole thing from scratch so that it was in a state that people could actually use it and I would be confident in the safety of the product code that you vibe code you should be more than okay with throwing away entirely because it it's disposable that's the point it's also important to consider security watch out for secrets things like passwords and API keys there's always been a problem people leaking their API keys and things but it's getting worse now more than ever if you don't know what an API key is I don't know how the hell you stumbled into this video be careful about what you build please data privacy is also a really big concern it's also important to be a good network citizen a makes requests out to other platforms could increase load as well as cost on those services plot artifacts apparently keep you from making requests out that's a cool thing to see it's very easy to accidentally screw over someone else if you're building a tool on top of their tool and you hit some endpoint that the AI finds i've definitely caused some damage to SoundCloud with hitting APIs you're not supposed to so I know that feeling and of course is your money on the line seen horror stories about people who vibe coded a feature get some API without a billing limit and racked up thousands of dollars in charges be very careful about using vibe coding against anything that's charged based on usage fully agree simon has a section on how do we make vibe coding better links in the description if you want to read this all of his posts are great but I highly recommend these ones wrap it up with go forth and vibe code i agree with the sentiment here too simon says people should not feel discouraged and I totally agree vibe coding is really cool both for figuring out what these tools are capable of and unlocking the ability in your brain to throw together something you wouldn't have bothered with before a project that might have taken 3 to 4 days and not been that useful before can now be done in 1 to two hours it might be prettier looking in some ways it might be less functional in others it might be code you never want to touch again it might use a framework you don't even like but you can vibe code out something useful to you hilariously quickly and through that you get to see so much of the capabilities of these tools of these models of these agents and quotes and the things that they call you can learn a lot about both how powerful AI is and more importantly you can rethink when it makes sense to spin up a real project with developers versus a quick little thing on the side there's a lot you can learn from and a lot you can change about how you build regardless of how experienced you are vibe coding is a useful thing to learn for most engineers and I have been very surprised at my willingness to vibe code since I took a similar stance i wouldn't have done things like the cloneon if it wasn't for vibe coding not because I think people should vibe code their T3 chat clone but because the clone submission portal and all of that was annoying to build and I was able to vibe code out the starting point very easily and there's a lot of these types of projects that I previously would have put on the backlog and never gotten to that suddenly make much more sense so if you are scared of vibe coding if you hate vibe coding if you think the term should be used for all the other things I'd recommend sitting down and actually trying it the way that Simon and Carpathy and now myself describe it because while it is not the right way to build real production enterprise software it is certainly a good way to throw something together that otherwise might not exist at all let me know what you guys think until next time keep vibing