With any software product there is a massive wishlist of features to implement and things to develop. It is a never ending process of thinking of ideas, evaluating them, and perhaps adding them into your software.
Nowhere is this more apparent, and more of a problem than in the first release.
I have been experiencing this lately.
You get near the end of the list of things needed to do, and somehow new things always get added and they seem crucial for the product. The release date slips and you go even longer without customers and revenue.
One of the great development philosophies in software development is “Release early. Release often. And listen to your customers.” It was popularized by Eric S. Raymond and was originally applied to Linux kernel development. It has since become more and more popular in many more projects including essentially everything that is developed at Google.
One of the most influential business books I have read recently Ready, Fire, Aim: Zero to 100 Million in No Time Flat(aff) shares an idea that meshes very well with the release early, release often development process.
From a business perspective the most important thing a new business has to do is get customers. In the processes of finding your first customers you learn the most valuable thing you need to succeed. Which is how to sell your product. The sales process can take years to really figure out – everything from identifying who the customers are, what language they use, where you can find them, and what their pain points typically are. It’s fair to say that many of your assumptions will be wrong in this area.
Under the assumption that you don’t really know what your customers want – releasing early is even more critical. Getting something out into the marketplace which can later be improved with feedback received in the sales process or from your first customers can give you a first mover advantage and reduce the missteps taken on developing features you thought would be important, but which are rarely used.
So as an entrepreneur and software developer how can you balance these concerns and draw a line to determine what are the minimum set of core features required for an initial release?
Here are some of my tips:
- Identifiy the core problem that you are trying to solve, make it something concrete and simple
- For every feature idea ask yourself “Can I say I have solution to the core problem without this feature”
- For everything that’s not truly required, defer it to a later phase of the project
- Keep in mind that it’s much easier to add new features than to modify poorly implemented ones (this is why many first movers in a market lose out to copycats)
- Start the sales process and marketing push before the product is actually ready
Following this framework should whittle the list of features down to something manageable and keep the pressure on to get it out.