Hey, what's up, man? How you doing? Hey, buddy.
I'm good. Happy Friday. I know. We made it. We
made another week across the podcast. Indeed.
Today's topic is vibe coding. This is a new one
on me. Okay. It's a new thing. Vibe coding is
what the cool kids are doing these days. Is it
like strut your stuff and code magically appears?
How does vibe coding work? I don't know. Code
is all structured, right? So it's all structured.
It's all files. I think the first time I figured
out that like a website is literally like your
my computer folder and the way that's all it
is somewhere on a server with basically instructions
for the browser to pick it up and Then it ties
to a database on the back end and there's kind
of a bunch of funky magic But it's literally
it's it's literally a file tree like that's all
it is with a bunch of text files Like that's
what coding is So I will say there's a, there's
a special irony for me in a world where nobody
can follow a recipe. We now have servers full
of instructions or recipes for how to make the
world work that none of us would, would understand
how to follow if we saw it. But Oh, totally.
That's super. I think it's true. Cause I've done
just enough programming to appreciate it is it's
very linear and logical. So, so that's coding.
What's vibe coding though. So vibe coding is
basically use an AI to generate some code. Gotcha.
Okay. It's very good at it. Does a phenomenal
job logic. Right. Sure. Until it doesn't. Um,
and so, so I've been. Angel Will Robinson. Yeah.
Well, I mean, the reason why I want to talk about
this and just in the, in the arena of process
debt is you learn very quickly that computers
are ridiculously unforgiving. Right. Like they
are super unforgiving. And these lines of code
expect the next line of code. And then the other
thing is like the lines of code call into dependency
libraries. And so that's the other thing that
people don't understand is there's all these
dependencies that live somewhere and you basically
pull in that library onto your server and it
downloads that code essentially to run certain
frameworks. So that you don't have to build every
single one of these discrete things you just
barked, rebuilt pieces of Lego. Correct. And
so you basically have a bunch of Lego pieces.
And one of your Lego pieces is authentication.
And another Lego piece is the framework, like
the web framework, which is like React or Angular.
Those are the two popular ones. And then you
have a backend database, which could be MySQL
or SQL Server or a NoSQL database. And the interesting
thing, what I've, what I realized Well, first
of all, before I get to what I realized, I will
share some funny stories about vibe coding because
you set these things up and then what I didn't
realize is it'll give you the entire framework
based on the universe of websites that it scrapes,
the universe of the framework. It's got a good
idea of what it's trying to do. The first thing
you realize is they're really good at prototyping.
If you want a quick view, it's super fast. You're
like, I want it to look like this. Go and change
this. And it's super fast. It's amazing. The
first thing you realize is what's presented may
not actually be saved on the back end outside
of hard -coded lines of code on the front end,
right? Oh, right. Because it's not necessary.
Because you haven't saved it, right? So that
leads to the next thing. And think about this
as just processes that are very disciplined and
have to be, because otherwise the whole world
would be hacked all the time. And so then I'm
like, OK, well, what do I do next, right? So
again, it's just this process of technology and
building stuff together, putting the bricks together.
And if you think about process debt, like, dude,
we're in this really tech debt, right? Because
when people code and they code fast and they
don't They don't think about the long term. You
end up with these legacy systems that are slow.
Anyway. Right. So I hook it to a database, right?
Then you have to set up keys, right? So you have
to, everything has to be protected. Yeah. And
I'm, I'm vibing away. I'm asking questions. I'm
changing. I'm crushing it until it takes my keys
away. I don't know this for hours. Oh Lord. Okay.
I'm, I'm building my database. I'm writing it.
I'm changing the way that It's storing the data
on the back end. I can actually see both. It's
actually stupidly fun. And you're running full
out, running as fast as I can. And then all of
a sudden my data's gone. I don't know what happened.
I have zero idea. When face meets asphalt. Yeah.
No, no. I mean, it absolutely was, right? And
so what I find out at the end is that when I
asked to connect it to like Gemini, because I
was in the Google ecosystem, it's like, hey,
I can fix that. And so in these codes, you have
environmental variables that basically allow
you to connect to these systems. You have these
secret keys that are hashes and they're encrypted
and you've got both sides. What happened is,
is when I tried to connect to the Genei, it deleted
all those environment variables to my server
database. And all of a sudden, I spent two hours
trying to figure out what's going on, only to
come to find out that it was very liberal in
its prototyping, and it completely removed all
of my database connections. Vaporware. This is
how you use Vaporware today, and it vaporizes.
So then I figure it out, and then I start running,
running down. you know, doing the next thing.
And then I, then I end up, you end up in these
circular references where it's like, I did, and
they're really nice. The gen AI, the vibe coding,
you know, the AIs are super nice. Yeah. But you
end up in these loops where it's like, that's
a known issue with this thing. The one that I
ran into was on blur. It's like, it's a known
issue with the CMDK library. Let me change that
for you. And it changes three lines, right? So
then you're like, that did not work. And then
you're like, that's a no. Oh, I'm so sorry. I'm
just, that is unacceptable. You're like, it is
unacceptable. Fix that. So then it's like, it
fixes the code, right? It fixes the three lines.
It basically reverts back to what it had with
a different comment. It's like, you literally
did not change the code at all. You changed your
comment. And so I'm stuck in this never ending
loop. Not knowing kind of how code works, but
not enough to kind of figure it out, which leads
to many different experiences here as I'm just
basically pushing my experience. Now it's a great
way to learn and be frustrated all at the same
time. It's like golf. It sounds a lot like golf,
but for people that don't like to go outside.
Every now and then you actually get a solid hit
and that just validates you and then you squander
hours for one more Dude, yeah, and then I then
I basically just got it to a point where it was
so jacked up it just won't run and You're like
what is like it was so frustrating because it
was because I was basically forcing all these
changes and all the dependencies are unknown
Right. It's doing a new thing, right? Especially
when you're asking it do something different
Did some really cool stuff and then I just broke
it. And then I was like, all right, screw this.
So then I, you know, and this is where it kind
of goes into process debt. I was like, I'm just
going to kill that whole thing. Cause I just
got frustrated. I was like, I know I kind of
got, I've got a better idea of what I'm going
to do this time. Cause I actually forced the
prototype to think through things. And so my
mind is a lot clearer and I'm like, well, let's
start over. Here's what I, what I love about
this vibe coding story, um, aside from, from
hearing your pain. And I think at least for my
part, immediately conjures up half a dozen experiences
over the years where I think I'm collaborating
super effectively only discover that the other
partner in this equation is not at all on the
same page. And I think many of us, whether we're
the new employee or we're on the new employee,
what they know and then the way things work may
not actually mesh, but we don't know it until
we're deep enough to discover The code's jammed
and, oh, I see your problem that doesn't exist.
Let me fix it. And you're still talking past
each other. Like, I think that's really at the
heart of it. Oh, yeah. Gosh. No, it's so funny.
So I kick up a new project, right? I'm like,
I'm going to just do this again. And then I pick
a different... I was using React originally and
then I was like, I should use Angular, which
is Google, which is in the Google, like Google
actually... owns that library. I was like, oh,
I'm in Google. I'm going to go and fix this out.
Right. So I set it up. I start rolling and I'm
like, I don't even know how this thing works.
And then you go to Reddit and they're like, yeah,
if you don't know Angular, you shouldn't do this.
I was like, dang it. I was like, they're like,
yeah. And it was specifically in the Reddit quote.
It was like, if you're just vibe coding, Angular
is not your solution. And you're like, oh man.
Asterisked on that for our listeners. And so
the next time vibe coding is the cool new phrase.
Yeah. When somebody talks about it, all you have
to do is say, if you don't already know Angular,
then forget about it. Yeah. Just, just, I mean,
if you, if you don't know Angular, you should
use react and TypeScript. Like this is what I
learned in the whole thing. When we kill this,
I kill my Angular project. Cause I'm like, I'm
not that guy. Again, I don't have the cycles
to put into the Angular library to figure out
how the dumb thing works, even though it's tightly
coupled and it might be the thing that I want.
Okay. Moving on. Move to phase three. Right?
I have a really clear idea on what I want to
do. I get going, I run, then I run into authentication
issues. Whole new problem. Yeah. Right. Log in.
How does it know it's me? Correct. And actually,
a friend of mine was like, well, why don't you
just use Google's authentication? I was like,
brilliant. So then I was able to click the button
because I went down this random authentication
path where the vibe coder was going to go. I
was basically like a new, I was like the intern.
I was like the IT intern, just trying everything,
getting nowhere. Yeah. And so anyway. Hork it
again, because the AI is writing my authentication
piece, not knowing. It's terrible. Like I've
spent like three or four weeks on this, just
trying to move the thing forward. I have a really
clear idea of what the backend database would
look like. I know exactly I'm going to use Google
authentication, which is great. I'm going to
use, you know, Firestore. I know all these things,
but then you realize very quickly. And this is
where this ties back to process debt. Developers
have a repository and they have a main branch
in production. Well, Chris, not all of our listeners
know your day job is not software development.
No. You have an altitude of skills and are expert
at a number of things that I would call you about.
And you don't introduce yourself as, hi, I'm
Chris, the Angular slash React developer. And
so I think this is, I mean, it's so spot on with
our theme and it's that smart people know the
names of a lot of smart tools. Yeah. Mean that
all of our expertise readily translates into
a new name. There's a learning curve, right?
Totally. And so those experts have suffered on
their learning curve oftentimes to tell us simple
things. Like if you don't know Angular, stop
now Viber. Yes. You know, and so. But it's true,
because how often do we ourselves create process?
We're the expert in the room. And even we won't
know what we don't know yet. Yeah. You know,
until somebody else comes along and says, oh,
yeah, I tried Angular libraries, too. And it
didn't work for me because I don't know it. I
love this example. Now, I do work with developers,
though. And I know developers. And so it's actually
been kind of interesting because, again, going
back to that main branch. No matter what software
you're using, no matter where it is in the world,
you are working on the main branch. That is the
pristine. Pristine. I use that lightly because
if you talk to most developers, they will tell
you about how some of their code is pristine.
The other is duct tape and bailing wire back
there hanging out in the corner on some server
that they forgot about. The taking this back
to process debt. Yeah, the way that developers
Do their things is they take off a bucket of
work? They develop that on a local machine so
on their PC like they test it prove it out Yeah,
right then they deploy that to a branch of the
main Yep, right. They're not throwing it right
back into the not throwing it back in and that
And a lot of people are writing on these branches
and these branches would be, you know, different,
different parts of that process or different
parts of the parts of the feature. Yeah. And
then eventually you commit that you commit, you
know, you, you commit your changes to the branch.
Okay. Then you merge the branch into the main,
right? That's how the development process works.
Right. There's just a lot of safeguards. Oh,
break stuff. Cause again, if You know, intern
Chris vibe coding can basically put in a like
a single line and screw up your whole code. Like
it's kind of important to keep it consistent
because it has to follow the rules. Right. Which
really brings me back to the whole process step.
Right. Right. We don't have anything on the business
side that works remotely like that. Yeah. We
don't even think about our business. We don't
even think about knowledge work in that way.
It's true. The closest that I've seen is in pharmaceuticals,
because it's such a highly regulated industry.
And their desktop procedures, their standard
operating procedures and what they're described
as, there's an entire numbering convention and
naming conventions of industry standard. And
so a couple of brief interactions over the years
as a consultant, but I was really impressed with
the rigor that goes into it. Of course, those
people that like the rigor and like get really
bunched up about every last eye getting dotted
and teeth crossed are, they're living their best
dream and they only make it worse than it has
to be. Right. But that's one of the few places
where I've seen, and in fairness, a lot of some
of the state and federal agencies I've worked
with do really good version control of edits
to their SOPs. But most of us, like I've... I've
rarely exercised as much rigor as I need to knowing
that somebody will inherit my work a year, years,
10 years from now and have to make sense of what
I did. You know, I can't even go back to something
I created a year ago and explain, you know, you
and I talked about this with spreadsheets. How
do I use this thing? I dug up and you're like,
good Lord, I don't know. Let's rebuild it. For
sure. Well, so I'm super impressed. I guess that
the real punchline here is that if people have,
as you and I do, college aged kids, you can vibe
out all day, but you better learn some Angular
if you want to go that path. Yeah. Well, in there.
Yeah. You're going to have to learn something,
right? And then the other, the other thing that's
interesting. So like going back to the whole
code, going back to coding is people that code
successfully do a lot of little commits. Right?
Like little consistent communites and they don't
build up that branch. So they're doing so much
features, right? And yet on the, like the takeaway
here is that we could learn a lot from our developers
because they're forced into that rigor. Whereas,
you know, in, in knowledge work, oftentimes it's
we're going to go and do the whole thing all
at once. And you're just going to have to live
with it, but no one's ever tested it. It didn't
go. It didn't start on a, there wasn't a local
test that then got a bigger test that then was
proved, right? Because what happens is these
guys, they'll write their codes, they'll commit
it. They actually have like, they have what's
called a unit test. It basically goes in and
checks every single function that says, if this
is true, you feed in some variables and make
sure that that gives you the, gives you the right
answer. If it's false, right? So they have even
they have these little tests that you can check
along the way. And so the moral of the story
is that for knowledge workers, it's very important
to. Implement in small increments. And if you
want stuff to be consistent and even usable.
You and I've laughed about how most organizations
have adopted the wrong parts of Agile. and disciplines
from the development world. Here's yet another
example of everybody's bastardized the daily
stand up. Like, let's get around and just jaw
in the morning because it feels good. Yeah. And
and now, you know, here's the here's what we
could learn about the development process, which
is make changes small, validate them often. And
that's not how we do process engineering work
generally. Yeah. Could you could you imagine
if like one little PowerPoint change? broke the
entire company. Like if you're a software company,
right? Like this is the. It's well, you know,
in fairness, though, it's true for like a sales
deck. You know, if you're missing zero off of
your price and you pitch your customers $129
,000 and you're missing a trailing zero, you
just gave up, you know, 900 grand. It's just
that we don't hear about that because that doesn't.
That doesn't show up on thousands of users' dashboards
every day. It's just like all the people that
you've talked to about going to Vegas will tell
you about their wins. It's interesting. I don't
know how they're keeping the lights on down there.
I don't think the $15 I leave every decade is
really keeping the lights on. Maybe there's somebody
else. Maybe someone else is dropping some coin.
Always the best five minutes of every week. Thank
you for staying with us and not paying attention
to your watch. All right. Talk to you next week.
Bye, Bond, my friend. See you. Bye.