BytesCrafts logoBytesCrafts Blog
← All posts

Your AI Won't Replace You. Your Ego Might.

aicollaborationdevelopersopinion

I want to show you two email threads. Same developer. Same problem. Very different outcomes.


Thread One: The Delegation

From: Rahul (Senior Engineer) To: AI assistant Subject: Build me a blog analytics system

I need analytics for my blog. Track page views, countries, devices, referrers. Give me charts. Use Deno KV. Go.

The AI comes back with code. Confident. Clean-looking. Rahul pastes it in.

It crashes.

TypeError: Too many ranges (max 10)

Rahul pastes the error back. The AI apologises, produces new code. Rahul pastes that in. It runs. The stats page loads. The chart area is empty. No data.

Rahul asks again. The AI explains. Rahul half-understands, pastes more code.

An hour passes. The system half-works. Rahul feels frustrated — at the AI, at himself, at the hype. He writes a Slack message to his team: "These AI tools are honestly overrated."

He's not wrong. But he's not right either.


Thread Two: The Collaboration

From: Deepak (Engineer) To: AI assistant Subject: Let's build analytics — I'll tell you what I know

I want to track page views for my blog. I'm using Deno KV, Fresh 2.x, deployed on Deno Deploy. A few things I already know:

  • Deno Deploy runs on Cloudflare under the hood, so cf-ipcountry and cf-ipcity headers are available for free
  • I want the stats in a shared @bytescrafts/analytics package so other apps can use it later
  • For charts, I'd prefer something lightweight — I don't want to ship 200KB of JS for a line graph

What would you suggest?

The AI responds with a plan. Deepak reads it. He pushes back on one thing — "We should not have unstable: kv in the sub-package deno.json, only the workspace root" — because he knows how Deno workspaces behave.

The AI adjusts.

They build. The AI writes the atomic KV increment logic. Deepak spots that kv.getMany has a 10-key cap and the code requests 30 — the AI didn't know this limit. Deepak flags it. The AI batches correctly.

The chart renders. The data flows. The page looks clean.

Total time: about the same as Thread One. Quality: not comparable.


What Actually Happened

Rahul didn't fail because the AI was bad. He failed because he treated it like a vending machine.

Deepak didn't succeed because the AI was brilliant. He succeeded because he brought what only he could bring:

  • Domain knowledge — Cloudflare header availability, workspace KV constraints
  • Taste — what "lightweight" means in this context, what the page should feel like
  • Verification instinct — noticing the 10-key cap before it hit production
  • Direction — knowing the analytics should live in a shared package, not inside the app

The AI brought what only it could bring:

  • Speed — the atomic KV tracking boilerplate written in seconds
  • Breadth — knowing uPlot exists, what its API looks like, how to wire a ResizeObserver
  • Patience — no sighing when asked to restructure the same function for the fourth time
  • Draft velocity — turning "give me 30 days of daily views" into working code before the thought is finished

Neither alone would have shipped something good. One without the other is either fast-and-broken or slow-and-careful.


The Replacement Myth

Here is why the "AI will replace developers" framing keeps failing: it models software as a series of tasks to complete, when it is actually a series of decisions to make.

Translate a design to code? AI can help. But should the button be there at all? That is a product decision. Which framework serves this team's constraints? That is an architecture decision. Why is this edge case actually an edge case? That is an experience decision.

AI accelerates the doing. It does not replace the deciding.

The developers I know who are thriving are not the ones with the most impressive prompts. They are the ones who know their domain well enough to catch what the AI gets wrong — and are humble enough to let the AI carry what it can.


The Skill That Matters Now

There is a new skill in software engineering that nobody talks about clearly: knowing what to delegate and what to hold.

Hand over the boilerplate. Hold the architecture. Hand over the first draft. Hold the review. Hand over the syntax. Hold the intent.

The developers most at risk are not the ones who fear AI. They are the ones who outsource their thinking to it — and stop building the mental models that let them catch its mistakes.


A Final Email

From: Rahul To: Deepak Subject: That analytics thing

Hey — saw your blog stats page. How long did it take?

From: Deepak To: Rahul Subject: Re: That analytics thing

A few hours across two days. Used Claude for most of the code. The trick is you have to know enough to argue with it.

That last line is the whole thing.

You do not need to fear AI as a replacement. You need to become the kind of developer who knows enough to argue with it — and knows when to stop arguing and let it work.

That developer is not going anywhere.