DEV Community

Cover image for My GitHub Graveyard has 27 dead projects. Here is the brutal truth about why.
S M Tahosin
S M Tahosin

Posted on

My GitHub Graveyard has 27 dead projects. Here is the brutal truth about why.

The trap of over-engineering stacks

I recently opened my GitHub account and filtered by private repositories. I actually counted them: exactly 27 abandoned side projects created over the last 3 years.

There was a machine-learning habit tracker. There was a Twitter clone for dogs. There was a complex SaaS boilerplate that I spent four weeks configuring before completely giving up on it. Some of them I spent weeks on. One I even bought a domain for.

Hundreds of hours wasted. Why did they all die before seeing the light of day? It was not a lack of time. It was not a lack of motivation.

Here is the controversial truth:

Most developers do not fail because of a lack of skill. They fail because they secretly enjoy the dopamine rush of starting a new project more than the grind of finishing it.

Here is the exact pattern that killed my 27 projects, and the rule that finally helped me break the cycle.

1. The "Perfect Stack" Trap

As developers, we love shiny new tools. When starting a project, the first instinct is to try that new database everyone is talking about on Twitter, or the latest beta version of a framework.

I once spent an entire weekend configuring a Next.js app with tRPC, Prisma, and a custom Tailwind design system. By Sunday night, my infrastructure was absolute perfection. But I had zero business logic written. The next day, I lost interest completely.

If you want to actually finish a project, you have to use boring technology. Pick the stack you know best, even if it feels outdated.

2. Optimizing for Phantom Users

For the dog Twitter clone, I spent three days setting up a complex Redis caching layer. I was terrified the server would crash if a million dogs signed up on day one.

We love to over-engineer. We worry about how our database will handle massive traffic, so we design complex microservices. But here is the brutal reality:

Your biggest threat is not the server crashing. Your biggest threat is that nobody will ever visit your site.

Stop building for problems you do not have yet. A simple database query is fine. You can always optimize later when the app actually gets traction.

3. Feature Creep is a Disease

It starts innocently. You are building a simple to-do list, and you think, "It would be cool if users could upload a custom profile picture." Suddenly, you are reading AWS S3 documentation for five hours instead of finishing the core task logic.

Features are fun to dream about, but they are heavy to build. Every extra button you add delays the launch. The best way to finish a project is to ruthlessly cut features until you have the absolute minimum viable product. If it does not solve the core problem, it gets deleted.

4. The Fear of Shipping

Writing code is safe. Your VS Code editor does not judge you. But launching a project means real people might see it, find bugs, or worse—ignore it completely.

A lot of side projects are abandoned right at the 90 percent mark because the developer is secretly afraid of hitting the deploy button. We hide behind the excuse of "it just needs a little more polish."

A buggy, ugly app that is live on the internet is infinitely more valuable than a perfect app sitting on localhost.

The 48-Hour Rule

To break this curse, I made a strict new rule for myself: I have to launch a working, ugly prototype within 48 hours.

If it takes longer than a single weekend to get the core feature live, the scope is too big. This simple mindset shift is one of the biggest reasons I finally started shipping real apps instead of building graveyards.

Over to you

I know I am not the only one with a GitHub graveyard of dead ideas.

Be honest: What is the weirdest abandoned side project you have ever started, and what was the real reason you stopped working on it?

Let me know in the comments. What is in your graveyard?

Top comments (6)

Collapse
 
ritu2026 profile image
Israt Ritu

This hits way too close to home. I think most of us have a "Graveyard" folder we try to ignore.

That "Perfect Stack" trap is the ultimate procrastinator's move. It's so easy to feel productive while tweaking config files for six hours, but you're really just avoiding the actual logic.

The 48-hour rule is a massive reality check. Shipping an ugly, working app is infinitely better than a "perfect" one that stays on localhost forever. I once wasted weeks over-engineering a backend for an app only I was going to use, then quit before I even built the UI.

Solid advice, Tahosin. Definitely the kick I needed to just ship my current project.

Collapse
 
tahosin profile image
S M Tahosin

Haha, building a massive backend for an app with literally 1 user (yourself) is a classic right of passage! We have all been there. 😂

"Productive procrastination" is so dangerous because tweaking config files actually feels like real work until you realize you built a mansion with no doors.

So glad the 48-hour rule resonated with you! What is the current project you are trying to ship right now? Drop a link here as soon as you hit deploy even if it's completely ugly!

Collapse
 
noise2026 profile image
Berming Hamng

This hit hard. Every developer has a GitHub graveyard, but few talk honestly about why projects die. The real win is not having zero failed projects, it’s learning faster with every unfinished one. Great read 👏

Collapse
 
tahosin profile image
S M Tahosin

"Learning faster with every unfinished one" — that is such a brilliant way to look at it! I completely agree. Each dead project in the graveyard is basically a stepping stone that taught us a new framework or a hard architectural lesson.

Thank you so much for reading and for the kind words! Out of curiosity, what is the most valuable lesson one of your own unfinished projects taught you?

Collapse
 
noise2026 profile image
Berming Hamng

One of mine taught me that premature optimization can kill momentum. I kept rebuilding the backend instead of shipping features. The project died, but the lesson stuck 😂

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

For me, I just have projects that I am certainly proud of, but I just don't share it since there are projects I made that are better than the previous one. It's normal for me since I know I am growing in some way.

When you mention "Most developers do not fail because of a lack of skill. They fail because they secretly enjoy the dopamine rush of starting a new project more than the grind of finishing it.". This is really common and it is something that needs to be address more. A lot of people start off projects since they see new things like you mention and than fail because of the project being too ambitious or that it has a learning curve.

Great work and thanks for sharing :D