As any self-respecting programmer, I have published dozens of side-projects over the span of my career. I have started but not reached any level of completion on a hundred more.
It usually starts like this. I get excited about an idea. I estimate that it can be done in a relatively short timeframe - a weekend or a couple of weeks. And indeed, my estimate is not entirely incorrect - after working frantically for about that much time, the project is more or less ready.
But is it ready? Does it fit the definition-of-done? The interesting and exciting parts are done. The proof of concept works. But what is missing? Nothing really interesting. Just the boring stuff. The design or visual presentation is lacking - but that's not important, right? Functionality matters, and it's all there.
A landing page and some copy to introduce the project to a new user would be nice, but I'm not a good writer so why bother writing more than just a few bullet points? I hate doing that. I'm afraid to be judged, so I'll skip that.
The final missing piece is the marketing - hardly any other beast is as dreaded for an introverted creative as having to go around the world and shout about one's accomplishments. What if the world answers with criticism? What if you learn that this has already been done? The world might also answer with silence, and like many before, your work will be lost in the depth of the internet.
These missing parts constitute not much, maybe 20% of the project's time. But these last 20% are so much more emotionally demanding than the 80% spent coding, so your average developer (or any other creative) might leave their project at that. And it makes total sense - there already is that new shiny thing that one could eagerly work on emerging on the horizon.
What are you waiting for? Embrace the new, forget the old. Remain unknown, and perpetuate the cycle.