I've watched developers spend months on courses, tutorials, and documentation and still feel unprepared to build something real. I've also watched developers with half the "study time" ship production apps that actually work. The difference isn't talent. It's method.

Builders learn faster than students. Building forces a different relationship with knowledge: you make the decisions instead of watching someone else make them.

The tutorial trap

Tutorials feel productive. You follow along, everything works, you understand each step. But there's a hidden cost: you're learning the instructor's decisions, not making your own.

  1. Watch someone set up auth
  2. Copy the code step by step
  3. It works (because it was designed to work)
  4. Move to next tutorial
  5. When you face auth in a real project: you don't know where to start
  1. Decide you need auth in your project
  2. Research options (sessions vs JWT vs OAuth)
  3. Pick one and implement it
  4. Hit 3 bugs you didn't expect
  5. Fix them. Now you actually understand auth.

The critical difference: when you build, you encounter the messy middle, the part between "I understand the concept" and "it works in production." That messy middle is where real learning happens.

The research is clear: active beats passive

There's rigorous science behind it. A meta-analysis of 225 studies published in PNAS by Freeman et al. found that students in active learning environments scored 6% higher on exams and were 1.5x less likely to fail compared to traditional passive lectures.

1.5×
less likely to fail
active vs passive — Freeman et al., 225 studies
+6%
on exam scores
same PNAS meta-analysis
0.27 SD
higher post-test scores
2024 randomized trial, medical students

The most recent confirmation is a 2024 randomized trial with medical students. The evidence keeps piling up — hands-on engagement beats passive absorption, and tutorials feel productive without being productive.

Nobel laureate Richard Feynman formalized this insight into what's now known as the Feynman Technique: if you can't explain something simply, you don't truly understand it. Teaching forces you to close the gap between "I get it" and "I can explain it."

Why side projects accelerate your career

Side projects do more than teach you. They create a visible portfolio of judgment: proof that you can make decisions, not just follow instructions.

The Maker Flywheel

When you ship a project, you show the things a list of technologies can't. You picked a database, a framework, a way to deploy — and owned those calls. You weighed real trade-offs and committed to one, which is most of what senior engineering actually is. And you finished, which most developers never do.

What hiring managers actually look for

After interviewing 100+ engineers, the pattern is clear: the strongest candidates aren't the ones with the most certifications. They're the ones who can explain why they made specific technical decisions in their projects.

"I used Prisma instead of raw SQL because the team was small and move-fast mattered more than query optimization" tells me more than "I have 5 years of database experience."

A shipped project with real decisions beats a resume of technologies listed.

The compound effect of building in public

There's a compounding effect that most people miss. When you build and share publicly:

  1. You learn the thing by building it.
  2. You solidify it by writing about it.
  3. Readers give you feedback.
  4. Their questions expose gaps you can't answer yet.
  5. You fill those gaps in the next project, and the cycle repeats.

Each project makes the next one better, technically and in how you think about problems. You develop intuition that no tutorial can teach.

How to start

Perfectionism stops more projects than missing skill ever will. The antidote:

  1. Pick a problem you actually have. Don't build a "practice project" — build something you'll use. The motivation to finish is 10x higher when you're your own user.

  2. Constrain the scope ruthlessly. The first version should take a weekend, not a month. Ship the embarrassing MVP; you can always iterate.

  3. Write one thing about it — a blog post, a tweet thread, a README with the actual decisions. Teaching is the multiplier.

  4. Ship it somewhere real.

  1. Weekend 1

    Build the core feature. Deploy it.

    A project on localhost is a draft; a URL makes it real.

  2. Weekend 2

    Fix the top three things that bother you.

    You're your own user now — the list writes itself.

  3. Weekend 3

    Write about what you learned.

    Teaching is the multiplier.

  4. Then

    Repeat with the next idea.

The knowledge you can't Google

There's a type of engineering knowledge that doesn't exist in documentation. It lives in the gap between "I know how X works" and "I know what happens when X meets Y in production." Michael Polanyi called this tacit knowledge, the kind of knowing you can only acquire through experience, not instruction.

You can't read your way to this knowledge. You can only build your way there.

"What I cannot create, I do not understand." — Richard Feynman (written on his blackboard at the time of his death, 1988)

So pick the thing you've been meaning to study, and build a bad version of it this weekend instead. You'll learn more from its bugs than from the course you keep not finishing.


Further reading: