Dive 107: How Thoughtful Developers are really using AI
And what the hype merchants won’t tell you
Hey, it’s Alvin!
We’re living in an age where AI is sold as both a magic wand and a replacement for actual skill. Social media is full of people promising you can build million-dollar apps without writing a single line of code. Only AI prompts.
But here’s the thing. I spent almost 15 years building enterprise software, mostly on the backend. I’ve used AI tools like ChatGPT, Copilot, and Claude at work and for side projects like Toronto Fire Fan. And what I can tell you is: AI can be powerful, but it’s no shortcut to understanding, mastery, or value creation.
So let’s cut the bullshit. Let me show you how real developers are using AI and what the influencers won’t tell you.
I’ll start by breaking down some myths shared with me via an emailed newsletter post by an influencer who never gave their real name, but calls themselves “WiFi Money Plant”:
Vibe coding refers to the use of AI prompts to write coding - without having any prior knowledge of coding! This is a godsend for the non coders amongst us, as a big barrier to entry for anyone trying to build a business is the lack of coding knowledge.
Sure, we have platforms like Bubble and Wix for basic stuff, but nothing can beat a properly coded software when it comes to making money.
So, if Mr. Money Plant is a “non coder,” then how does he know the AI is generating “properly coded software”?
Myth #1: AI is the best software building tool.
Reality: The best software development tools are the ones that help you get the job done efficiently and well.
Plant says that Bubble and Wix are for “basic stuff.” But so is AI, unless you know how to ask the right questions. And that comes from making mistakes and learning from them. It’s called experience. Something valued long before AI.
WMP goes on to explain how you can download Cursor (a software development program). And describes how to use it to make apps with its built-in AI help.
It will give you some theory along with some exact code snippets to use (it’s one click, it will literally build the entire website for you). It identifies any errors you create, and fixes them too. You just need to keep asking it to do things for you.
What does Ms. Money Plant mean when she says, “it identifies any errors you create”?
I thought the point was: you’re a non-coder asking the AI to generate everything for you. It sounds like Plant is conceding that the AI can generate flawed code. But earlier, this person implied the AI would generate “properly coded software.” So, which is it?
And if we’re counting on AI to fix its own mistakes, how can we be sure the fix won’t also be flawed?
Myth #2: AI generates flawless code.
Reality: AI can introduce bugs.
Of course, you can ask the AI to find bugs in your code. Generated or not. But you still have to know what to look for. And that comes from experience. AI tools can’t just “find all the bugs” in a big enough codebase unless you narrow the scope of the context first.
If you don’t already know that SQL injection is a vulnerability in the code you wrote or generated, then you won’t know to look for it. You won’t know to ask for it. And there’s no guarantee the AI will look for it either. No matter how detailed your prompt.
If your AI sets up your code with an ORM, and you don’t know what an ORM is or what it does. Then, you also won’t know that ORMs can create N+1 problems, and you won’t know to ask about it either.
You can’t ask about what you don’t know.
Myth #3: AI fixes all problems.
Reality: AI can’t address problems that are “out of context.”
I’ve asked Copilot to find a bug. It would fix it. Only to break something else that was working. In software development, we call this a regression. When I asked it to fix the regression, the AI would reintroduce the original bug, creating a cycle of unworkable solutions. Then, I’m forced back to debugging the issue by… well… thinking.
Even with a broad context, AI can’t always accurately identify the root cause of a problem. The other day, I found that date-times inserted into my personal database were not in the correct time zone. I asked every AI I had about the problem, but none could solve it. My last resort was my own memory. Because I remembered having similar problems many years ago, which I solved by properly setting the database server’s locale. I solved the problem because of the experience I gained more than a decade ago.
The Plant fella continues with:
Keep asking for things based on your level of technical expertise.
“Teach me how to build a website for auto deleting tweets” - it will give you every step right from building the basic structure, choice of coding language, giving you a basic introduction to programming, connecting Twitter, adding functionality, adding your payment processors, putting your software online, etc.
The best part? You don’t even have to do anything by your own. You use AI to make the software, use some other service provider’s API for functionality, and Stripe for payments - 90% margins!
I love how he says, “you don’t even have to do anything by your own” except… literally everything in the previous paragraph. Which is no easy feat.
Choosing a language and structure is one thing. But connecting to Twitter, adding functionality and adding payment processors is a whole other beast if you want to do it well. Meaning: respecting user privacy, preventing regressions, and following security best practices so you don’t lose confidential user data to hackers because you didn’t know you had to harden the APIs, network, and server where you deployed your web app.
Most of which, by the way, you wouldn’t have to worry about if you used Bubble or Wix because they have built-in security features. They’re not sponsoring me, and I’m not recommending them over AI. It’s just that experienced devs know that every technology has trade-offs. And a well-run dev team selects the technology they use based on the one best suited for their use cases, knowing its pros and cons.
And that’s how my peers and I approach AI.
Just as a team with high standards won’t mindlessly approve a pull request from a colleague, we don’t just accept what AI generates. Yes, we’ll ask it questions to clarify our own understanding. We’ll even search the internet to validate an AI’s responses. But we take it further.
We ask: “how does the code handle edge cases?”
For example, I had a problem with my hobby website, where the map would take up an entire mobile screen. This made it hard for users to scroll past it. I asked ChatGPT for solutions. And it offered some practical solutions other websites often use. But I also realized that one suggestion might not work because I needed to let users scroll down past the map to a data table below. So, I double-checked with ChatGPT to make sure the edge case is handled properly:
We look at each line of code and ask, “is this really needed?”
The fundamental coding principles like KISS (Keep It Simple, Stupid) still apply. We don’t want unnecessary code because it clutters our understanding of how the code works. It adds risk of bugs. For example, I noticed that when I asked Cursor to fix some code; it added a line that seemed superfluous, so I asked why it’s needed. When I asked about it, Cursor removed it:
On another occasion, I asked Cursor to optimize a function I wrote, but I noticed it removed a line that was needed. When I pointed it out, Cursor put it back:
Most importantly, we ask: “Is there a better way to do this?”
As I mentioned before, I was looking for a user-friendly way to display a map on a page, and ChatGPT offered some suggestions. But after thinking through them, I realized there’s a much simpler solution. I could just shrink the map so there’s padding above and below it within the viewport of a mobile device:
The UI:
AI isn’t the first tool that let “non-coders” make software. It also isn’t the first time “non-programmers” declared the end of software developers. It also won’t be the last. A few years ago, “low-code” and “no-code” tools were all the craze on Twitter. And there have been tools for people to build their own websites for decades.
Sure, making software is easier than ever with AI. But coding was never the hard part to begin with. The hard part was always understanding the cause(s) of a bug. Which required diving into code and its technological environment whenever a bug surfaced.
That’s still true today.
AI can help you understand what’s going on. But you still have the responsibility of understanding not just what the problem is, but how and why a solution works. When you make a mistake, you still have to learn from it. AI cannot substitute experience.
Because the true value of a software developer was never just in coding ability. Your true value as a software developer lies in your ability to add value to your users and customers by solving their problems. It just so happens that the solution is software.
Software is a tool.
The craftsman isn’t valuable because of the hammer—they’re valuable because they know what to build, why it matters, and how to do it well.
AI shouldn’t replace thinking. It should demand more of it.
The best software developers don’t use AI to skip steps. They use it to go deeper, move faster, and build better.
Because at the end of the day, your job isn’t just to write code. It’s to solve real-world problems, for real people, with care, curiosity, and craftsmanship.
Use the tool. Be the craftsman.
You have the power.
Reply to belowthesurfacetop@gmail.com if you have questions or comments.
If you’re new to software development, let me know if you have any questions about AI’s impact on our work. Reach out if you have questions about what we do. I love talking about it.
If you’re a software developer, let me know what you think about AI’s impact on our work. Are you using AI? And how?
Thank you for reading. Better yourself with AI. And I’ll see you in the next one.