Skip to content
Harshal Patel
Go back

Web Dev Today Is Like LEGO — And AI Is Good at It

Table of contents

Open Table of contents

The LEGO Analogy

At the lowest level, web development is connecting blocks of code just like LEGO and making something really great.

Think about it: React components, npm packages, API integrations, database connections — they’re all pre-built blocks. Your job isn’t to build everything from scratch. Your job is to find the right blocks and connect them cleverly.

Colorful LEGO blocks representing modular web development
Photo by{" "} Dan Gold{" "} on Unsplash

The Building Blocks

Frontend

Component Block:
├── Layout (Next.js, Remix)
├── UI (shadcn/ui, Radix, Headless UI)
├── Styling (Tailwind CSS, CSS Modules)
├── State (Zustand, Jotai, React Query)
└── Animation (Framer Motion, GSAP)

Backend

API Block:
├── Framework (Express, Fastify, Hono)
├── ORM (Prisma, Drizzle, TypeORM)
├── Auth (NextAuth, Clerk, Lucia)
├── Database (PostgreSQL, MongoDB, Redis)
└── Validation (Zod, Valibot, Yup)

Infrastructure

Deploy Block:
├── Hosting (Vercel, Railway, Fly.io)
├── CDN (Cloudflare, CloudFront)
├── Storage (S3, R2, Supabase Storage)
├── Monitoring (Sentry, PostHog, Logtail)
└── CI/CD (GitHub Actions, GitLab CI)

Why This Is Good

Speed to Market

10 years ago, building a web app from scratch took months. Today, you can prototype in days:

Day 1: Project setup (Next.js + Tailwind + shadcn)
Day 2: Authentication (Clerk integration)
Day 3: Database schema (Prisma + PostgreSQL)
Day 4: API routes (tRPC or REST)
Day 5: Frontend components (shadcn + Tailwind)
Day 6: Deployment (Vercel)

That’s a working MVP in a week. Before, that would take a month.

Quality

These blocks are battle-tested. shadcn/ui has been used by thousands of teams. Prisma handles edge cases you’d never think of. Tailwind prevents CSS disasters.

You’re not just building faster — you’re building better.

Focus on Differentiation

The blocks handle the boring stuff (auth, database, deployment). You focus on what makes your product unique.

Where AI Fits In

AI is good at connecting blocks because:

  1. It knows the blocks (trained on millions of GitHub repos)
  2. It understands the connections (APIs, imports, types)
  3. It can generate boilerplate quickly
  4. It catches common mistakes

What AI Is Good At

✅ Generating component boilerplate
✅ Writing API routes
✅ Database schema design
✅ CSS styling (especially Tailwind)
✅ Writing tests
✅ Documentation
✅ Converting designs to code

What AI Struggles With

❌ Complex business logic
❌ Novel architecture decisions
❌ Performance optimization
❌ Debugging subtle race conditions
❌ Understanding user needs
❌ Creative design decisions

The Developer’s Role Has Changed

Then (2015)

Developer:
- Writes CSS by hand
- Configures webpack
- Handles authentication from scratch
- Writes SQL queries manually
- Deploys with FTP

Now (2025)

Developer:
- Assembles components
- Configures tools (not writes them)
- Integrates auth providers
- Uses ORMs
- Deploys with one click

The developer’s job shifted from building everything to choosing the right blocks and connecting them well.

Example: Building a Dashboard

The Blocks

// 1. Layout block (Next.js)
export default function DashboardLayout({ children }) {
  return (
    <div className="flex">
      <Sidebar />
      <main className="flex-1">{children}</main>
    </div>
  );
}

// 2. Data fetching block (React Query)
function useDashboardData() {
  return useQuery({
    queryKey: ["dashboard"],
    queryFn: () => fetch("/api/dashboard").then(r => r.json()),
  });
}

// 3. UI block (shadcn)
function StatsCard({ title, value, change }) {
  return (
    <Card>
      <CardHeader>
        <CardTitle>{title}</CardTitle>
      </CardHeader>
      <CardContent>
        <div className="text-2xl font-bold">{value}</div>
        <p className={change > 0 ? "text-green-500" : "text-red-500"}>
          {change > 0 ? "+" : ""}
          {change}%
        </p>
      </CardContent>
    </Card>
  );
}

Connecting Them

// The "LEGO assembly"
export default function Dashboard() {
  const { data } = useDashboardData();

  return (
    <DashboardLayout>
      <div className="grid grid-cols-3 gap-4">
        <StatsCard
          title="Revenue"
          value={data.revenue}
          change={data.revenueChange}
        />
        <StatsCard title="Users" value={data.users} change={data.usersChange} />
        <StatsCard
          title="Orders"
          value={data.orders}
          change={data.ordersChange}
        />
      </div>
      <Chart data={data.chartData} />
    </DashboardLayout>
  );
}

That’s it. No custom CSS, no manual state management, no API boilerplate. Just blocks connected together.

The Future

AI Will Get Better at Connecting

As AI improves, it’ll handle more of the assembly:

But Developers Still Matter

AI can’t:

The developer’s role evolves from “code writer” to “system architect + product thinker.”

Conclusion

Web development IS LEGO. The blocks are better than ever, and AI is great at connecting them. But someone still needs to decide which blocks to use, how to arrange them, and what to build.

That someone is you.

The best developers aren’t the ones who write the most code. They’re the ones who choose the right blocks and connect them in ways that solve real problems.


Share this post:

Previous Post
YouTube into Infinite Cloud Storage — Using C++ and Math
Next Post
Building Reliable Real-Time Apps with WebRTC