A quick piece of advice for new developers: learn to make the mental and emotional sacrifices necessary to get a good 1.0 online. 1.1 is not a failure.
Yesterday, I gave quick talk at Starter League about what new-to-the-game developers can expect once they leave the friendly confines of their program. The talk itself was a sort of list of things I'd like everyone coming into this world to know. These points were generalities, but not a single one insincere.
The point that I think resonated the most was that without sacrifice, there is no launch. You must learn when to let go, and let go live. I'm really not one for mantras, but this was a lesson hard learned in my professional experience, and I'm a far better developer for having learned it.
The tenant of this idea is that, as developers, we're the gatekeepers of the project(s). That means it's in some way (or completely) in our hands and minds to say whether or not something is ready to go. We're also a breed prone to indulging ourselves in unnecessary work with an ill-defined pay-off, such as delaying launch to add just one more feature or swapping out parts for something edgier, newer.
In reality, we're conning ourselves into thinking that the (latest and greatest) lightbulb that just turned on is the light at the end of the tunnel.
Learning how to make sacrifices is key to any developer's growth because learning to make sacrifices is learning how to manage. Without this, there is no launch and there is no iterate; there is only regret. Or, you're the person always talking about their ideas with nothing to show for them.
So, please, while you're planning your app or while you're in the thick of it, devote time to thinking critically about what you do not need. Don't cut everything and launch a weak product—no one will take your anemic functionality and default Bootstrap skin seriously. Just think “is this feature and time-debt I'll take on reasonable or essential to take this live?” That question is as valid for 0.1 as it is for 1.0, 2.0, and so on.
Learn to focus on the work that means the most. Embrace quality, but also embrace the sanity that iteration allows.