The Junior Developer Cancer

Aug 13, 2024

The title is intentionally dramatic.

Also: using “cancer” as a metaphor can be insensitive. I’m not trying to be edgy about illness—I'm pointing at a slow, spreading set of incentives that quietly damages how junior developers learn.

Because something is off right now.

We have more learning resources than ever. More courses, tutorials, bootcamps, roadmaps, “day in the life” videos, and AI helpers.

And yet a lot of juniors feel stuck:

  • they can build “a clone” but can’t ship their own idea
  • they can follow a tutorial but can’t debug a broken build
  • they can write code but can’t explain tradeoffs

So what’s the actual problem?

The real ‘junior dev disease’: missing feedback loops

When juniors struggle, people often blame:

  • motivation
  • intelligence
  • “kids these days”

Most of the time it’s simpler: they don’t have tight feedback loops.

They spend weeks consuming content and producing uncalibrated output.

Without feedback, you can’t tell if you’re improving—you just get better at feeling busy.

The incentives that keep juniors stuck

1) Tutorial-first learning

Tutorials are great… for getting started.

The trap is staying there.

Tutorials give you a path. Real work gives you chaos:

  • requirements change
  • bugs are vague
  • performance matters
  • users do weird things

If your learning never includes chaos, you won’t build the skill that matters most: decision-making under uncertainty.

2) Framework chasing

The ecosystem changes fast and content rewards novelty.

So juniors end up rotating through:

  • framework of the month
  • state library of the month
  • build tool of the month

This creates shallow breadth and zero depth.

Depth is what makes you employable.

3) Cargo cult engineering

“Use microservices.” “Use a queue.” “Use clean architecture.” “Everything must be typed, tested, and containerized.”

These can be good ideas, but juniors often adopt them as rituals.

That’s how you end up with a tiny app that needs:

  • 15 scripts
  • 6 environments
  • 3 CI workflows

…and nobody can ship anything.

4) AI as an autopilot

AI can help a junior ship. It can also mask gaps.

If you can’t explain the code it generated, you didn’t learn—you just got output.

What actually helps juniors grow

1) Ship small things that real people use

Not “a Twitter clone.”

Ship:

  • a tool for a friend
  • a script that saves you time
  • a mini app for a niche community

When someone uses your project, you get honest feedback immediately:

  • “it’s confusing”
  • “it’s slow”
  • “it broke”

That’s learning fuel.

2) Practice debugging on purpose

Debugging is the job.

Set up reps:

  • break your own code and fix it
  • read stack traces slowly
  • add logs intentionally
  • write one test that reproduces the bug

The fastest developers aren’t the ones who type fast.

They’re the ones who can reduce chaos into a small, solvable problem.

3) Learn one stack deeply

Pick a stack and commit for 6–12 months.

For example:

  • Next.js + TypeScript + Postgres
  • Node + Express + SQLite
  • Python + FastAPI + Postgres

The specific stack matters less than the depth:

  • routing
  • auth
  • data modeling
  • deployments
  • observability
  • performance basics

4) Write, then reflect

After finishing a project, write a short “post-mortem”:

  • what was harder than expected?
  • what would you do differently?
  • what did you learn about tradeoffs?

Reflection converts experience into skill.

5) Get code review (even lightweight)

This is the biggest multiplier.

If you can’t get formal review, get informal:

  • post snippets in a community
  • ask a friend to read PRs
  • use AI for review, but ask it to explain why something is a smell

If you’re hiring juniors

Look for:

  • people who can explain their decisions
  • people who can debug a simple bug live
  • people who ship small projects consistently

Not just people who can recite buzzwords.

The cure

The “junior developer cancer” is mostly noise + incentives + missing feedback.

The cure is boring:

  • ship
  • debug
  • commit to depth
  • seek feedback

Do that for a year and you won’t feel like a junior anymore.