<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emir Belkahia</title>
    <description>The latest articles on DEV Community by Emir Belkahia (@emirbelkahia).</description>
    <link>https://dev.to/emirbelkahia</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3132933%2F90016ff6-d2b4-4f58-9717-bd683902c752.jpeg</url>
      <title>DEV Community: Emir Belkahia</title>
      <link>https://dev.to/emirbelkahia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emirbelkahia"/>
    <language>en</language>
    <item>
      <title>Vibe Coding: AI Gives You Expert Hands, Not Expert Judgment</title>
      <dc:creator>Emir Belkahia</dc:creator>
      <pubDate>Thu, 09 Oct 2025 07:29:38 +0000</pubDate>
      <link>https://dev.to/emirbelkahia/vibe-coding-ai-gives-you-expert-hands-not-expert-judgment-4em2</link>
      <guid>https://dev.to/emirbelkahia/vibe-coding-ai-gives-you-expert-hands-not-expert-judgment-4em2</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;br&gt;
With AI-assisted coding, everything moves so fast that the biggest skill now is knowing when to think &lt;em&gt;before&lt;/em&gt; you code.&lt;br&gt;
Always start by asking the AI: “What are the existing solutions? What are the tradeoffs?”&lt;br&gt;
Then you decide. Then you build.&lt;br&gt;
Skip this step and you’ll reinvent the wheel — beautifully — like I did.&lt;/p&gt;




&lt;p&gt;I spent 2 hours building a Chrome extension with AI.&lt;/p&gt;

&lt;p&gt;It worked perfectly. Every edge case handled. Tests passing. The dopamine hits were real.&lt;/p&gt;

&lt;p&gt;Then I asked one question that changed everything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Wait... has nobody else already solved Gmail thread detection?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Spoiler: yes. There’s a maintained SDK (&lt;a href="https://github.com/InboxSDK/InboxSDK" rel="noopener noreferrer"&gt;InboxSDK&lt;/a&gt;) that does exactly that.&lt;/p&gt;

&lt;p&gt;The AI never mentioned it. Not once. In 2 hours of pair programming.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;I needed a Chrome extension to auto-click Gainsight buttons in Gmail — a simple automation to save our CS team some time.&lt;/p&gt;

&lt;p&gt;I fired up Claude Code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build me a Chrome extension that clicks Gainsight buttons in Gmail threads.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude: “Sure! Let’s use DOM manipulation to detect Gmail views and find the buttons...”&lt;/p&gt;

&lt;p&gt;And we’re off.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Vibe Coding Flow
&lt;/h2&gt;

&lt;p&gt;Here’s the thing about AI-assisted coding in 2025: it feels so empowering it should almost be regulated like steroids.&lt;/p&gt;

&lt;p&gt;The barrier to entry is basically zero.&lt;br&gt;
You describe what you want, the AI writes it, you test it, it breaks, you describe the bug, it fixes it. Rinse and repeat.&lt;/p&gt;

&lt;p&gt;Within 2 hours, I had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gmail URL detection with regex (&lt;code&gt;#inbox/thread-id&lt;/code&gt; vs &lt;code&gt;#sent/thread-id&lt;/code&gt; vs &lt;code&gt;#search/query/thread-id&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;MutationObserver detecting DOM changes when Gmail loads content&lt;/li&gt;
&lt;li&gt;Button state detection (&lt;code&gt;state-default&lt;/code&gt;, &lt;code&gt;state-loading&lt;/code&gt;, &lt;code&gt;state-logged&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Retry logic for race conditions with third-party extensions&lt;/li&gt;
&lt;li&gt;A full Chrome extension that actually worked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was in the zone. That pure flow state where problems → solutions → more problems → more solutions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem with Flow
&lt;/h2&gt;

&lt;p&gt;Flow is dangerous when you’re going in the wrong direction.&lt;/p&gt;

&lt;p&gt;I was so focused on solving each bug that I never stopped to ask the bigger question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Is this even the right approach?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We spent minutes debugging Gmail’s search URLs, regex mismatches, and MutationObserver loops. Each fix felt smart. Each bug, a dopamine hit.&lt;br&gt;
But every “win” moved me deeper into the wrong path.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Moment of Clarity
&lt;/h2&gt;

&lt;p&gt;After an hour of AI-assisted debugging, the extension worked flawlessly. But ... Until when ? &lt;/p&gt;

&lt;p&gt;I finally closed VS Code, looked up from my screen, and thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Wait… is it really possible that nobody has figured out Gmail integration before?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s when I re-opened Claude Code and asked explicitly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Okay, but is there an existing library for Gmail extensions?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude: “Oh yeah, there’s InboxSDK. It’s actively maintained by Streak, handles all the Gmail view detection. The team that built this extension probably should’ve used it.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bro. The “team” was YOU.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It felt like a scene straight out of &lt;a href="https://www.imdb.com/fr/title/tt0209144/" rel="noopener noreferrer"&gt;Memento&lt;/a&gt;.&lt;br&gt;
The thing is brilliant at writing code, but can't figure out what it did 5 minutes ago. Disorienting contrast. &lt;/p&gt;

&lt;p&gt;Back to our point: the problem wasn’t Claude Code — it was how I was using it. Not guiding it enough.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI Has Blinders On
&lt;/h2&gt;

&lt;p&gt;Claude Code is the smartest developer I’ve ever worked with.&lt;br&gt;
It can debug race conditions, write complex regex, optimize DOM performance — all in seconds.&lt;/p&gt;

&lt;p&gt;But it has tunnel vision.&lt;/p&gt;

&lt;p&gt;It solves exactly what you ask, perfectly.&lt;br&gt;
What it &lt;em&gt;won’t&lt;/em&gt; do is stop and ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hey, should we research if this problem has already been solved?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unless you explicitly tell it to.&lt;/p&gt;

&lt;p&gt;It’s like pair programming with a racehorse wearing blinders: incredible speed and focus in one direction, zero peripheral vision.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Went Wrong (and What to Do Instead)
&lt;/h2&gt;

&lt;p&gt;My mistake wasn’t technical — the code worked.&lt;br&gt;
It was &lt;strong&gt;strategic&lt;/strong&gt;: I reinvented Gmail thread processing from scratch when a mature SDK already existed.&lt;/p&gt;

&lt;p&gt;AI will happily build whatever you ask for.&lt;br&gt;
It won’t say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hold on — maybe this isn’t worth building.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because it doesn’t know your &lt;em&gt;context&lt;/em&gt;. It just executes.&lt;/p&gt;

&lt;p&gt;The real skill now isn’t avoiding mistakes — mistakes are cheap.&lt;br&gt;
It’s building a &lt;strong&gt;methodology&lt;/strong&gt; that reduces throwaway code.&lt;/p&gt;

&lt;p&gt;Here’s what I should have done instead:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Research phase (15 min)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: "What are the main approaches for Gmail Chrome extensions?"
AI: "You can use InboxSDK, Gmail API, or raw DOM manipulation..."
Me: "What are the tradeoffs?"
AI: "InboxSDK is maintained, handles edge cases, but adds dependency..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Decision (you, not the AI)
&lt;/h3&gt;

&lt;p&gt;“Use InboxSDK for production stability.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Implementation (1 hour)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;InboxSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;APP_ID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sdk&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;sdk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Conversations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registerThreadViewHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;threadView&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// You’re in a thread, do your thing&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done.&lt;/p&gt;

&lt;p&gt;If you don’t tell the AI to research first, it will just start coding — perfectly.&lt;br&gt;
And you won’t realize you’re reinventing the wheel until it’s too late.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Broader Pattern
&lt;/h2&gt;

&lt;p&gt;This isn’t just Chrome extensions.&lt;/p&gt;

&lt;p&gt;How many people are using AI to build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom auth systems (when Auth0 exists)&lt;/li&gt;
&lt;li&gt;Form validators (when Zod exists)&lt;/li&gt;
&lt;li&gt;State managers (when Zustand exists)&lt;/li&gt;
&lt;li&gt;UI kits (when shadcn/ui exists)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI will build all of it — flawlessly — without ever suggesting you might not need to.&lt;/p&gt;

&lt;p&gt;AI makes you feel competent even when you’re making strategic mistakes.&lt;br&gt;
The code runs, tests pass... but is it maintainable? Future-proof? Or just cool throwaway code?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;The barrier to building is lower than ever.&lt;br&gt;
But the importance of knowing &lt;strong&gt;what’s worth building&lt;/strong&gt; has never been higher.&lt;/p&gt;

&lt;p&gt;Think before you start. (It’s surprising how often that advice applies in life.)&lt;br&gt;
Ask about existing solutions.&lt;br&gt;
Let the AI present options.&lt;br&gt;
Then &lt;em&gt;you&lt;/em&gt; decide what to build.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;AI builds fast. You decide what’s worth building.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Questions for You
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Have you built something with AI only to discover you shouldn’t have?&lt;/li&gt;
&lt;li&gt;How do you balance “just start coding” vs. research?&lt;/li&gt;
&lt;li&gt;Am I just a noob who should’ve known about InboxSDK?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop your experiences below — curious how others are navigating this.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vibecoding</category>
      <category>ai</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
