Image of a man wearing glasses and a white shirt sitting at a desk talking on a phone, with a computer smoking in the foreground.
January 27, 2026 - 23 min 38 sec

Yelling at Vibe Coders

“I built it in six hours. Let’s deploy it to production!” On this week’s podcast, Paul and Rich engage in one of their favorite pastimes: Corporate roleplay. Taking on the personas of Doug, a vibe-coding engineer, and (Mr.) Jeremy, his skeptical boss, they act out a scenario that’s surely unfolding at organizations large and small right now. Doug might be too hasty when he declares his vibe-coded software ready for client use, but is Jeremy actually being too cautious? 

 

Subscribe to the podcast, or watch the episode on YouTube.

album-art
00:00

Show Notes

  • Paul on the mistake of thinking you can “one-shot” with AI-assisted programming: “Triple-A Vibe Coding.”

Transcript

Paul Ford: Hi, I’m Paul Ford.

Rich Ziade: And I’m Rich Ziade.

Paul: And this is The Aboard Podcast, the podcast about how AI is changing the world of software. It is really changing the world of software these days. And I think we’re gonna do some…roleplay.

Rich: What’s the safe word?

Paul: Claude. [laughter]

[intro music]

Paul: Okay, Rich, you and I have established our roles. They will become very clear to the listener.

Rich: Yes.

Paul: I am the president of Aboard. You are the CEO of Aboard. Except for that one week where we were switched. But we don’t have to get into this right now. Tell me what Aboard does and what Aboard is as a company.

Rich: Aboard is a collection of people and some great tech that ships reliable, high-quality software, usually for businesses, but we can build a lot of different things, and we do it real fast. Real fast. The tools we use are magical, but we don’t give the tools to the world. We use them to ship solutions that you need.

Paul: So if you have a sort of business-shaped problem. I mean—

Rich: Business-shaped problem.

Paul: I have a custom application. I have all sorts of complicated accounting needs—

Rich: Data laying around.

Paul: Ugly stuff.

Rich: Yes.

Paul: Ugly stuff. And it’s the roadmap stuff that your people keep saying, like, “Boy, we just don’t have time for that.”

Rich: Yep.

Paul: Check us out.

Rich: Yeah.

Paul: And in fact, if you’re confused, by the way, if you go on YouTube and you watch this podcast, first of all, you will see that we have branded microphone holders now that say—

Rich: If there’s a reason to watch the video and not just listen to the audio, it’s this.

Paul: If you don’t watch the video, but you prefer this in audio, you and I are both 35 years old and I’m very thin.

Rich: Mmm…yes.

Paul: Yes. Okay. So those are the roles we play all day.

Rich: That’s our lives.

Paul: Those are the masks we wear. [laughter] We’ll talk about that some other time. But you give me my role, okay? You tell me what you’re gonna be and what I’m gonna be, and then we’re gonna, we’re gonna dramatize the vibe-coding fallout.

Rich: Okay. You are a forward-looking, just utterly, endlessly curious engineer who loves trying new stuff. The AI stuff is not a turn off to you at all. You think it’s great. You think you can work faster and better, and you can, you think you can impress me. I am a tired engineering manager who has back problems and is suspicious about all this stuff, because while you get to play with things, I have to answer to the business people. And I’m always worried about the proverbial shit hitting the proverbial fan.

Paul: Sadly, this actually dramatizes a lot of our real-life relationship. So this is really good. What’s my name?

Rich: Doug.

Paul: Okay. Of course it is. What’s your name?

Rich: Jeremy.

Paul: Of course it is. Okay, so Doug and Jeremy. I’m Doug. I’m excited. What have you asked me to build?

Rich: It’s a gnarly problem. We have an expense-tracking tool.

Paul: Mmm.

Rich: But because—

Paul: Inside of our, like, Fortune 100 company.

Rich: Inside of our Fortune 100 company. But our people are always fractional across many clients, and different client arrangements have different expense-tracking options. So for some clients, they cap out at $200 a week. You can’t spend more than $200 a week unless you get written approval. Other clients, it’s pretty much unlimited, because they’re big clients for us. And so when you buy something, like a donut while you go on, you’re on the road, you have to expense it back to us, and then you have to pick which client it is. And once you pick which client it is, it has to run particular calculations to see if you had money left and if you could use it, and it’s a messy, messy problem. The way we deal with it today is a spreadsheet. And that spreadsheet has to get then put back into the invoicing that has to show our expenses, expense reimbursement, on top of the hours that you spent on the client work. It’s terrible.

Paul: As you’re describing this, I can feel the listener graph just declining because it’s so horrible.

Rich: It’s just a horrible reality of business.

Paul: Stay with us because the drama’s coming.

Rich: Yeah. So, talked to you about this two and a half weeks ago. What’s up, Doug?

Paul: Oh, Jeremy. Mr. Jeremy. Hi.

Rich: It’s Mr. Jeremy, by the way.

Paul: It’s me, Doug. You might remember me.

Rich: Hey, Doug.

Paul: I’m one of, like, 360 engineers who work for you.

Rich: Yeah. Cool Lord of the Rings t-shirt, Doug.

Paul: Thank you. So, remember, it was supposed to be two and a half weeks, but like, four days ago you were like, I really need some help on the expense tracker.

Rich: Doug, real quick. I told you not to bring the styrofoam sword to the office.

Paul: We’re doing the—

Rich: Are you LARPing again at lunchtime?

Paul: Yeah, but we do, it’s a special interest group inside of the company, and you approved it.

Rich: Okay, fine. Continue.

Paul: You can call me Lord Doug from here on out. [laughter] I know that you gave me three weeks to do this, but actually, and I know I’m not supposed to use any actually interesting or good software tools inside of the organization.

Rich: That’s correct.

Paul: I did go home and I put the spreadsheet on a USB stick. And I know this is a huge violation of every policy.

Rich: Yes.

Paul: Okay? But you’re going to forgive that for a minute, because I’m going to show you something absolutely wackadoodle, Jeremy.

Rich: Whoa!

Paul: Okay?

Rich: Okay.

Paul: Come to my Windows XP machine that we have provisioned.

Rich: Okay.

Paul: And let me bring this bad boy up. I used Claude to build this.

Rich: Okay…

Paul: This is a working application. This is not a prototype.

Rich: Okay.

Paul: Okay? This has a database behind it and it has a beautiful interface. It looks really nice.

Rich: Mmm hmm.

Paul: And it’s built in the official language that we like to use, dot…

Rich: Net…

Paul: [laughing] Dot.something. Right? And so I’m going to show it to you because in a few days I was able to do what used to take months to get good. And I think it’s really amazing. And so you gave me that spreadsheet. I took that spreadsheet with all the expenses, all the donuts, all the different clients listed. Here’s the clients as a dropdown. Here’s every expense from the last year. It’s now incredibly easy for anybody to put this in. And it’s going to integrate beautifully with our legacy LDAP system for login across the entire global organization. I did it. It looks good. It works really well. The database is real. It took six hours.

Rich: Are you saying I should just put this in production and give it out to our people?

Paul: As my boss, I want you to see it and I want you to acknowledge it—and I want you to tell me what I’m going to do next, because I’ve already solved it.

Rich: You spent six hours on this.

Paul: Using the most powerful technology on earth.

Rich: Last year, we received over $15 million in reimbursable expenses.

Paul: Yes. So that’s why my thing’s amazing. It’s gonna—

Rich: Our clients trust us that when we run those invoices and we add those numbers up, that they are accurate. Human errors happen—and we acknowledge them sometimes—that they are accurate and that they are credible.

Paul: Yeah. But look, I’m gonna, I’m gonna enter an expense, and you’re gonna see the math get done right in front of you.

Rich: Okay.

Paul: Okay? Watch. [typing sounds] There.

Rich: You’re right. It added on $72.

Paul: Yes.

Rich: A chicken caesar wrap for $72? Where are you eating? Forget that.

Paul: Yeah.

Rich: Don’t worry about that. The math is correct.

Paul: Absolutely.

Rich: What do I do with this?

Paul: I deploy it to production, I think.

Rich: Really?

Paul: I think that we’re ready. Or maybe somebody could look at it first.

Rich: How can I trust that all the different permutations and rules, because there are different rules for different clients, get applied correctly? This is money we’re talking about, Doug. Money is exchanging hands.

Paul: I get it, Jeremy. That’s great feedback. You know what I’m going to do?

Rich: Mr. Jeremy.

Paul: Mr. Jeremy, I’m going to go back to Claude Code and I’m going to tell it to add a rules engine and a bunch of unit tests to make sure this is good.

Rich: You’re not going to validate this yourself?

Paul: I mean, it’s just math. I looked at a few of them. It does a great job.

Rich: Not good enough.

Paul: Why not?

Rich: I can’t trust it.

Paul: Why not?

Rich: Because I’m not asking you to put something in a box and take it out and show it to me every once in a while. It’s doing math. Rules, the number of rules are more or less endless. You can create all sorts of weird rules and tripwires and exceptions and whatnot. And I need to confirm before I put this, because it’s my neck, Doug. Right? What’s my name, Doug?

Paul: Jeremy.

Rich: Mr. Jeremy!

Paul: Mr. Jeremy.

Rich: It’s my neck.

Paul: I’ll be honest, Mr. Jeremy, you don’t have a lot of neck left.

Rich: [laughing] Yeah, one mistake, Doug, and I’m done. And we could lose a marquee client. So I can’t. Even though it looks really good—by the way. It looks good. It’s pretty shiny.

Paul: Thanks!

Rich: It looks really good. But the truth is, because money is exchanging hands, you ever heard, you know, people talk about AI hallucinating?

Paul: Yes.

Rich: This is much more subtle than that, isn’t it? It’s sort of a weird, momentary daydream that could cost us a client. And even though I appreciate how fast you got things done—and maybe when the dust settles, we are working way faster than before, I need this tested top to bottom.

Paul: All right, Mr. Jeremy.

Rich: One more thing, Doug.

Paul: Go ahead. Go ahead.

Rich: One more thing. Don’t interrupt me when I speak, Doug.

Paul: I appreciate feedback.

Rich: One more thing. I don’t want AI testing AI.

Paul: Okay.

Rich: Not going to cut it.

Paul: Even though I’m named Doug, I think I can internalize that. Let me pause for a second then, and maybe be just a little less enthusiastic, Mr. Jeremy, and say, like, okay, but I think this is really cool and it really validates what we want to build.

Rich: As a way to clarify the requirements of what we need, this is really good. I do need you to talk to the half dozen client operations people that deal with this stuff because we had a meeting with them, but you just built a lot of software and they got to sign off on it.

Paul: But why can’t I simulate them as a set of agents using synthetic research tools?

Rich: I’ve been doing that since the beginning of my career. But that’s not going to cut it here. You need to go talk to them and make sure it’s doing what they need it to do. That’s another bit, Doug. Before you push to production, you do need that blessing. And it needs to be in their hands.

But before it’s in their hands, right, because they’re not going to notice the mistakes. Right? The weird subtle bugs that lead to dollars being missing or overcharging our favorite clients. Big problem for us. They’re not going to see those. You stop looking, and then we find out after the fact that a lot of money and a lot of goodwill went out the door. I need you to button this up. And then once this is in a good place, let’s say this all, we get there, Doug, we’re going to meet in two weeks. Okay? Go get it buttoned up. Let’s meet in three weeks. Take an extra week, Doug.

Paul: Okay.

Rich: They’ve been waiting 12 months for this. They can wait an extra three weeks.

Paul: Okay.

Rich: When we come back, we’ll talk again.

Paul: So help me understand, sir, what buttoned up would really mean. I’ve built something you can click on and enter expenses, and it really does solve our business problem.

Rich: Mmm hmm.

Paul: I have a database exported from the spreadsheet. It appears to work pretty well. I’m going to go get validation and approval that this meets the requirements from the stakeholders.

Rich: Yes.

Paul: Okay? That’s pretty good. That’s pretty good.

Rich: Mmm hmm.

Paul: Okay? If I’m gonna go do exactly what you want me to do, what is, what’s my next step?

Rich: Here’s what your next step is. Go make a carbon copy of one of the sheets they’re using today. Use that actual data. Right?

Paul: Okay.

Rich: Run it through your system and then A/B it with that spreadsheet. Make sure it lines up. Use our real-world scenarios, real-world rules, real-world outcomes, and put them up against your system.

Paul: Now let me be a real AI guy for a minute, but also try to meet you halfway.

Rich: Don’t you upload that spreadsheet, Doug!

Paul: Not going to. Not going to. We’ll use all of our, well, I kind of did already. [laughter]

Rich: That ship has sailed.

Paul:  Sorry about that. Hopefully Anthropic doesn’t care about our expenses. But here’s what I could do. I don’t really want to go sit there and write a whole lot of tests.

Rich: Uh huh.

Paul: Because that’s really boring.

Rich: Yeah.

Paul: It’s really boring. And I don’t like doing it, because nobody does.

Rich: Yeah.

Paul: But here’s what I want to do. I want to write a rules engine. I want to write a way to define if this is working or not. And then I want to describe all those rules and all those test cases, and then I want the AI to go ahead and test it. That’s going to be way more interesting and exciting for me—and I want to use lots of frameworks to do it—than doing the testing myself. Like, writing a bunch of unit tests. Are you going to let me do it?

Rich: Doug. Here’s what I need from you. I need you to do some of the boring stuff.

Paul: But every time I sit down at a computer, I read a weblog that tells me about exciting ways to never do what you’re asking me to do.

Rich: I understand that, and I recognize it. But there are consequences to getting this wrong that are severe.

Paul: For you! I will just go get an AI job at some other crappy company.

Rich: You may do that, Doug.

Paul: I probably will.

Rich: You probably will.

Paul: Yeah. I mean, you’re actually, when we think about it—I don’t mean to turn the tables, Mr. Jeremy, but you’re a little more exposed than I am here. Because all I have to do is learn these new skills—

Rich: You will go down with the ship with me.

Paul: No, I will just go on Indeed.com [laughter] and find a whole new way to be.

Rich: Yeah.

Paul: Because, honestly, I’m tired of eating these burritos.

Rich: Yeah. Let’s come out of character and talk for a minute.

Paul: Okay, okay.

Rich: Okay?

Paul: But I do want to double down on that point, now, out of character, which is in some ways, the boss is more vulnerable.

Rich: He is.

Paul: Because I can play with these toys.

Rich: Yeah.

Paul: I don’t have to tell—if something really blows up, I’ll just go, I’m an AI-enhanced accelerated developer. There aren’t enough of me right now.

Rich: Yeah.

Paul: I can make as much mess as I want. And it’s, like, this has happened periodically in terms of, in technology.

Rich: Yeah.

Paul: The person who aligns themselves with the very new technology keeps getting snatched up, and they kind of fail up, leaving the bosses with a broom to clean stuff up.

Rich: Yeah, yeah.

Paul: Meanwhile, you’re getting told to use more AI in the org.

Rich: I’m getting—

Paul: We didn’t even talk about that.

Rich: I’m getting told to use more AI in the org. Here’s, I think there’s a couple things that get highlighted out of this roleplay. Three things. I’m going to enumerate them. The first is, even if AI does what you want, articulating what you want first is really, really important. At one point I told you, go talk to the users, make sure that this is actually what they need.

Paul: Articulating what you want in the organization, not to the prompt.

Rich: Yeah!

Paul: Like, I think everybody is assuming that everything is supposed to be fed into the box.

Rich: Yeah, Well, I mean, if you think about it, unlike single user, personal productivity apps, organizations, you literally have to map out what people want across teams, across users, across all sorts of interests and needs. Right?

Paul: I mean, let’s talk about the legacy process for one second. Just so everybody’s familiar with it. Right? So we got to clean up this expense system. Well, our product person is going to write a nice specification. It’s an internal project. Let’s keep it short, 10 or 15 pages.

Rich: Yeah. Mmm hmm.

Paul: I’m going to socialize that and wait a couple weeks to get some feedback.

Rich: Yeah.

Paul: I’m now going to turn that into requirements. I’m going to hand it—I’ve only got one dev for this. It’s Doug.

Rich: Yeah.

Paul: He’s going to work on this for about six months. It’s pretty straightforward math and database stuff. It’s just got to get done and it’s just kind of a bunch of technical debt.

Rich: Yeah.

Paul: Doug’s going to work on it for a while. We’re going to see a few versions along the way. I got a real, we’re going to do some real light design here, like, real light. Mostly, Doug’s just going to use the approved widget toolkit and then we’ll roll it out after some testing, get some feedback and then launch it again. And it’s probably anywhere from 6 to 16 months, even though maybe not full time. Like, Doug might work on five things in that time.

Rich: Mmm hmm.

Paul: Because you’re waiting for cycles and so on and so forth.

Rich: Yeah.

Paul: So Doug’s going away and come back in a day, and it feels like a miracle.

Rich: Yeah, yeah, it does. But if Doug didn’t talk to people and if they push that production and it’s out of sync with what people actually do and deal with? Like, I’m glad you solved that one thing, Doug. But the other thing I always deal with, this one particular kind of issue, is, takes up so much of my time.

Paul: This is happening everywhere. Like, this isn’t just—

Rich: This is grizzly, like, the human interaction stuff that you just have to kind of go through.

Paul: So that was number one. You had two other things.

Rich: Two others. The second is while Doug is overzealous on the offensive, Jeremy is overzealous on the defensive.

Paul: So what should Jeremy be doing?

Rich: Jeremy…I’ll tell you what Jeremy should do. Jeremy should say, this is terrifying. It’s scary to me. But you know what, that was really fast. Why don’t we get a couple of users and when they do it the old way, we ask them to do it the new way, but it’s sandboxed, it’s over on the side—

Paul: You know what else Jeremy should do is he should say, Doug, you’re gonna build this again and I’m gonna watch you.

Rich: They should learn how Doug did it. Yes, yes, yes.

Paul: Because Jeremy, I think what’s real is everyone is assuming that everything is risk.

Rich: I gotta tell you, we’re talking to people right now, we’re talking to prospects and clients and whatnot. The amount—if you thought Jeremy was resistant, here we are seeing 10x the resistance from stakeholders and business people who are scared of this stuff.

Paul: It’s just kind of disbelief, too. They’re like, “Well, that’s not real.”

Rich: It is so, so much—exactly. It’s throwing people off. It is the kind of resistance that eventually I think is going to work against Jeremy. Like, it’s eventually going to work against him.

Paul: Well, because what’s going to happen is Jeremy’s SVP or C-level boss is going to go to the sauna with the other C-level bosses and they’re going to go, “Man, I just fired 6,000 people and it feels good.”

Rich: That’s right.

Paul: “I really like that feeling.” And they’re going to go, “I want that for me.”

Rich: There is value here. And so to brush it aside and say, look, Doug, no, versus Doug, how do we get that value out of what you did? I love your six hours, but it’s probably a three weeks or a month. Three weeks or a month instead of six hours sounds bad, but when you’ve been waiting for something for 10 months, a month sounds real fast.

Paul: I’m gonna say something that—and we gotta get to your point number three, but like, the only approach here that is working, and we’re talking to literally hundreds of people now about this.

Rich: Yeah.

Paul: Is humility. And by humility I mean a lot of different things. I mean that Doug needs to be a little humble about the process and not assume that an LLM can just generate anything that’s, if even though it looks like—

Rich: Everyone needs a good dose of humility.

Paul: And then, but Jeremy needs to be a little humble that Doug was able to create a lot of value, even though it’s along a line and even though it was accelerating a little different.

Rich: Instinctively, if Jeremy is curious about it and wants to see and wants to learn the tricks, that’s going to be a better, that’s going to put Jeremy in a better position. Also, you’re assessing risk based on some crazy magic trick that just happened. That’s not a way to assess risk.

Paul: You don’t understand it yet. And the same is, the same is also true of Jeremy’s boss, who’s hearing at the sauna about all the firings you get to do. I’d be—and I’m not saying this as, like, my typical protection. I’d be real careful about sending anybody home. Just because you think the magic robot will do the work.

Rich: Yeah.

Paul: I think a lot of people are really—

Rich: Take a minute.

Paul: They’re real excited.

Rich: Yeah.

Paul: To get a little money back into the org and show their boss that they are, they’re cutting it to the bone. But I don’t know if these things can actually get across the finish line. They can get a lot done. And I’ve seen projects go across the finish line. But your whole roadmap isn’t going to get unlocked just because—and your Dougs are going to come and go, and your Jeremys—

Rich: Yeah.

Paul: We have not even started to metabolize this change, even though you and I are living it every day.

Rich: Yeah.

Paul: All right, three.

Rich: Three, quick closer. All these apps that are getting built, there’s a lack of acknowledgement of the fact that most companies are not starting with empty data. There’s always data that exists today. Doug did something six hours, but there are 300 clients and 6,000 expense entries in flight not filed away. And that leap is boring.

Paul: Yeah.

Rich: It’s real boring.

Paul: Actually. I’ve been working on a project like that. I think there are ways to really think about this. There’s a continuous migration process where the old data is coming in.

Rich: Yeah.

Paul: The new data is coming in, the new system. You’re continually testing and evaluating. Some of it is human, some of it is you writing things, some of it is AI testing.

Rich: Yes.

Paul: You can create all these really nice pipelines that are super accelerated. But the thing I keep coming back to, and I wrote about this in the newsletter, is that everybody is obsessed with one-shot and standing up zillions of agents, and you give it a prompt. Nothing in culture, nothing in history has ever worked that way.

Rich: Yeah.

Paul: And I’ll tell you who knows this: Every boss. Every boss has the fantasy when they start becoming a boss. I had this fantasy. Maybe you did, too.

Rich: Yeah.

Paul: Which is I’m gonna have all these amazing lieutenants and I’m going to tell the lieutenants what to do and they are going to go and come back having done the thing I asked them to do.

Rich: Yeah.

Paul: But anyone who is intelligent enough to do that will go do a million random things, often having nothing to do with what you asked them to do. [laughter] And so you actually learn. You have to have empathy and conversation and you have to really make sure that they’re aligned and understand what your goals are.

Rich: Yeah.

Paul: You have to listen to their goals and then you can delegate.

Rich: Yeah.

Paul: And that is also true of software with these new robots. You cannot just issue an order and get a response. And there is an infinite fantasy that I think we will never quite get done with.

Rich: Yeah.

Paul: That’s real. What I am finding is that I can get amazing response—I can get amazing results after about step 500.

Rich: Oof.

Paul: You got to build the infrastructure first. Once you get the platform in place, you figure out your data.

Rich: Yeah.

Paul: I have to internalize and understand—

Rich: Sounds not impressive.

Paul: It’s incredibly impressive. I’m able to get results that I could never have even touched.

Rich: Yeah.

Paul: Things that took six months can take a couple of weeks. The best thing—

Rich: But it’s 500 cuts.

Paul: Sure, but programming is a little different now because sometimes you just do something and walk away and come back tomorrow.

Rich: Yeah.

Paul: And you don’t—you sort of get the report mailed to you, right?

Rich: Yeah.

Paul: And you’re like, oh, you know, let’s do, let’s try this instead.

Rich: I don’t think anyone knows what you’re talking about because you’re in outer space.

Paul: That’s probably very fair. But if you listen to it and write it down, you’ll find that I am absolutely right in every way, about six months from now, and all this agent-based woo hoo nonsense. And I’m telling you all this right now, even if you don’t understand it, inscribe it into your brain.

Rich: Are you Doug again? I can’t tell if you’re Doug again just now.

Paul: No, I’m just Paul. That’s what’s actually in here.

Rich: No, but, like, to close it out. Actually Paul’s experiences have been shared a lot on our newsletter.

Paul: Yeah.

Rich: And it’s been really, really interesting to read and see what you’re going through. And there’s a lot to learn.

Paul: You’re all going to get where I am, which is, this is really good. But it probably doesn’t replace people anywhere near as much as people think it will.

Rich: I think that’s playing out.

Paul: Yep.

Rich: Yeah. Hit us up. Hello@aboard.com. it’s a fascinating time. We’re learning and pivoting and tweaking as we go as well. We’re very excited about our own platform which is really, really coming together.

Paul: And I’m going to give you two words from the future, but not explain anything about them. But watch this space. You ready? Cage match.

Rich: Woo! Have a lovely week everyone.

Paul: Bye!

[outro music]