The more things change, the more they stay the same, or so the saying goes. As humans we tend to jump at new technologies and follow the same old pattern of acting like this new thing has never been done before and that all the things we knew about productivity are somehow changed forever. AI is no different. “Vibe coding” has taken the internet by storm with non-technical founders rushing in to produce new products and services without those pesky engineers telling what can and can’t be done. As one of those pesky software dudes, I find myself thinking, “oh no, here we go again.” Changes in technology, as history marches forward, seem to always come with this paradigm shift that doesn’t actually end up looking all that different than the era before. The rush to come up with a whole new set of terminology to be the “first” at something in hopes that a VC will be wow’d into throwing money at a project seems to serve as the driving force behind this phenomenon. Influencers start adopting the term and the progenitor proudly proclaims that they invented something new.
Don’t get me wrong, vibe coding is new in many ways because AI-generated code has never been this proliferated, or, actually useful. Now that comes with its own caveats because I’ve also witnessed the absolute train wreck that can come from someone chasing vibe coding into a corner. There are endless threads on X where a non-technical founder proclaims victory over needing developers and that they’ve built the next best thing. For next to zero cash burn they’ve come up with the newest super app that will solve all of our problems. Of course, what comes next is a hilarious slide into madness as they realize the app won’t scale, it keeps crashing, they published their secret keys out in the open, or they can’t actually add any new meaningful functionality. This is of course followed up by a litany of “I told you so” from a crowd of leering developers.
Now, to be completely fair, I have witnessed several success stories, including my buddy, Robert Thelen, Air Force Veteran, Founder, and CEO of Rownd, who vibe coded (even though that term still makes me cringe), a new emailing service a la Mailchimp. On the other hand, Robert is not someone I would classify as a non-technical founder. As someone who generally doesn’t hide my distaste for trends and vibe coding is no different, I had been using Microsoft Copilot and ChatGPT’s Code Copilot to augment my own developer adventures. Ever since I taught my own high school class on C back in 2001, I’ve been coding in some language ranging from the wasteland of Javascript to the desolate lands of C++ and everything in between including a decade of PHP and MySQL. Except Java, where there’s no middle ground opinion to be had on Java. You either swear by it or do everything in your power to destroy its existence. Anyways, I found the augmentation to my coding that ChatGPT brought to be significantly beneficial. After cursing vibe coding as a term, I decided to sit down one night and chase it down the rabbit hole to its natural conclusion and see if I could do something similar to Robert.

Rownd
At Rownd, our mission is to eliminate friction in user authentication by empowering businesses with seamless, secure, and scalable solutions. We strive to deliver innovative tools that simplify sign-in experiences, prioritize user privacy, and enable companies to focus on growth and building meaningful connections with their customers.
Rownd envisions a world where authentication adapts to people, not the other way around—making it effortless for users to access what they need while providing businesses with unparalleled flexibility and control over their onboarding and security processes.
My current stack is .NET ASP with an MVC pattern and microservice architecture using Razor Views and Pages with some Go on the back end. I used to be a huge ASP hater, which is how I ended up in PHP and MySQL, so before I lose all street cred with the other ASP and Microsoft haters, I did finally come back around and found that it has improved significantly. I still try to retain some cool kid points by using gRPC and Go. This was all after building with React and Node for a bit, but I just couldn’t take the constant Router changes anymore. There’s just something comforting about knowing I’ll get a new version of .NET every November.

Okay, it’s kinda cool, but lacking a lot before we launch and take over Zoom’s market share.
What I did notice is that sometimes the steps were out of order, and in the interest of full disclosure, the reliance on external dependencies is very high. If one of those libraries were updated tomorrow, I might be screwed. If anything is deprecated, I will have to go back and change a bunch of things or risk security issues. This is where vibe coding really falls apart. It generally insists on storing API secrets and keys in the code itself. Magic strings are also a big thing. Config settings embedded in functions are also a problem. Most of the time if you author the prompt correctly, you can follow up with additional steps to make things more secure, but, and this is a big but, you need to know that is a requirement. This is where vibe coding is truly weakest and why a knowledgeable programmer can really push it to the limits.
I did observe that in several places, someone who was less familiar with the architecture, syntax, and patterns associated with the stack would have been lost. After the initial vibe coding session, adding on additional features became infinitely more complicated. I also use version control software, so in the event that I had to roll back my code, that would have been available to me, which is the underlying theme of the struggle coding that a lot of the vibe anecdotes include. This experience led me to the thought of “oh, here we go again,” because this echoes the exact challenges a lot of developers face when working in teams and the solutions we’ve already developed.
Rather than rely solely on vibe coding to solve our problems, I suggest looking into Extreme Programming or XP, which heavily relies on Pair Programming. Through this construct, pairing AI with a senior developer can yield significant results. This is how we do business as my own company, Argento Simulations. Before AI, we adopted Pair Programming as a standard practice, pairing a Senior with a Junior, and in times when we felt especially saucy, a Junior with a Junior, which felt more purely entertainment driven like setting up two gladiators in the Coliseum. By leaning on Pair Programming in this manner you can take advantage of the strengths of both parties. It has certainly enhanced my own development speed and efficiency when I augment or assist my coding through the use of AI. To this end, I say the best way to implement AI in your development team is to treat it like an augmentation or an assistant. AI-assisted programming as opposed to straight up vibe coding. It communicates the need for the human expertise to recognize business requirements, AI limitations, and fits into an existing team structure.
With the rush to reduce team sizes, companies are shedding talent and losing out on corporate knowledge. Instead of removing developers, they should be promoted to managers to help oversee the integration of agentic AI and focus on augmentation rather than replacement. XP is a great subset of Agile development that fits AI very well. Empowering your individual and paired programmers with AI can help retain and even enhance talent. In this push for efficiency and innovation, replacing humans isn’t the answer at all. Again, it makes me sigh and think, “oh, here we go again,” as companies and businesses miss the broader message of the paradigm shift and fail to recognize what happens when technology enters the scene. Instead of shedding personnel, retain that talent, that knowledge, and that experience, and instead augment it by pairing it up with AI rather than seeing that as the replacement.