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 (99)
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
That is such a healthy mindset! Looking back at your older projects and realizing you have outgrown them is the ultimate proof that you are improving.
You also completely nailed it with the "too ambitious" point. When we combine a massive project scope with a brand-new framework that has a steep learning curve, it is almost a guaranteed recipe for burnout. The initial dopamine wears off right when the real friction begins!
Thank you so much for reading and adding your perspective! What is the "boring" tech stack you usually stick to when you actually want to finish a project?
Back then, I stuck with Vanilla HTML, CSS, JS since I was a beginner. Now focusing on Next.js and that would be my niche. Don't really have a "boring" stack since I didn't really expand further yet, but I shall see in the upcoming future!
I have a similar problem with my writing projects 🫣 The fear of shipping, or rather publishing in my case, feels way too real. And it's much more exciting to start a new story than to develop and bring to publishing the more mature one. However, about:
... I know that this way of thinking keeps sneaking in. But maybe instead of thinking that these hours are wasted, it's better to think you learnt something during this time?
That’s a really good perspective, and honestly something I’m still trying to internalize. As developers , we’re often way harsher on our unfinished work than we should be.
You’re right that not all of those hours were truly wasted. I learned new tools, made bad architectural decisions I’d never repeat, and understood my own patterns better. I think the “wasted” feeling comes more from knowing some of those projects died from avoidance rather than genuine exploration.
And the publishing fear you mentioned feels incredibly relatable. Starting something new gives instant excitement, while finishing means facing judgment. Different medium, same psychology 😅
You can still resurrect some of the projects that you gave up on as a form of avoidance, can't you?
That’s a fair question 😄 I probably could resurrect some of them, and a few still have genuinely good ideas behind them.
The bigger challenge is figuring out whether I want to revive them because they’re still worth building, or just because I feel guilty for abandoning them 😅
Have you ever gone back to an old writing project and found it was actually better than you remembered?
Yes, some time ago I went back to two projects that were the most promising and also the most developed. Both are materials for quite a good story, but I abandoned them because of a lack of self-confidence. I keep telling myself that I will come back to them once I'm a much better writer, but I see the flaws of this logic 🙈
Anyway, compared to my old writing, I see that I have developed a lot! I've once heard a very wise sentence, saying that you shouldn't compare yourself to others, just to your old self. And I agree 💯
That logic is so relatable 😅 “I’ll come back when I’m better” sounds wise at first, but sometimes it’s just self-doubt wearing a very rational disguise.
And I really love that comparison mindset. Measuring yourself against your old self feels much healthier than chasing someone else’s chapter 20 while you’re on chapter 3.
Honestly, the fact that you can revisit those stories and clearly see your growth probably means you’re already far more ready than you think 🙈
I look back. I look at my first project, a project that was released back in November 2025, but which I abandoned long ago, even though it was my best work. In terms of functionality. Not in terms of code. I opened the app and enjoyed how it worked, enjoyed the bugs... But I opened the code, and I felt a strong revulsion. And ultimately, assessing what I've learned, I can say that I spent too much time learning to write normal code. Did I waste four months? No, those evenings were probably the best of my life, because it was a process in which you learn something new every minute. Or maybe it's nostalgia, and it's all nonsense, ugh.. 🥺
This is such a relatable feeling 😄 Opening an old project and loving the product but wanting to immediately close the code is basically a developer rite of passage.
Honestly, the fact that your old code makes you cringe probably means you did learn a lot. If it still looked perfect to you, that would be more worrying 😅
And those four months do not sound wasted at all. Building something, learning constantly, and actually enjoying the process has real value, even if the code was chaos.
Now I’m curious, what did that app actually do?
If you're interested in what this project is, click. I also wrote about it (although this is a rather old article).
Already read your article (even commented!), but thanks for sharing! 👍🏻 It was a good read!
Ahh, this makes the story even better 😄 Going from a prototype SDF editor to pushing a beta is exactly the kind of “messy but meaningful” journey we were talking about.
Also, loving the fact that you can look back at that project with both pride and horror. That feels like the most honest developer experience possible 😂
One question though: if you started that same project today from scratch, what’s the one thing you’d do completely differently?
I started this project twice. But then, I burned out. And I quit. Remaking my project from scratch for a couple of months feels like pointless work.
That’s completely understandable 😅 rebuilding the same thing multiple times can start feeling less like progress and more like punishment.
At some point, protecting your energy matters more than forcing yourself through another restart. Burnout has killed more good projects than bad ideas ever did.
counted mine last year - it was 40. what fixed it wasn’t discipline, it was making each project shippable in under a week. long cycles kill more motivation than the dopamine high does.
40 😅 okay, I suddenly feel less alone 😂
And that’s a really interesting point. Framing it as a cycle-length problem instead of a discipline problem makes a lot of sense. A one-week shipping target forces you to stay focused on what actually matters.
Out of curiosity, did that change mostly improve your completion rate, or did it also make the projects themselves better?
honestly yes - completion rate shot up just because the scope ceiling forces you to cut everything optional early. first few weeks felt weird, now that's just how I work
That actually makes a lot of sense. Cutting optional complexity early is probably where many of us fail 😅 What feels restrictive at first ends up becoming a really healthy default.
yeah and the interesting flip is you stop fighting the scope ceiling pretty quickly once you realize it's doing the prioritization for you. the one-week clock is basically a forcing function for the conversation you'd otherwise delay forever
That’s such a sharp way to frame it. “A forcing function for the conversation you’d otherwise delay forever” is painfully accurate 😅
A lot of us probably don’t have a project execution problem, we have a decision avoidance problem disguised as perfectionism 😂
tbh the perfectionism one is harder to admit. it's easier to say "we need more definition" than "i'm avoiding making a call." agents surface that fast.
That’s a brutally honest point 😅 “Need more definition” really is often just a nicer way of saying “I don’t want to commit yet” 😂
right - agents make the avoidance visible in an uncomfortable way. tool starts working while you're still debating scope. hard to hide behind 'we need more clarity' when there's output on the table.
Exactly 😂 once there’s something tangible on the table, indecision loses a lot of its hiding spots. That’s a really interesting side effect of agents I hadn’t fully thought about.
tbh the uncomfortable part is it doesn't just expose your own avoidance - it surfaces the team's. nothing like a half-built agent output to reveal that 4 people had different mental models of what done looked like.
I know that feeling! 27 projects in 3 years isn't much. I've already got 10 in 4 months. You've described why this happens so accurately, and it's disappointing that half the projects end up in the recycle bin, not because they're bad, but because they're boring. Great article.
10 in 4 months 😄 you might beat my record soon.
And that point about projects becoming boring rather than being bad is painfully true. I think that’s where real discipline starts, when the novelty disappears but the work still matters.
Out of those 10, did any of them feel worth revisiting later?
I'm afraid all these projects are doomed to two fates: forgotten corners of Github and Recycle bin. 🤒
😂 That is the classic developer graveyard fate.
But honestly, I like to think some of them are less “dead” and more “hibernating until future me suddenly gets a weird burst of motivation at 2 AM” 😄
Be honest, if you had to save just one of those 10, which one gets rescued?
i have project to create a waste trade for money, i started for my school project as we have a waste bank that collect some type of waste and then sell it to a collector. it to encourage student to be aware of their environment, but since i left the school the project been stuck... no drive anymore
That’s actually a genuinely meaningful project. Turning waste into something valuable while building environmental awareness is a great idea.
I think a lot of projects don’t die because the idea was weak, but because the context that gave them momentum changed. Leaving the school probably took away the ecosystem that made it work.
Do you think this is something that could be restarted in a different form outside the school?
actually in my city there are communities that do the same, but mostly not documented well enough and mainly use spreadsheet as accounting tools. some even just use physical bank book. many of them are illiterate enough to use system because it start in country side and slum. also another point is people who are proactive to do this mostly are mid to elderly.
but the potential for community project is high
That makes this even more interesting. The challenge clearly isn’t the lack of a real problem, it’s designing something that fits the people actually using it.
A lot of projects fail because we build for the ideal user instead of the real environment. Community-driven systems like this need simplicity more than sophistication.
The potential here sounds genuinely huge.
There is one. The project was an inspiration from WesBos's JavaScript30 course. It was titled Pixel Dust (from Pixie Dust). My core idea was to build a web app that allows users to mix magic stats and after pressing save, the wand will shoot a Harry Potter-like magic blast which varies depending on the settings the user configured.
When I was making it, I realized it was too tall for a task, (I was also new to React back then). I wanted it to have multiple combinations of spells and even secret spells. Sadly, the project still rests today in a public repo. This taught me a lesson. Never start what you can't finish.
So far, that's the only project I have that I didn't finish. Hopefully it will not be followed by another. (still hoping to revive my first dead project tho)
Pixel Dust is such a fun project name 😄 And honestly, this feels like the exact trap many of us fall into: a simple idea that slowly evolves into “what if it also did this?” until the scope quietly explodes 😂
I’m not sure the lesson is “never start what you can’t finish” though. Sometimes we only discover what’s too big by starting. That’s still valuable.
Also, having only one unfinished project after this entire discussion is honestly impressive 😄
The struggle is real. We bite off huge chunks to test our limits, and while the skill level goes up, the 'unfinished' folder grows even faster. Sometimes the learning is the real project, even if the repo stays dead.
Learning is cool, but finishing is a different kind of muscle.
“Finishing is a different kind of muscle” — that’s such a strong way to put it.
I think a lot of us accidentally train the learning muscle constantly while neglecting the shipping muscle 😅 Both matter, but they build very different habits.
Have you found anything that helped you get better at the finishing side, not just the learning side?
I am still figuring it out honestly, but treating the repo as a warehouse rather than a graveyard is a start — changes how you see what's worth returning to.
That “warehouse rather than a graveyard” mindset is honestly brilliant. It turns unfinished projects from symbols of failure into stored experience, ideas, and building blocks. I really like that perspective.
This article got me 😂
Not surprisingly, I also have a lot of abandoned side projects and all of them have never been released at all. I sometimes look around them thinking 'I should've finished at least one of them..'.
For me, the biggest obstacle to finish side projects is that I think too much before even I start the projects. I keep asking my self questions like 'Is this idea really profitable?', 'Would people really need this?', etc. I think sometimes I should just give it a shot without overthinking.
Thank you for the insight!
This is very relatable 😄 Sometimes we kill projects before they even get the chance to fail because we try to validate every possible outcome upfront.
That “is this profitable / do people need this?” loop sounds smart, but it can quietly become a form of procrastination 😅 Sometimes shipping a small imperfect version teaches more than weeks of thinking.
Glad the article resonated with you. Out of curiosity, have you ever had a project that you almost overthought to death, but looking back, you wish you had just shipped anyway?
Yes. And I still sometimes regret it🥲
About few years ago I was building a small web app that was about a game I used to play. The app was about showing users' character's rare items acquirement history.
It was really simple to build so I could've finished it, yet I abandoned it because I thought about too many things at once. Honestly, I just assumed that the users would not be attracted to my app.
But I soon realized that I was completely wrong because another user made almost the same app and it got a lot of other users' attentions😂
Oof 😅 that is painfully the perfect example of overthinking stealing a perfectly viable project 😂
The worst part is not that the idea failed, it’s realizing the assumption was wrong and someone else proved it by simply shipping. I think a lot of us have at least one story like that 🥲
So true! Let's move faster and think simpler for our projects😁 Thank you for sharing your insights!
It seems you mix or confuse startup launches with github repos. Having 27 or 270 abandoned projects in github is not a failure. It's experience, grit, and audit trail. If you consider success a project that turns into a marketable and profitable product, you are talking about a startup, not a github repo.
I have infinite abandoned projects as you say, but they build up to my latest contributions in top tier quantum repos from Google, IBM, Pennylane, all the way to unique AI frameworks used by people in OpenAI and Google.
Coming here, wouldn't be possible, but launching a repo in 48h with non github history. That's a lovable user's github that is an insta block for recruiters or investors.
Do not take your work and effort lightly. You did all that just to come here where you are today, and your steps tomorrow will be stepping on that graveyard as you name it.
That’s a really thoughtful perspective, and I actually agree with a lot of it.
I definitely didn’t mean abandoned repos as “worthless failures.” A lot of them taught me exactly what I know now. The post was more about the behavioral patterns behind why projects stall, especially when the goal was to actually ship something usable, not just explore.
I really like your “audit trail” framing though. That’s a much healthier way to look at the graveyard.
Good luck on your next projects <3
I try to build a microservice for the future users in my dreams instead of getting started with a monolith, I just feel I'm drawn to the concept, building a Ferrari rather than getting started with a simple bicycle
This is painfully relatable 😄 Building for imaginary scale is such a seductive trap because it feels ambitious and smart.
The Ferrari vs bicycle analogy is perfect. A lot of us try to optimize for future users who may never exist instead of solving one real problem first.
It’s definitely developer syndrome at this point. 😭 Do you happen to have a cure for this, or do I just keep writing Docker files for an app with zero user
😂 My current “cure” is forcing myself to earn the Docker file by first building something that one real user (even just me) can actually use.
Infrastructure after usefulness, not before. Easier said than done, of course 😅
Easier said than done... 🤣🤣🤣🤣 But I really appreciate team managers at this point, they’re really helping devs get out of their own heads and put something out there.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.