Summary
In this episode, Rob and Michael discuss the implications of vibe coding on software development. They explore the benefits and challenges of using AI to generate code and how user stories can help developers build a solid foundation.
Detailed Notes
Vibe coding is a technique that involves using AI to generate code. It can be very efficient, especially when used with detailed and specific requests. However, it's essential to be clear and concise in the user stories to avoid technical debt. AI can help developers build a solid foundation, but it's not a replacement for human expertise. The hosts discuss their personal experiences with vibe coding and provide tips for using it effectively.
Highlights
- Vibe coding can be very efficient, especially when used with AI to generate code
- AI can help developers build a solid foundation, but it's essential to be specific and detailed in the requests
- User stories are crucial in vibe coding, as they help AI understand the requirements and generate the correct code
- Vibe coding can help reduce technical debt, but it's essential to clean up the code as you go
- AI can get developers mostly there, especially when used from a user story perspective, but it's not a replacement for human expertise
Key Takeaways
- Vibe coding can be very efficient
- AI can help developers build a solid foundation
- User stories are crucial in vibe coding
- Technical debt can be reduced with vibe coding
- AI is not a replacement for human expertise
Practical Lessons
- Be specific and detailed in your requests
- Use user stories to communicate with AI
- Clean up the code as you go to avoid technical debt
Strong Lines
- Vibe coding can help reduce technical debt
- AI can get developers mostly there
- User stories are crucial in vibe coding
Blog Post Angles
- The benefits and challenges of vibe coding
- How to use vibe coding effectively
- The role of user stories in vibe coding
Keywords
- Vibe coding
- AI
- User stories
- Technical debt
- Software development
Transcript Text
Welcome to Building Better Developers, the Developer Nord Podcast, where we work on getting better step by step professionally and personally. Let's get started. Hello and welcome back. We are continuing our season where we are building better foundations. Actually, though, we are Building Better Developers, the Developer Nord Podcast. I am one of the hosts. I am Rob Broadhead. I'm a founder of Developing Nord, also a founder of RB Consulting, where we help you do technology better. We have this thing called a technology assessment. It's sort of like a checkup for your car or a financial audit or actually, when I say audit, usually people don't like the A word, but more of a financial assessment that you might do with your advisor. Same thing. Think of us as your technology advisor. We sit down, help first understand what you do, what your business is, what are your visions, what are your goals? Then we walk through a process that allows us to create a technology roadmap for you, talk about the things that you can do better. That may be simplifying, integrating, even innovating. We may even help you build something new or just migrating to new systems and upgrades, things of that nature. Take that big investment of technology and make it work for you so now it is actually churning out revenue. We have that roadmap for success. You can check us out at rb-sns.com. We've got a couple different products and projects and all kinds of little things going out there. So check it out and let us know what you think. Good thing, bad thing. Bad. Well, let's see why there's so many good things and bad things. So good thing is modern flooring is not very hard to put together. If you get the little snap in and stuff like that, it can look really good, really fast, really professional. Bad thing is, because I'm going to work on this, one, I am not a DIY kind of person. I will go figure that stuff out, but I don't do good jobs with stuff. I'm the person that's not likely to get a nail hammered straight in often enough or getting an edge exactly, measure correct and all that kind of stuff. And so dealing with things like this, where you're like off by a millimeter and you notice it is a little bit frustrating for me. So that has been a bad thing, but it's going to get better because for the next little bit, I'm going to be doing a podcast instead of working on flooring. And I'm going to allow you guys to be introduced to Michael on the other side. Hey everyone. My name is Michael from one of the co-founders building better developers, also known as developer. I'm also the founder and owner of envision QA, where we help businesses take control of their software by focusing on what matters. And that is quality, reliability and support that you can count on. Whether you're building something new or trying to fix what's broken, we combine custom development with thorough testing to make sure your systems actually work this way before you get in front of your customers and let them touch it. We make sure that it works for them. At envision QA, we don't just build software. We make sure it's solid, stable and great to support your business growth. Check us out at envision QA.com. Good thing, bad thing. I'll start with the bad thing. Of course, weather is getting colder and I get a call from my daughter this morning that their HVAC went out. So yet again, another household thing has to be replaced that is not a low ticket item. Good thing, weather is getting cooler. Trees are starting to change color and we're starting to get into fall. So I'm starting to love it. It is good. That is the nice thing about the areas that we live in that you get for seasons. So you do actually get to see like the leaves change and stuff like that. Of course, that also stirs up allergies, but that's another discussion today. We're going to dive back into, we talked about low code and no code as our foundational stuff. And we want it, we touched on AI and vibe coding. And I think we're going to do a little bit more of that today because we really didn't have the time to give it the proper attention, essentially. Now vibe coding, let's start with the idea of vibe coding is that you are working through solving a problem and you're using AI to generate some code and give you, and basically allowing AI to sort of code as you go. And there are a lot of apps that are, I guess apps will put quotes around those. There's a lot of things that have been built out there. A lot of people that I've seen that are essentially putting together MVPs, minimally viable products of some sort using vibe coding. Now the problem with vibe coding is that there is also a huge amount of technology debt that ends up involved there because AI is not going to have that cohesive thought that you need as far as building software. So from a foundational point of view, I want to talk about, so, you know, if vibe coding is in itself maybe not good, then how do we find a way to make it good enough so that it can help us be more productive? And that's where I want to focus in my discussion is finding, is like anything else, and this goes back to what I've said before, I got from somebody else actually, is that when you're dealing with AI, think about it as dealing with a very junior, maybe mid-level, you know, in this case developer. That means you have to be very specific. So if you're building an app, let's say, using vibe coding, it can be very efficient. A good example is if you build a page that is part of your application and it has a look and a feel and a style and a structure and, you know, the back end infrastructure and architecture is sort of there, or actually not even sort of is there, and now you're just building on top of it, then AI can be very good as long as you say, given this architecture, given this style, given this look and feel, I need you to build me a page that does X. And it's not going to be 100%, but it can get you very quickly to a lot of the code that you normally would be like, you know, maybe copy and pasting, or you're like just typing the stuff that you've typed a thousand times before. And if it's in the more you can refine and define your request, the better it's going to be. So there's a lot of times that I will, you know, if I want to build a page very quickly, like a new page for an application, I can, I guess we'll call it vibe code, but basically I'm going to use AI and say, here's my CSS, here's a page that's almost exactly what I want. Here's the data model. These are the fields that I want to display. This is how I want to display them. You know, this is the general look and feel, then it will spit something back out fairly quickly. You know, maybe in minutes, it will give me something that it would have taken me maybe 20 or 30 minutes or longer to code out, particularly if it's something complex, if it's something where you've got a lot of, of lists or a lot of very repetitive things where you can say, Oh, Hey, I want this page and it's going to have 10 sections in it. It can throw up that page very quickly. And especially if you just need like that, that skeleton essentially that you're going to then flesh out. And that actually is the next thing I would say is like, keep your requests small and maybe start with, particularly in a conversation, start with an outline, start with something that you can start, you know, a skeleton that you can start putting the pieces together. So if you think of a page, I'm giving you an example for a pass this on to Michael and his thoughts. If you have a page, let's start with like, think of a web application, you're going to have some sort of navigation. So if you know what the navigation roughly looks like, you know, maybe you want to do a top menu, you want to decide menu, maybe you want to pop out menus, you want to do a menu off the right, the left, the bottom, however it is. Once you can describe that, you can say, Hey, give me a menu that follows these, that follows these points that actually hits these requirements. And it may not always give you all the requirements. It may not hit all of them, but it's going to give you something now that you can work with. And so what you can do is you can take that and maybe it does it. And you say, Oh, wait a minute, these two navigation items need to be a different color. And then you can specifically drill down into it and say, okay, let's make these a different color. And this is, I know a very simple example, but this is a way that you can actually vibe code your weight into being more productive. You have to start with a good foundation. Now you can use the vibe piece to start to put those pieces together for the foundation. But if you don't want to have a lot of technical debt, you're going to have to go back and clean it up as you go and make sure that it is, you know, what you, what you are producing is clean. And then also give it back clean because usually if you give it back, if you give it something in a certain style that follows certain standards, you're going to see something that is similar to those standards and then be careful to make sure that if it kicks back more than you asked for, that you don't pull in that extra cruft basically, because a lot of times it's going to end up being some sort of technical debt. That's like, I know that was more of a soap box than an intro, but I will step off my soap box and then toss it over to you, Michael, your thoughts. Yeah. So typically I look at vibe coding. So given my background with testing and, you know, the focus of what I've been doing for the last 10 years is more test driven development. Vibe coding to me can be very successful, especially if you come at it from a tester's perspective or at least a user story perspective. So like you said, you've got to be very descriptive. You have to kind of walk AI through what it is that you want. The thing is, if you actually walk it through with clear user stories, like, Hey, as a user, I need to log into an application. I need a login page. And you walk through kind of the requirements that you need for the page and then AI can generate. Now you can be very, very kind of clean and straightforward. Like you said, like here, add a button here and things like that. But if you walk through it through requirements, focus through the actual user story, you actually can get better clarification with AI as far as feedback. The other thing I found is as you go through the interaction with AI to build the application from a user story perspective, you can actually start out by saying, Hey, write me a test case to do this. And it'll build you a test case. And then you can kind of then walk from the test case into the application, like, okay, build me a test case to test a login page. Okay, now build me a login page for this test case. Now, and then you copy paste this into your application. What I find that's really useful with these user stories, especially with coding and for vibe coding is you can eliminate a lot of that boilerplate or at least the structural understanding of code. So if you're not a coder, you don't really know a language, you can just start out with, Hey, how do I build a website? What do I need to build a website? And it will say, Okay, well, you need x, y, and z. Okay. I don't understand that. Ask it, okay, what, how do I set this up? And really, AI can get you almost there. There are times where it will get you off the rails, you may need to go find another AI engine or just jump out to Google and search, okay, AI, so I need to build a web server. All right, it's giving me some steps, but I'm having problems. AI is not quite getting me there. So take where you're struggling and drop it out into Google. Yes, Google still does some AI as well, but you might get some better results through Google to help you unplug some of those issues. So vibe coding can get you mostly there, especially if you don't know anything about coding, but getting it to build you something that you want, or help you understand what you want, it is better to go at it from a to me go at better from a user story perspective, and walk it through what you want, like be very clear, because user stories really translate to requirements. And if you can explain it to AI clearly and flush it out the confusion it has, I think you're going to get your a better result of vibe coding with AI than if you don't. I agree that there I think that's that is probably the key is getting the user stories right. The problem with those or I guess the challenge with that when you do this is to make sure that you also take those to the right the right level. It's very easy. And this is a lot of what we do in requirements gathering. And I think that'll probably be maybe the next episode is we'll talk about that a little bit is we tend to we start with a big story usually like I love to use, you know, the ATM example of like, I just want an ATM where I have an automated teller. Well, cool. But then what does that teller do? What are the features are going to be available? Okay, I want to be able to deposit money and I want to be able to withdraw money. Okay, well, is it for one account? Is it for multiple accounts? Is it how would you do that? Because before an AP ATM cycle, nobody had an ATM card. So how would that work? What happens? And then there's the all the questions around like, what happens if I to draw money and there's no money in the machine? Or if I don't have enough money in my account? Or what if I try to deposit money, and I don't actually deposit the cash or I don't deposit the check? How do I validate that check? How do I validate the cash? How do I count that they there's, there's a lot of these things that goes on and on and on. And so when you're building your stories is it works again, great to start from like sort of the high level, but then you need to build it into a much more detailed outline. It is and you have to, you have to sort of check yourself because I have found too often that people say like, and I've had those conversations with customers, not AI, but just actually human beings, human eye, where it's, you know, it's well, this is what I want. And as you have a conversation, you realize that what they said they want is not actually what they want. There's a lot of people that will hear things like CRM or ERP or EMR or all these other like tools and systems that are out there. And they'll say like, so and so said, I need this, I need an HR system. And you find out that it's a somebody that somebody that has zero employees. And I don't know if you really need an HR system. What do you actually, what problem are you actually trying to solve? And I think too often we start with the story instead of the problem. I think if you take it back a step and say, this is the problem, this is the description of what I think the solution looks like, then a lot of times then you'll be able to get some stuff back that says, well, you'll maybe AI will ask you a question and say, well, what about this or what about that? Or it may say that sounds like this kind of a solution. Should I look up some more about that? Should I educate you on that? And those are the ways that I think that you can step into AI and vibe coding and help yourself get to a solution that is actually a little more useful with a little less overhead and some of the extra stuff that you might have to clean up after the fact. I think we will, I'll give you one more because we're, we don't want to go too long because we're going to actually spoiler alert. We're going to spill into some of this in the next episode. So I kind of want to touch on the negatives of this a little bit. So if you're going into AI and you're asking those things, or you, you have a problem, but you haven't really defined the problem, be careful with AI, vibe coding, or even asking AI for too much input into what you need really to go talk to your customer about, because you could get what's called confirmation bias. You could essentially go down a track of AI is telling you what you think you need. And you're basically feeding AI, Oh, okay, tell me more about, and you're going down the wrong rabbit hole and you're actually going away from the problem or you're going away from the correct requirements. So make sure that you do kind of check yourself as you're going through this and even check with the customer to make sure that you've got the right requirement before you go too far down building a system. That's a good, yeah. It's a, when in doubt, check yourself, particularly when you're in an area where you don't, you don't have domain knowledge, where you're not really sure what you're doing. There's too often, this goes back to, you know, then we'll wrap this one up. I think the thought is like, there's been a lot of times that we've had customers, we've complained about this where, or potential customers, prospects that have said, Hey, I want to build, um, their project definition. I want to build eBay for, uh, honey or something like that. Or I want to be the Amazon for, uh, flower delivery or something like that. And that's it. That's like their story. That's not going to cut it. Those kinds of things. Like you need to really spend some time researching and thinking about what it is you're getting into. And I, a lot of times I think you really need to go look when you get those answers, do not take those answers. Cause AI is still based on the internet. Basically don't take those answers as gospel. Cause there's a lot of times you're going to get an answer. And when you really start looking at it, um, you're going to find out that it's wrong. I don't know how many times I've, I've corrected AI and it's like, Oh yeah, you're right. I didn't think about that. Or I wasn't using that. Or I was thinking this, or I was focusing on this other thing, sometimes just like human beings, but the direct is always going to be the best way. Things like send us an email and info at developernerd.com and let us know your thoughts. What do you, what are your thoughts? I would love to hear like low code, no code vibe coding stories. Uh, I know a lot of people are big on, I see a lot of people that are projects out there. There are potential customers like we want to use this. We want to no code this and low code that and vibe code that other thing. I like to see some people that are like, particularly that have been successful that have taken one of those systems completely to production and served, you know, more than five people at a time or something like that. And I've seen some, I'm not saying they don't exist. I've built a couple of things that are in these realms that have done that. But I would love to hear some other stories because it seems like they are few and far between. Most of them seem like they are things where people are like, okay, we built this thing in low, no code. We vibe coded it. Now we have to rewrite it completely in something else because they really didn't get, they just got to like a play solution and not something that was production ready, which is often the case with a cogeneration tools. I digress again, but, uh, check us out developernerd.com. You can leave us comments there. We've got plenty and plenty of content there. The YouTube channel, developing our YouTube channel. We've got all of like multiple seasons of episodes, not to mention a lot of other stuff out there. Um, you can check us out on X. We are at developer nor we have a Facebook page where all of those good things. So wherever you, wherever you subscribe to podcasts, leave us review, leave us some feedback. We would love to hear it and help you out wherever we can with new, you know, new seasons, new episodes, new topics that are the ones that you requested because we're here for you. That being said, I have said too much during every summer. Great day, a great week. Thank you for listening to building better developers to develop a new podcast. You can subscribe on apple podcasts, stitcher, Amazon, anywhere that you can find podcasts. We are there. And remember just a little bit of effort every day ends up adding into great momentum and great success.