Vibe Coding
AI-Assisted Coding for Non-Developers
I’m a big fan of Cursor for coding with AI, and this movement now has a name — “vibe coding” — which allows people to create programs by describing what they want in natural language and letting AI handle much of the actual coding.
What is Vibe Coding?
Vibe coding is a term for coding with the assistance of AI — essentially, using AI tools to do the heavy lifting of writing code while you focus on guiding the process with ideas and descriptions. The phrase started as a Silicon Valley buzzword (coined by AI expert Andrej Karpathy) to describe “using AI tools … for the heavy lifting in coding to quickly build software”. In vibe coding, you don’t write every line of code by hand. Instead, you communicate what you want (the “vibe” of the program or feature), and the AI generates the code for you.
This approach marks a shift in how software can be created. Traditionally, developing software meant knowing programming languages and writing precise syntax. But AI advancements are changing that paradigm. Modern AI coding assistants can understand plain English problem descriptions and produce working code. As Karpathy humorously noted, “the hottest new programming language is English” meaning that describing what your program should do in English can be as effective as writing the code yourself. Vibe coding embraces this shift from manual coding to AI-assisted generation.
The term “vibe coding” gained popularity after Karpathy shared his experience of building software by fully giving in to the vibes — essentially forgetting about the code and just iteratively prompting the AI. “It’s not really coding — I just see stuff, say stuff, run stuff, and copy-paste stuff, and it mostly works,” he wrote, highlighting how different this feels from traditional programming. In other words, vibe coding is more like conversing with your computer about what you want, rather than manually typing out every function. This idea of programming by chat (or even by voice) has opened up programming to people who might not be fluent in any coding language. One enthusiast described vibe coding as programming “by chatting with LLMs or even by voice” instead of writing code directly.
AI assistance is lowering the barrier to entry for creating software. People with ideas but little coding experience can now build prototypes by describing their vision to an AI. Meanwhile, even experienced developers are using these tools to automate rote tasks and speed up development. AI can generate boilerplate code (the repetitive, standard parts of programs) so that humans can focus on higher-level design. It’s also enabling much faster prototyping — what might take days or weeks to code from scratch can sometimes be achieved in a few hours of back-and-forth with an AI. This democratisation of coding means more people can bring their ideas to life. “Software engineers have remained in hot demand… but the arrival of AI that can ‘vibe’ code into existence has some industry leaders predicting big changes,” with experts expecting software engineering to look “very different by the end of 2025” due to these AI capabilities.
How Vibe Coding Works
Vibe coding works through a tight interplay between human guidance and AI generation. Humans provide instructions, descriptions, or goals in everyday language, and AI tools translate those into code. The process is typically iterative and interactive:
- You describe what you want: For example, you might say “Create a simple web page that displays the current weather for a city the user enters.” This description (called a prompt) is given to an AI coding assistant.
- The AI generates code: The AI, which has been trained on vast amounts of programming knowledge, will attempt to produce code that fulfills your request. It might write the HTML, CSS, and JavaScript needed for the weather page automatically. Essentially, the AI acts like an autocomplete on steroids — it predicts the code that matches your description.
- You review and refine: After the AI provides some code, you (the human) check it. Does the web page work? Maybe the AI’s first attempt has issues or isn’t quite what you envisioned. You then tell the AI what to change or fix. For instance, “The page looks too plain, make the design more colorful and add error handling if the city is not found.” The AI will take this feedback and modify the code accordingly.
- Iterate as needed: This cycle continues — describe changes, get new code, test it out — until you’re satisfied with the result. Because the AI can produce a lot of code quickly, you might go through multiple iterations in a short time.
Modern AI coding tools are quite powerful. They not only generate code from scratch but can also help debug and improve it. For example, if the code doesn’t run due to an error, you can paste the error message into the AI chat and ask for help. Karpathy noted that when he gets error messages, he simply copies and pastes them into the AI and “usually, that fixes it”. The AI can read the error and suggest a correction in code. This means you can troubleshoot problems even if you don’t fully understand the programming error — the AI will explain or fix it for you.
Natural language prompts replace traditional syntax-heavy coding in vibe coding. You don’t need to remember the exact syntax for a for-loop or the parameters of a library function — you just tell the AI in plain language what you want to achieve, and it writes the syntax for you. It’s as if you’re pair-programming with a very knowledgeable assistant: you provide the intent, the assistant writes the actual code. Tools like GitHub Copilot have demonstrated this capability well: “When provided with a programming problem in natural language, Copilot is capable of generating solution code.” It can even turn comments (written in English) into runnable code and fill in entire functions for you. Vibe coding extends this concept to bigger tasks — even creating whole modules or simple apps from a high-level description.
Example: To illustrate, imagine you want a program that takes a list of names and sorts them. Traditionally, you’d have to write the code, perhaps in Python, using the correct syntax (sorted(names) etc.). With vibe coding, you might open your AI coding tool and simply say: “I need a Python function that takes a list of names and returns them sorted alphabetically.” The AI would then produce something like:
def sort_names(name_list):
"""Return the list of names sorted alphabetically."""
return sorted(name_list)
It may include comments or documentation if asked. If you then say, “Also make it case-insensitive (so ‘alice’ and ‘Alice’ are treated the same),” the AI could refine the code accordingly. You didn’t have to recall the exact syntax for sorting with a key function — the AI handled it based on your description.
For more complex tasks, vibe coding can generate larger blocks of code or multiple files. One blogger shared how he simply described a full application and the AI built a working (though rough) prototype. He prompted the AI to “Create me a React app from scratch… an app which can take a photo of a menu in a restaurant, translate it, then show a list of food with images… It must be a PWA with a camera button…” and so on. The AI (in this case, an AI model called Claude running in a tool called Cursor) generated an entire React project structure and code in response. The first attempt wasn’t perfect — the structure was messy and had issues — but it ran with minor tweaks. This demonstrates how vibe coding can produce a sizable chunk of a project from just a description. You might get a lot of code at once, which you improve through guidance.
AI-generated code based on human descriptions can achieve impressive results quickly. In one real-world example, an enthusiast used vibe coding to create a web app for a DIY drawing robot. He described to the AI how the app should take an SVG image and convert it to motor commands for the drawing machine. The AI produced a “functional-seeming site” that did exactly that, allowing him to finally realise a project he’d been thinking about for a year. What’s remarkable is that this happened before he even built the hardware fully — the software was ready in the morning, largely written by the AI from his descriptions, showcasing “vibe coding for the win!).
Because the AI handles syntax and heavy lifting, vibe coding can dramatically shorten the programming learning curve. Tasks that would have required learning a programming language and framework can now be done by describing the end goal. One Cambridge researcher observed that “for a total beginner who’s just getting a feel for how coding works, it can be incredibly satisfying to build something that works in the space of an hour” using these AI-assisted methods. In other words, someone with no programming experience can potentially create a simple working app extremely fast — something previously unimaginable without months of learning.
It’s important to note that vibe coding is usually an iterative process. The AI might not get everything right on the first try. You guide it like a junior programmer: step by step. Humans still have to have a vision of the final product and break the project into manageable tasks or prompts. But the AI handles the tedious parts and even helps catch mistakes along the way. This synergy between humans and AI — human sets the direction, AI executes and suggests — is at the heart of how vibe coding works.
Tools for Vibe Coding
Several tools and platforms have been developed to facilitate vibe coding. These range from AI-enhanced code editors to web-based coding assistants. Here’s an overview of some popular tools and what they offer:
Cursor
Cursor is an AI-powered code editor based on Visual Studio Code (VS Code). It integrates AI directly into your coding environment. Cursor provides a sidebar chat (called Composer) where you can instruct the AI, and it will write or edit code in your files. One of Cursor’s core features is the ability to “explore code, write new features, and modify existing code” via natural language in the Composer chat. It has two modes: a normal mode and an “Agent” mode. In normal mode, it acts like a smart assistant that waits for your prompts and then makes code changes which you review. In agent mode, it can take higher-level commands and execute multiple steps (even running commands or managing files) independently. Cursor is known for giving the user much control: for example, you explicitly choose which files or sections of code the AI can see, showing you diffs (changes) before applying them. This means you always get to review the AI’s output and accept or reject it. There are also handy “AI buttons” in the interface — e.g. a “Fix with AI” button appears when you encounter an error, which triggers the AI to suggest a fix. Because it’s built on a familiar editor (VS Code), developers find it comfortable, and non-developers benefit from the interface that visually highlights what the AI is doing. Cursor is currently one of the flagship tools for vibe coding, often mentioned alongside the vibe coding trend.
Replit
Replit is an online coding platform (an IDE that runs in your browser) which has embraced AI-assisted development. Replit’s CEO Amjad Masad notes that “vibe coding is already here”, pointing out that 75% of Replit customers never write a single line of code. These users are likely leveraging Replit’s libraries, templates, and its AI features (like Replit’s Ghostwriter AI) to build apps without manually coding everything. Replit has an AI chat built into its IDE that can generate code, explain code, and even deploy applications from simple prompts. Because it’s online, there’s no setup — you can start a project with one click and then describe what you want in the chat. Replit’s approach is very friendly for non-developers: you can create a web app by typing what you want and letting the AI create the HTML/CSS/JS, and then you see it live in the preview window. It’s a quick way from idea to running software, and it’s all in the cloud.
GitHub Copilot
Copilot is an AI pair-programmer developed by GitHub and OpenAI. It works as an extension in code editors like VS Code, and it autocompletes code as you type. While Copilot originally focused on suggesting the next line or block of code, it has evolved also to include a chat mode (Copilot Chat) where you can ask coding questions in natural language. Copilot is very useful for vibe coding because you can, for example, write a comment like // sort a list of strings alphabetically in your code, and Copilot will generate the code to do that below the comment. It can produce solution code from a natural language description of a problem. Copilot’s strength is in assisting you as you write — it’s constantly suggesting possible implementations. For a tech-savvy non-developer, Copilot can feel like a smart autocomplete that understands your intent. However, it’s usually used by folks at least dabbling in writing code, as it integrates into the coding environment rather than a chat interface alone. It’s a great tool if you want to start learning actual code with AI help.
ChatGPT and other LLM-based assistants
OpenAI’s ChatGPT, Anthropic’s Claude, and similar large language model (LLM) chatbots can also be used for vibe coding even though they are not dedicated coding IDEs. Many people simply open ChatGPT in their browser and describe the program they want. ChatGPT can output code in formatted blocks for you to copy-paste into your environment. For example, you could say “I want a simple HTML page with a form to input a number and a button that calculates the square of that number using JavaScript” — ChatGPT will happily generate the HTML and JS code. It will even explain the code if you ask. The limitation is that ChatGPT doesn’t run or test the code, so you have to do that part. However, as a coding assistant, it’s very powerful. There are also plugins and enhancements (like ChatGPT’s Code Interpreter environment, and community plugins) that can execute code or manage files, inching it closer to a full-vibe coding tool. Similarly, Claude by Anthropic is known for handling very large prompts (which can be useful if you feed it a lot of existing code and ask for modifications).
Windsurf AI
Windsurf is another AI-driven code editor/IDE, often compared to Cursor. Windsurf takes a slightly different philosophy: it has an agentic mode by default that tries to do things more automatically for you, making the experience very streamlined for the user. For instance, Windsurf will automatically pull in relevant parts of your codebase and even run the code to show you results as it generates changes. The idea is to keep you “in the flow” — describe what you want, and Windsurf’s AI will directly apply it and show the outcome, allowing quick iterations. Cursor, by contrast, makes you explicitly accept changes. Each approach has its pros: Windsurf is a bit more “it-just-works” with fewer manual steps, which might appeal to non-developers who want simplicity, whereas Cursor provides more checkpoints and manual control (appealing if you want to inspect every change). Both are useful for vibe coding; it often depends on user preference.
The good news is that these tools are becoming more user-friendly. They aim to let you code in natural language, with features that guide you if you’re unsure what to do. For example, Cursor’s interface will prompt you with suggestions or show an “AI commit message” for changes it made to summarise what changed. This helps you learn and keep track. Replit might suggest the next steps after you get something working (like “Do you want to deploy this web app?”).
Let me know how you have used these tools to vibe code.
Niall McNulty is Product Lead for Education Futures at Cambridge University Press & Assessment, focusing on AI and educational technology solutions for diverse global contexts. Niall is a specialist in using AI for teaching, learning and professional support.
Subscribe to his SubStack: