← Back to Blog

Vibe Coding in Practice

Manuel Odendahl

From the Agentic Engineering Sessions

Aired on September 23rd, 2025


We hosted Manuel Odendahl, an engineer with 20+ years of experience, to explore "vibe coding" with us. Instead of the typical back-and-forth of prompt engineering, Manuel runs multiple AI models in parallel, treating each as a specialized tool for different aspects of development.

Over 45 minutes, Manuel built a Doodle calendar clone live while walking us through his workflow. We watched him sketch ideas on his iPad, fire off prompts to multiple models simultaneously, and use YAML DSLs as an intermediate layer between natural language and executable code.

His technique involves managing expectations, learning from AI failures, and leveraging his engineering experience to guide models without micromanaging them.

You can watch the full session on YouTube or read below for selected quotes from the session.

Defining Vibe Coding

"I define it as kind of using the LLM without really looking at the output code. Like obviously caring about how it works, but not really looking at the code is how I define it." — Manuel Odendahl

"It's not like the end all be all right, like I'm not just gonna vibe everything and push it to prod. But I think it's a really interesting new modality of writing software. In the same group as like, oh, you can like do pair programming to write software, right? You can do like whiteboard designs to do software." — Manuel Odendahl

YAML DSLs as the Secret Weapon

"I use it pretty much for everything. It's just a way of like, oh, it's a slightly more formal way of doing natural language. Right. Like if you think of LLMs as transformers, like an LLM doesn't know if it's writing code or if it's writing natural language." — Manuel Odendahl

"If you give this to someone who's not a programmer, they'll kind of be able to say like, well, I'm adding slots from, you know, 10:00 PM to 10:45 to a doodle, because it's actually just like natural language transforms a little bit. But it's formal enough that I can suddenly interpret it as code." — Manuel Odendahl

"As long as I generate YAML, I have very tight control over the sandboxing of it, yet I can build a lot of features that are actually relevant to my app. I can vibe a lot of stuff and be really sure that it doesn't do anything." — Manuel Odendahl

Managing Expectations and Learning from Failures

"It's like the sonet roulette. You never know what's gonna come out. It can be like complete, complete nonsense, right? It will say like, I completed everything. And you look at it, it's like a shell script that says Echo Hello? And you're like, uh, okay." — Manuel Odendahl

"When an LLM fails to do what I wanted to do, I know that I tried hard enough, right? Like if it succeeds always, it's like, okay, I'm not exploring what these tools actually can do since they evolve all the time." — Manuel Odendahl

The Vibe Coding Skill

"I think it's really a skill that that is hard to learn and hard to practice in the sense that the more you do it, the more you'll be like, oh yeah, Claude from March has this behavior and I've tried like long enough to realize that this is like a good way to prompt it." — Manuel Odendahl

"Despite not looking at the code, you'll be like, I think, you know, and they just like maybe peek at the code and be like, yeah, it doesn't have an ID in the database, you know, prompt it and then it fixes it." — Manuel Odendahl

Learning Through Vibe Coding

"At the same time as I was building the tool, just saying like, oh, I wanna see the vault from a YAML file, for example. I was learning more and more about how Vault works. I would have it generate like tutorials for me. To understand how what I just generated works." — Manuel Odendahl

"So I still haven't read the code of this, but I kind of know pretty well how it works. 'cause I've asked it to explain like a lot of these things as it went." — Manuel Odendahl