As part of the lean startup movement and customer driven development, the concept of a minimum viable product is one of my favorite components. I’m a big proponent of launching fast: less than 90 days from starting, a web services company should go live with their product.
Now, 90 days isn’t much time, and it isn’t alway possible to launch that fast, but having a constraint in place where the engineering effort is time boxed really forces you to strip off functionality and deliver a minimum viable product. All too often I see engineers so wrapped up in their product that they keep thinking they need to add one more feature, when in reality they don’t have enough market feedback, haven’t achieved product/market fit, and are building a product without a market. I’ve been there.
My recommendation is to get the product out the door as quickly as possible, with the bare minimum functionality that still makes it useful. With that in place, work hard to acquire customers, preferably paying, and then learn what their needs are, and incorporate that into your opinionated software.