Vibe Coding vs. Prompt Driven Development (PDD)
Comparing and contrasting two AI-development workflows
In addition to being a talented engineer and AI researcher, Andrej Karpathy is also a great product marketer. He recently coined the term “Vibe Coding” which I absolutely love. A couple people reached out to me asking if this is the same as Prompt Driven Development. The short answer is No, but I will explain in more detail below!
What is Vibe Coding?
Vibe Coding, as described by Karpathy, is an informal, playful approach to writing software where the developer fully embraces LLMs without worrying about code structure, maintenance, or long-term sustainability. It is characterized by:
Minimal human oversight: The developer relies entirely on AI-generated code, often without reviewing diffs or debugging deeply.
Rapid iteration and prototyping: Vibe Coding works best for throwaway projects, hackathons, and proofs of concept.
Exploratory, playful mindset: The process is more about "seeing what happens" rather than deliberate planning.
Conversational development: Interactions with the AI feel more like chatting with an assistant rather than structuring detailed development workflows.
Karpathy’s Take:
"I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works."
I personally practice Vibe Coding from time to time. But I don’t practice it on my products that are in production. Instead, I reserve it for small throw-away projects. I’m so grateful Karpathy coined this term because now I can give it a name.
What is Prompt Driven Development (PDD)?
Prompt Driven Development (PDD) is a structured methodology for leveraging LLMs in software development with the goal of producing scalable, maintainable, and high-quality applications. The defining characteristics of PDD include:
Clear methodology: Developers break down requirements into a structured series of prompts that guide the LLM through code generation.
Human oversight & review: PDD emphasizes code review, debugging, and validation to ensure high-quality results.
Designed for real-world applications: Unlike Vibe Coding, PDD is suitable for production-grade software.
Focus on learning and professional development: It serves as both a learning tool and an efficient workflow for experienced developers.
High-Level PDD Flow:
Developer receives requirements
Developer breaks requirements into structured prompts
LLM generates code for each prompt
Developer reviews and refines the generated code
Code is submitted, reviewed, and merged following standard development practices
This is the workflow I employ when developing my products that are in production, like distll.ai.
When to use each approach
The short answer is use Vibe Coding is the work is playful and exploratory, use PDD if the work is professional or educational.
Use Vibe Coding when:
You need a quick-and-dirty prototype.
You’re experimenting with new tech or ideas.
You don’t mind discarding the project later.
You’re working solo on a fun or weekend project.
Use PDD when:
You need structured, maintainable code.
You’re working in a team environment.
You need to scale an application beyond a prototype.
You want to systematically incorporate LLMs into your development workflow.
Where to find me
Plenty of opportunities for vibe coding in a professional environment as well. I’m currently rapidly iterating on a throwaway log parser because I got frustrated with the vendors log interface, this code will never leave my machine, never be looked at by anyone but me, and likely not touched again after I find the issue. A few years ago I’d just have stayed frustrated and used the vendors interface rather than spending an hour on the parser.
Brilliant. So many people are doing this.