The only choice is to launch before you’re ready.
Before it’s perfect.
Before it’s 100% proven to be no risk to you.
At that moment, your resistance says, “don’t ship it, it’s crappy stuff. We don’t ship crap.”
And it’s true that you shouldn’t ship work that’s hurried, sloppy or ungenerous.
But what’s actually on offer is something scrappy.
Scrappy means that while it’s unpolished, it’s better than good enough.
Scrappy doesn’t care about cosmetics as much as it cares about impact.
Scrappy is flexible and resilient and ready to learn.
Ship scrappy.

Seth's Blog

I just wanted to post this interesting reflexion, as I tend to make sure everything is 100% perfect before “shipping it”. In some scenarios, this can be good, since you don't want what you are releasing to have any bugs or errors, but sometimes it is better to publish something yet to be perfected (for instance, my personal website).

The publication of my personal website/blog had been postponed for a long time, waiting for my own approval on every detail. Finally, this summer I read a couple of articles about just starting a blog, without much preparation, and then just “seeing how it goes”, so I did it (at this point, a big part of the site was already developed). Not only did I start writing posts and doing other things I would have probably delayed until other unrelated parts were finished (like having a dark theme or deciding on the favicon), but I also realized some of the features that I wanted to implement were not that important.

If you are waiting to release something, reluctant to publish it because it might have a bug, maybe you should try to do it—you can always tag it as a work in progress.