When you are bootstrapping your way towards developing your dream software product, you have to be extra careful with your first few customers. You have to make sure they get all the benefits you had to offer. And you have to make sure that your upcoming product meets their custom requirements. After all, they are paying you for it, and are helping in the actualization of the vision, right?

Ummm… Not so simple really.

Actually there are two opposite ways you can go about handling these initial projects. Either you could be doing complete custom development for the client, and thus frittering away precious time for a few extra bucks, with no value addition to your shrink-wrap software dreams. Or else you could be pushing your shrink-wrapped standard software features and doing only very minor implementation adjustments (if at all) to make sure that the project has some features that you can reuse in the shrink-wrapped product.

While you may want to stick to the latter approach, the client puts continuous and credible pressure for the former.

In such circumstances, the typical middle path that people fall into is Consultingware, where you pretend to be doing shrinkwrap while really doing custom development. Now, That’s a death trap you have to watch out for.

Here is an excellent article by Joel Spolsky on how to set your priorities and avoid this oh-so-common pitfall.

Its far too easy to get caught in developing and maintaining custom requirements that fit only that particular client, and are often counter-productive towards the bigger vision.