I’ve been programming for a bit over a year now and I’m far from giving substantial advice on how to write good code. What I actually do know a bit about is the right mindset for shipping products.
Perfectionism
Embrace the truth that wanting to ship something perfect is the same as not shipping anything. You’ll never(!) get to a point where everything is to your absolute liking. It’s impossible. It has nothing to do with how skilled you are either. You can be the very best designer and programmer ever, entropy doesn’t allow perfection. On the contrary: Entropy is perfection. Embrace the fact that “good enough” is a moving goalpost. It means that you don’t have to try to be perfect. How soothing is that!?
Imposter syndrome
You’ll never be as good as you think you should be. I feel like human existence is a binary state. Either you’re overconfident or suffer from imposter syndrome. Both are problematic but the latter is easier to manage, in my opinion. Acknowledge the fact that your being capable of shipping something in theory is good enough to do it in practice. Worst case: Nobody will care about your project. The good news: That’s already what’s happening. There’s no chance anyone will ever truly care about your unreleased project and pre-release hype is not real.
Maximalism
Ideas are cheap. You don’t want to be one of those people that are stuck in “Wouldn’t it be cool if…” land and never get around to actually confronting their ideas with reality. Or reality with their ideas. The common pitfall is to think that you only have to cram enough ideas (read: features) into your product for it to be the very best out there. The opposite is the case: You need to get rid of all the features that don’t reflect the essence of what you’re trying to do. There’s a reason why basically everything ever written by people who ship reiterates this point over and over: it’s true. Confronting your ideas with reality can’t happen fast enough.
The right goals
This might be the most important point: The product isn’t the destination. Shipping is. If you think that your current idea is the be-all and end-all, you’ll most likely make the aforementioned mistakes over and over again. Good ideas, loosely held. Shipping must be the motivation because only shipping creates the positive mental feedback-loop that is required to keep shipping. If you’re somebody who shipped something once, you can do it a second time and the third time is even easier. That’s the process. You build, you ship, you keep building. A project fails? You don’t care because you’re in it for the process of shipping and iterating.
The status quo is the worst case. Ship yourself out of the status quo, everything else will follow automatically.