One of my recent professional failures was a project I got assigned to. It was one year in the making without ever seeing the production light. When I saw the situation and the amount of assumptions that were made, I made my first priority to release and test it with users. Unfortunately this desire to wrap things up and release got resisted by the stakeholders, believing that all those missing features were necessary. One ops guy even said to me “it is just a few case statements”, not understanding the complexity of software and how the smallest changes can lead to big delays.
Shopify recently released a new version of their iPad POS software that was missing being able to connect to the credit card reader. When my business partner told me about it I said they told me about the new app last year, at some point you have to stop building and prepare for the release even if it is not fully ready. To their credit they made the upgrade optional and so you could stay on the old version until you feel confident to switch.
There is a tendency in many parts of the industry to not emphasize shipping the software but rather making sure that everything is figured out from the beginning. The truth of the matter is no one cares about your software. And the second truth is you will never figure it out. So ship the goddamn thing and get real user feedback instead of just hoarding features. Because hoarding is the illness that kills many bright ideas.