# Junior Developers Should Build Ugly Things (On Purpose)
By Govind Bajaj · 2025

Tags: career, junior-developer, learning, opinion, growth
I see junior devs stuck in tutorial hell, building perfect to-do apps. The path to senior is building messy, real things that break. Here's why ugly code is the best teacher.
I see junior developers stuck in tutorial hell, building perfect to-do apps that no one uses.

They follow courses religiously. They write clean code. They use design patterns correctly. And they never ship anything that matters because they are afraid of writing bad code.

The path to senior is building messy, real things that break.

## The Tutorial Trap

Tutorials present sanitized problems with known solutions. Build a CRUD app. Implement JWT auth. These teach syntax, not judgment.

Real software requires judgment. When should you optimize? When should you refactor? When should you ship known technical debt? Tutorials cannot teach this.

## Why Ugly Code Teaches More

I learned more from the Sans Herbals v1 codebase — a mess of spaghetti code — than from any course.

Why coupling matters: When I changed the product schema, I broke the cart, checkout, and admin. Three days of debugging taught me about separation of concerns.

Why testing matters: I deployed a simple change that broke payments for two hours. That lesson stuck deeper than any testing tutorial.

## The Permission to Suck

Junior developers need permission to write bad code in side projects. Ship something with messy state management. Ship an API with no tests. Then maintain it for three months. The pain teaches you why best practices exist.

## Takeaways

- Tutorials teach syntax, not judgment — real projects teach judgment through pain
- Ugly working code teaches more than beautiful theoretical code
- Maintain your own code for months — the maintenance pain teaches why best practices exist
- Side projects are the place to write bad code — production is the place to apply the lessons
- Build things you use daily — the maintenance pain becomes your teacher
- Senior developers are those who have written enough bad code to know what good code looks like