My GitHub Is a Graveyard
I have repos that never saw a commit beyond Initial commit. Libraries that were going to be "the one." Microservices solving problems nobody had. Dashboards that never left localhost:3000.
I'm not proud of it. But I'm not alone either.
I call it the Perfect Project Syndrome: that mental trap where every new idea feels better than the one you're currently building, and you end up with 47 abandoned repos and zero shipped products.
What It Looks Like in Practice
Phase 1: The Epiphany. An idea hits you. It's brilliant. You're going to solve a real problem. You create the repo, configure the linter, ESLint, Prettier, Husky, commitlint, CI/CD with GitHub Actions. Three hours setting up tools before writing a single line of logic.
Phase 2: The Technical Rabbit Hole. "I'll use this new stack I want to learn." Next.js, tRPC, Prisma, Turbo, Turborepo, pnpm workspaces. What was supposed to be a CRUD now has hexagonal architecture with event sourcing. Two weeks in — no demo.
Phase 3: The Killer Comparison. You open Twitter. Someone shipped something over a weekend with PHP and jQuery and has 200 users. Your technically superior project is still on localhost. Instead of getting inspired, you get demoralized. "Why bother if my perfect stack isn't moving?"
Phase 4: The Cycle Repeats. New idea. New repo. New ESLint config. The old one stays behind, gathering digital dust.
The Root Cause
It's not a lack of discipline. It's fear disguised as perfectionism.
Every hour you spend configuring instead of building is an hour you're not exposing your work to the world. And the world can be cruel. Your code, your product, your writing — all vulnerable to critique. The ESLint config isn't. The CI/CD pipeline isn't. Hexagonal architecture isn't (well, that one is, but you need someone who understands it to criticize you).
Technical perfectionism is a very well-decorated comfort zone.
What Worked for Me
The "Friday or Die" rule. If an idea doesn't have a working MVP in one week, it dies. Not a pretty MVP — an MVP that does the thing. No tests. No CI/CD. No design. One single feature that solves the problem. If after that the idea is worth it, you invest in engineering. If not, you kill it with honor and no guilt.
The Lazy Stack. I use technologies I already know for version 1. None of this "I'll take the opportunity to learn Rust." I learn on side projects, not the one I want to launch. To ship, I use what takes me 3 hours, not 3 weeks.
Build in public (even if it's embarrassing). The first article on my blog wasn't good. Neither was the second. But each one was better than the last. If you wait for perfection, you never publish. Real feedback beats imaginary perfection.
The graveyard has value. Those dead repos aren't failures — they're experiments. Each one taught you something: a pattern that doesn't work, an architecture that's too complex, an idea that wasn't as good in execution as it sounded. Revisit them occasionally. Some deserve resurrection.
The Question I Ask Myself Now
Every time I start something new, I ask:
"Am I building this so it exists, or so it's perfect?"
If the answer is the latter, I close the editor and go touch grass.
Did this hit home? More every week. Newsletter or X.

Top comments (0)