Way back when, I used to think that a startup was primarily a software-first kind of deal. That is, you would make the application, pitch it to users, and then gain users that way. Lately I've been reconsidering that deal.
One of my inspirations has been Indie Hackers; I absolutely love the site, the people who post there, and the companies that have sprung up and interviewed around it. A key takeaway is to never code more than absolutely necessary, or to code at all, before selling the product. This is especially true if your product is not something that is software-based, and if the software aspect is just aimed as the differentiator.
Yes, I think I've heard that before, but lately it's been striking home. I think I remember Reid Hoffman said something similar at LinkedIn, where if you're not ashamed of your product when you release it, you waited too long. I just realized that the products that I build at work are kind of in the same boat. We use a bunch of Google Docs spreadsheets in order to keep track of parts at different stages of the manufacturing pipeline, and part of our job is to help port that functionality into our application so that the data can be better tracked and organized. So maybe startup growth from that approach would happen more organically.