For many business people that go ‘the long way to success’ with a software development background (see http://jacquesmattheij.com/three+roads+to+the+top+of+the+mountain)) there is a natural progression of advancement:
being employed
consulting
product development
developing a service
I’m not saying it’s a law and that you have to follow all these steps, but I’ve seen enough people make it that way and also enough people that got stuck to identify a fairly common pattern.
The first two steps are relatively easy, and anybody with some healthy ambition and skills can easily check those off. The problems start at the third step, product development. For some reason very smart and very capable people get hung up on it.
Typically they’ll identify some market, hunker down building their product and then they’ll try to sell it. There is a huge mistake in doing it that way. What will happen is that you will only get to test your premises at a very late stage of the development. The trick here is to keep the disconnect between yourself, your product and your future customers as small as possible at every stage of the process of development. This is to make sure that when you’re ready for your first delivery that your customers will not have to cross a huge gap between what you built and what they need or expect.
The best way that I’ve found to avoid that costly mistake is to bring on board a potential customer in a very early stage. This works best in the business-to-business world. Your customer gets a head start over their competitors (you could bring in more than one, you definitely have to be up-front about your intentions to sell the product when finished to everybody that wants it). And you get access to:
domain specific knowledge
testers
people that can help put together the specification
validation of your market long before you invest a whole lot of time in the project
possibly: funds for the development (see below)
a much more mature product by the time you hit the next customer(s)
a reference
Those are huge advantages to have compared to the ‘build it in isolation, then fail on launch’ method that lots of people fall for. (ok, that’s crude but I really think that method is asking for trouble).
Better yet, a company that is willing to invest a good bit of time in to your project might be willing to put up some money to help you succeed, either by paying up front for a portion of the development cost or possibly even as an investor (be careful with conflicts of interest in that situation).
Having buy-in from one or more first customers also gives you a lot of goodwill if you should decide to go shopping for capital through different routes to accelerate your pace of development, so it can help with the transition from bootstrapping to getting funding if you want to do so.
In one instance of applying this method a company I worked with paid for the full development cost of the product in return for a 6 month head start on the competition. And better yet, later that same product was used as the foundation for a (fairly successful) software-as-a-service product.
Personally I think that the biggest single advantage this method offers is that you won’t end up building something for which there are very few or no customers. That’s an all too easy trap to fall in to.
Think of that first customer as your non-equity co-founder that brings along just about everything that you lack in expertise, it doesn’t come more complementary than that. Mistakes that you make in envisioning the product can be fixed when they are still easy to fix and the gap in expectation from at least one member of your target market between the product vision and reality will be minimized.