"if you are not embarrassed by the first version of your product, you've launched too late"
I'm sure there are many others, but these ones keep me shipping.
Well, other than never shipping at all, which is, of course, the point ;)
If you're shipping respirators, cryovalves, automated replenishment systems...
The trick is in threading the needle on this one. In my experience "shipping" doesn't need to be a binary operation. Seek out your early adopters as soon as possible, get your product in front of them, and take their (hopefully) constructively blunt feedback to heart. Ask them what's needed to make it truly usable for the rest of your users.
A first release must not be buggy. But it can have a limited set of functionality.
Imho, the real art of software development is to restrict the initial set of functionality and get that done, as quickly as possible (but not quicker), bug free (sic) and useful.
Yes, I shipped. Yes, it was shit. Yes, it got MUCH better after it got real-world use.
I think there's a lot of truth in this. I've been working on a video game on and off for the last year and a half. For most of the development time, I would agonize over every little detail and take weeks to implement even minor features, because I'm an Artist (TM) and genius takes time damn it. Finally, two weeks ago I said "fuck it, I'm just going to focus on getting things working as fast as possible and I'll make them good later." And I've never created content or implemented features as fast as I have in these past two weeks; I actually have a working demo, instead of just notes and an empty engine. None of it is what I consider "good" right now, but I know that it'll be good eventually.