What Is Vibe Coding? A Beginner’s Guide to Building with AI
Vibe coding turns plain-language ideas into working software with AI. Learn how it works, try a tiny project, and know when a prototype needs real engineering review.

On this page
What Is Vibe Coding? A Beginner’s Guide to Building with AI
Imagine telling a computer, “Make me a little app that helps me remember to water my plants,” and watching it draft a screen, write code, and launch a first version. You point at what feels wrong. It tries again. Pretty soon, your windowsill has a tiny digital assistant.
That conversational, try-it-and-see style of building software is called vibe coding. It can make the first step into programming feel wonderfully small. The trick is knowing where playful speed helps—and where you need to stop, look under the hood, and check the work.

So, what does “vibe coding” mean?
Vibe coding is a way of creating software by describing what you want in ordinary language and using an AI tool to generate or change the code. You run the result, react to it, and ask for the next change.
The term was introduced by AI researcher Andrej Karpathy in a February 2025 post. In its original playful sense, it meant leaning into the rapid back-and-forth and not spending much time inspecting the code itself. Today, people also use it more broadly for conversational AI-assisted building. Those ideas overlap, but they are not quite the same:
| Style | Who steers? | What happens to the code? | Best fit |
|---|---|---|---|
| Vibe coding, in the original sense | You steer by feel and visible results | You may accept changes without reading much code | Throwaway experiments and playful prototypes |
| AI-assisted engineering | You steer with requirements, context, and review | You inspect, test, and maintain the changes | Software other people will depend on |
The name sounds like “just ask and ship.” A better mental model is: you are the director; the AI is a very fast improviser. Give it a clear scene, watch what it does, and keep your hand on the edit button.
How the loop works
You give the AI a goal. It uses the conversation and any project context you provide to propose code, and in an agent-style tool it may also inspect files or run commands. You review what changed, run the app, and tell it what to adjust.
Idea → prompt → generated change → run it → inspect → refine
This is why vibe coding can feel like a jam session: each working version gives you something concrete to respond to. Current development tools support different modes, from quick in-place edits to agents that can plan across files and use tools. Bigger requests need more context and more oversight.
Let’s vibe-code a tiny plant-care app
Choose a harmless, small project. We’ll make a plant-care checklist that stores data only in the browser—no accounts, payments, or real personal information. You can try the prompts below in an AI coding tool that can create or edit a project.
1. Start with a tiny first version
Try this opening prompt:
1Build a simple plant-care checklist for one person.
2For this first version, show three sample plants, each with a name
3and a “Watered today” checkbox. Make the layout friendly and usable
4on a phone. Save changes only in this browser using local storage.
5Do not add accounts, a database, analytics, or extra dependencies.
6First tell me which files you plan to change, then implement this
7small version. Explain how I can run it.Why this is easier to work with:
- It names one user and one main job.
- It describes visible behavior, not just “make it awesome.”
- It sets boundaries so the assistant doesn’t invent a login system.
- It asks for a plan and a way to run the result.
2. Run it and react to what you see
Open the app. Can you tell which plants need attention? Does the checkbox still look checked after refreshing? Does the screen fit on your phone?
Give the AI one change at a time. For example:
The plant cards are too tall on my phone. Reduce the spacing,
but keep the plant name and checkbox easy to tap. Show the exact
files you changed and how to check the mobile layout.The most useful feedback points to a specific behavior. “Make it better” makes the AI guess; “the checkbox is difficult to tap on a narrow screen” gives it a target.
3. Ask for proof, not confidence
Before calling the prototype done, ask what it changed and how to verify it:
Summarize the changes. Tell me what data this app stores and where.
List the checks you ran, any checks you could not run, and known
limitations. Do not claim a check passed unless you actually ran it.Then perform the checks yourself. A convincing explanation is useful, but it is not the same as working software.
A prompt recipe that keeps the session on track
For small app changes, include five ingredients:
- Goal: what should the user be able to do?
- Context: which screen, files, or existing behavior matter?
- Boundaries: what should stay untouched? What should the app not add?
- Acceptance checks: what would let you say “yes, that works”?
- Review request: ask for a concise summary, changed files, and test results.
For example: “On the plant list screen, let me add a plant with a name. Keep the existing layout and local-only storage. Don’t add a server or new package. Empty names should show a helpful message; after adding a plant, it should appear in the list and remain after refresh. Tell me which files changed and how you verified those behaviors.”
That’s more useful than a long, cinematic paragraph because every sentence gives the AI something it can act on or check.
When is vibe coding a good fit?
It shines when the goal is to explore an idea quickly:
- A personal calculator, checklist, or small one-off tool
- A mockup to help explain an idea to a team
- A learning project where you can experiment and undo
- A throwaway prototype with fake or non-sensitive data
Be much more careful when software handles money, health, identity, private information, critical business operations, or real users. A screen that looks polished can still have fragile logic, insecure defaults, or missing failure cases.
| Ask yourself… | A comfortable answer for a prototype | A reason to pause |
|---|---|---|
| Who will rely on it? | Me, while experimenting | Customers, patients, coworkers, or the public |
| What data does it touch? | Sample or non-sensitive data | Passwords, payment, health, or private data |
| What if it fails? | I can reset and try again | Someone could lose money, access, or important work |
| Can I explain how it works? | Mostly, with a few questions left | I can’t tell what the generated code or command does |
If you hit a reason to pause, bring in someone who can review software security and reliability before launch.
Keep the fun; add the engineering
AI-generated code can look right and still be wrong, incomplete, or vulnerable. GitHub’s responsible-use guidance tells users to review and test agent output, and NIST’s secure-development guidance for generative AI reinforces that security belongs throughout the software development lifecycle. In practice:
- Read the change summary and inspect the diff. Watch for unrelated rewrites and unexpected files.
- Run the app and the project’s checks. Try the normal path, an empty input, a strange input, and a failure case.
- Use version control. Make a checkpoint before a larger request so you can compare or undo.
- Protect secrets and private data. Don’t paste API keys, passwords, customer data, or confidential code into a tool unless its data terms and your organization’s policy allow it.
- Be careful with commands. Understand what an install, migration, or deletion will do before you approve it.
- Ask for explanations. If you can’t explain a change, ask the AI to walk through it—or get a human review before relying on it.
These habits don’t ruin the creative flow. They let you move quickly while keeping the steering wheel.
Your first ten-minute vibe-coding challenge
Build a tiny “What should I read next?” picker with three books you invent. Ask for a shuffle button, a reason for each recommendation, and a layout that works on a phone. Keep all data fictional and local. Then try to break it: empty list, repeated clicks, refresh, narrow screen.
When it works, ask the AI to explain one small part of the code. If you can describe what the app does, what it stores, and what might fail, you’ve turned a vibe into something you understand.
Sources and further reading
- Andrej Karpathy’s original post on vibe coding — the phrase’s playful origin.
- Visual Studio Code: Best practices for using AI — choosing an interaction mode, providing context, and reviewing generated work.
- Visual Studio Code: Context engineering guide — giving coding agents focused project information and iterating on a plan.
- GitHub: Responsible use of Copilot agents — capabilities, limitations, and human oversight.
- NIST SP 800-218A — secure development practices for generative AI and dual-use foundation models.
Read next

How to Generate Audio from Text with Text-to-Speech (TTS)
Turn a written script into spoken audio: try your browser’s built-in voice, then generate an MP3 with a modern text-to-speech API. Learn voice selection, SSML pronunciation fixes, and quality checks.

How to Label AI Data: A Practical Guide to Better Training Examples
Learn to label AI data with a clear task, practical label rules, a small pilot, and quality checks that catch disagreements instead of hiding them. Includes a worked customer-support example.

Build Your Own MCP Server: Give AI a New Superpower
Build a tiny MCP server from scratch: expose a useful tool, connect it to an AI host, test the conversation, and learn the safety checks that turn a fun demo into a solid integration.
Comments
Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.