Vibe Coding - Dev Leader Weekly 88

Vibe Coding - Dev Leader Weekly 88

TL; DR:


Vibe Coding

I knew this was going to be a topic I'd write about but to be honest, I was sort of dreading it. Once it came up as an ask for Code Commute, I knew it was time to turn it into a newsletter article and a livestream. If you're interested in seeing my first thoughts on "Vibe Coding" on Code Commute, you can check it out here:

What The HECK Is Vibe Coding?

Most of you probably already know, but I think it's important to get the same working definition out of the way. Especially because with this kind of stuff it can evolve pretty rapidly and then I'm not even sure if my own definition remains accurate!

The way that I define "Vibe Coding" is building with AI / LLMs with disregard for the architecture, design patterns, and structure of the code purely in favor of being able to leverage more AI results to continue building your project/application/service.

If that sounds kind of unhinged, it's because it is. However, I plan to cover some different perspectives on this in this newsletter issue because I think it's always important to approach things from different angles.

More and more developers are relying on AI tools to create software. In fact, more and more NON-developers are relying on AI tools to create software. Discussing this kind of stuff and building an understanding from multiple angles I'm hoping will be helpful for different levels of experience and backgrounds of development.

So let's get into the immaculate (or not) vibes.

Why Vibe Coding Is AWESOME

Let's start with the positive stuff. After all, if there was nothing beneficial at all here then not a single person would be doing it.

There are two major reasons I think vibe coding can be great -- that doesn't mean there aren't more, these are the best, or I recommend this for everyone -- but they are:

  • Dramatically reducing the barrier to entry for having people get into development
  • Rapidly spin up a functional application or service, especially in the context of getting a prototype together

I'll start by elaborating on the first one a bit more because that point alone might have triggered people. I am NOT saying that it lowers the bar for expertise or mastery. I AM saying that individuals who may have never tried their hand at putting software systems together are now able to jump into things.

This doesn't mean that they'll have a bulletproof application or the best architecture. In fact, it's likely going to be pretty damn rough. But I've spent literally years and years trying to help people get into software development and discuss all sorts of barrier of entry -- much of the time artificially created because people just don't think they're "smart enough" to do it.

Vibe Coding can open up doors for some people to start building things for the first time and get a taste of what it's like to see a program come together. If you remember the first time you experienced something you built start working you can probably recall that it's a pretty awesome feeling when it starts to come alive.

The other one I wanted to talk about is rapid prototyping. But you know what? That needs a whole section on its own because I'll give you a real example from... TONIGHT!

Rapidly Prototyping

For context, at the time of writing, I can say that I've still spent the majority of my professional software engineering career prototyping things. I did it as an intern and I did it at a digital forensics company building some really cool tools.

Rapid prototyping often meant:

  • Trying new things I had never used before
  • Working in domains that I was unfamiliar with
  • Accepting that I would probably need to throw away a lot of stuff

You read that correctly: prototypes often meant throwing away code. That means what I was building didn't necessarily need to last, it needed to be used to answer questions for the business.

In a situation where we don't need to rely on robust systems, super well-architected applications, scalability, performance, or all of the qualities we generally want in real software... Vibe coding might not be such a bad thing! In fact, it might be a GREAT tool to get something working really fast.

I promised you an example though, so let's discuss the thing that I vibe-coded today: an image scaling algorithm.

You see, in my SaaS BrandGhost , we need to be able to post images to different social media platforms. The challenge is that many platforms have different limitations on format, size, dimensions, and aspect ratios. We don't want users to have to have to worry about it. It should "just work".

This was a great opportunity to vibe code because:

  • I know enough about what I'm building that if I DO want to keep the code, I know what to review and investigate further
  • This is something that I want to experiment with to see the feasibility of it but not a hard requirement
  • This is a problem that I know I can solve on my own if I sit down and work through it
  • ... just because I CAN solve it doesn't mean I will enjoy it

So to ChatGPT I went:

I need to create an algorithm that can resize pictures effectively to optimize for a target aspect ratio. For this, we'll assume I already have a library that can perform the image conversion (format, scaling, positioning, resizing, etc...). The focus of this will be specifically around the algorithm to optimize the best fit for a picture...

I continued the prompt to add in different constraints, and then I went back and forth with ChatGPT on different things I wanted to tweak and tune. Once I had a working algorithm, I went on to ask it about tests to build confidence in the scaling. Heck, it even suggested some tests to me that I didn't even think about.

But this ended up being something that saved me TONS of time because I can describe the problem I'm trying to solve very clearly, and I know enough about what needs to be built that I can verify it.

This brings us to our last topic...

Do You Know What The Hell You're Doing?

Let's get into the dark side of vibe coding. Over the last week of seeing vibe coding as every other post on social media, it went from being hordes of non-technical people screaming that this was the end of software engineers as we know them to non-technical people crying that everything was on fire for what was being built.

Vibe coding does not:

  • Make you an expert
  • Guarantee any mastery
  • Replace software engineering
  • Ensure best practices are followed
  • Automatically give you domain knowledge
  • Make any promises about anything being quality

We've been saying it since the start: AI is a TOOL. It's a ridiculously powerful tool, but it's still a tool. It is not the master software engineer, and you don't become the master software engineer just by vibe coding either.

It can be an incredible false sense of confidence just to have code generated that does what you asked for (on the surface). But as you keep building and extending the software you're building by vibing your way through, unless you're going back and refining whatever the heck it is you're building, it'll quickly become a house of cards.

If you don't know how to engineer the systems and services you are trying to build, you cannot expect to effectively prompt the LLM to do it for you. Code is one part of software development, but it's how we translate our logic for machines to use. There's SO much more that goes into software engineering that's not just code.

To Vibe, Or Not To Vibe?

I'm not going to sit here and tell anyone to not vibe code. However, my recommendation is simply to understand what situation you're likely getting yourself into.

That doesn't mean it's inherently really good or inherently really bad. It's just a tool that you can decide how to use.

I used it this evening. I'll use it again. It won't be how I code every day, but it's something I can lean on if I want to use it situationally.

Figure out what situations it makes sense for you -- just don't end up with a database of passwords exposed to the Internet or something.



Get this discounted bundle now!

As always, thanks so much for your support! I hope you enjoyed this issue, and I'll see you next week.

Nick “Dev Leader” Cosentino

[email protected]

Socials:

Blog

Dev Leader YouTube

Follow on LinkedIn

Dev Leader Instagram

P.S. If you enjoyed this newsletter, consider sharing it with your fellow developers!

Great article Nick and good timing too!

回复
Eldar Radovici CFA,FRM

Pure Software Engineer | Problem Solver of Impossible Things | Finance Expert | Accomplished Presenter | Extroverted Geek | Superhost

1 天前

I actually enjoy vibe coding with procedural applications and languages like notebooks (jupyter, polyglot) and python. It’s really fun to iterate on entire solutions and just copy / paste / and go! For me, gAI works well as a conversational peer programmer and does the laborious coding parts where I provide it with business domain knowledge and design guidance. On the flip side, using gAI against more complex OOP systems and languages like analytical ERMs and .net doesn’t really work, well.

要查看或添加评论,请登录

Nick Cosentino的更多文章