Pointer Corporation
     The Information Technology Architects
Commercial Software Development (CSD)

In this article, I'll walk you through a discovery path that shows you the anatomy of Commercial Software Development and helps you identify whether you're a good candidate to get involved. Finally, I'll present an outline of various steps you'll need to follow.

In Lieu of a Formal Introduction ...

Are YOU the right person to get involved?

Chances are, that you wanted to see the opening paragraph on something like "Have you got the right target product?"

Wrong! I think in commercial software development, who YOU are is more important than your intended product. So, next time you look yourself in the mirror, see if you find ...

  • A professional software developer;

  • A custom programmer who knows all the tricks inside and out;

  • An expert is a particular "target industry" with a good feeling about its future;

  • A brave person who wants to face a new challenge and take a new kind of risk;

  • A business-minded individual who has adopted an expanding marketing strategy;

  • An avant-garde who sees an opportunity that may never knock again;

  • A cash-rich person who can go with no additional income for a year or two;

  • A venture capitalist who can acquire the necessary financing.

If you meet all of the above requirements, you may have a chance! Do you want to know why?

Here's my Golden Rule #1:

Getting involved in development of commercial software isn't just a programming decision; it's really a business decision that also involves programming skills.

What are the critical phases you'll be going through?

There are a couple of strategic phases up front: selecting the industry and laying out a development plan. Afterwards, you've got some tactical phases to deal with: development and testingsales and marketing and product support.

Industry Selection

In this phase, you'll identify whether the target industry of your commercial product is the right one. Thus, if you've been approached by a particular industry to develop a product for, the outcome is a "Yes/No" answer. If, on the other hand, you don't have a particular industry to evaluate, you'll go through an elimination process that helps you zeros in on a target industry. Furthermore, you'll explore your target industry, looking for a pilot client that will effectively be your partner through the upcoming development phase.

But before you rush to the bank to mortgage your house and finance your development project, let me share with you my Golden Rule #2:

Saying "NO" and doing nothing at all is an acceptable -- and often the most viable -- outcome of the industry selection process.

Having said that, let's look at the qualifications of your target industry:

  • You have personal experience in that industry and know its various business activities.

  • The existing software products in that industry haven't saturated the market.

Of course, you could have guessed these points yourself; they were no rocket scientist stuff. So let me also tell you something that might not be so obvious, hereby given the honorable name of Golden Rule #3:

In selection of your target industry, timing is everything. Don't just rely on your "biased" background. Instead, be very objective and look closely at how well that industry is doing, compared to other industries, and within the current economic cycle.

Once you're comfortable with your selection of the target industry, it's time to find "a partner." By that I don't mean a programming partner, but rather "an insider;" a firm within the target industry that's ready, willing, and able to be your first client, even before you start the development. We'll call this most valuable resource of the development phase, the Pilot Client.

I can't emphasize enough how important it is to select your pilot client wisely. Even within the right industry, a wrong selection will lead you to frustration and disappointment, and you'd be lucky if it ends without litigation.

In fact, selection of your pilot client is so important that I suggest you do it with a fine-tooth comb. Don't take anything for granted and validate every assumption before moving on to the next question.

Your pilot client must be ...

  • The right size company within the target industry;

  • Conveniently located for your frequent on-site visits;

  • In need of a full-blown custom system, without the budget.


Perhaps each of these points deserves some explanation: If the pilot client is too small, it won't truly represent it's industry; if it's too big, you'll get lost within it's bureaucracy. The location factor is important as you need to be closely in touch with the daily operation of your pilot client. The last point is the most important of all, and I'd like to re-phrase it as my Golden Rule #4: The right pilot client must be willing to compromise. Their management must have the mentality to understand that they'll be paying you less than what they would have to pay for a full-blown custom software. In return, they'll have to go through a longer development time and live with more generic results. In qualifying the pilot client, optimism is death! You must constantly play the devil's advocate and try to disqualify them. It's like getting a geological report on a piece of land before laying the foundation to build a new house. You don't want to start the construction unless you're assured of the solid grounds underneath. When you're preparing your contractual agreement with the pilot client, it's also wise to put as much as possible in writing. In addition to the usual terms like deliverables, fees, payment schedules, ownership and rights, your agreement must assure that they fully understand and agree with your intention for future marketing of this product to the entire industry. It must also spell out their responsibilities, which would include granting you access to their operational procedures, providing you with sample data, and timely reporting of the problems, to name a few. You can close the chapter on selection of the pilot client only after you've taken one last step: selection of a client representative, or a liaison, who's both knowledgeable and political-minded. This person will be both the shock-absorber of any conflicts and the eventual hero of the project, once you receive the final payment. Development Plan Your development plan is going to be based on one of the following three traditional strategies:

  • Developing everything from ground up;

  • Get another commercial product that has the basic pieces of what you're looking for, then add extensions to make it complete;

  • Start from an existing custom software which has (almost) all the pieces you need, then generalize it for the whole industry.

Again, there are a number of issues to watch for, in each of these choices. Notice, however, that in evaluating them, you're going to be wearing both your business and technical hats at all times.

Now a few thoughts on each of these approaches:

When you develop everything from scratch, you're dealing with an ideal approach that may work out just fine for you, or it may turn out to be too expensive and take too long. On the other hand, you don't have to worry about left-over bugs or obsolete coding techniques in an existing system. You won't be paying any royalties to a base product either.

Extending an existing system which has the basics will probably get you there the fastest. You'll compromise the existing techniques and can't (legally!) dodge the royalties. However, you'll benefit from the marketing arm of the base product by listing yourself as an add-on developer in their product directory.

From a technical design viewpoint, it's preferable if the interface between your add-on extensions and the base product is object oriented, so that you don't have to mess with the source code of the base product as much. Realistically, however, this is not going to happen very often and you'd have no choice but to open up the source code of the base product and make surgical changes in every corner.

As for generalizing an existing custom package, if you've already got one, examine the possibility of using it, as long as you don't feel obligated to do so.

And no matter which approach you take, remember that you should never lose your focus on the most important design consideration, hereby presented as my Golden Rule #5:

In every aspect of the design process, you'll be constantly facing the trade-off between specific and immediate needs of the pilot client vs. the more general and future needs of the industry. While re-assuring the pilot client that their needs will be met, don't lose sight of the industry in general, which is the ultimate goal of the final product.

I'm going to close my discussion of the development plan with a final note. Although my focus here in on development of a commercial software product, you must also remember to consider all other things you'd be normally doing in any large-scale software development project. Staffing of the project is a good example, where you'd not only be looking at the skills and the compensation terms, but also at the logistics and the chemistry among the team members.

And The Grenade Explodes!

From the pilot client's point of view, things may look quite differently. They may not care as much about the development approach we just went through, but they would certainly argue about every bit of its outcome. Let me explain this a little more. If you recall, one of the main criteria in selection of the pilot client was that they would understand the deal about "having to compromise." Chances are that by the time you're half-way through the development, they'll begin to realize the true deal. What's going to happen next?

  • They want to back off and get their money back;

  • They don't care about future marketing anymore and want everything customized and fast.

And to make matters worse, while you're using all your crisis management tricks to calm them down, you'll face some "minor" technical difficulties: programs grow beyond available memory, files are too big to manage and you forgot to implement an archival plan, and process is too slow, to name a few.

Well, nobody said it's going to be an easy task!

Marketing

If you ever get this far (g), you'll begin your marketing efforts toward the end of the deal with the pilot client. Your basic marketing decisions will be pricing and advertising.

As for pricing, you need to have an objective first. If you're just trying to sell your product and stay out of other deals with your clients, then you have to price it competitively. On the other hand, if you're hoping that your product will get your foot in the door for additional services to the client, then you'll have more flexibility to price it arbitrarily.

Your advertising budget should consider all possible channels:

  • Industry magazines and newsletters

  • Trade shows and seminars

  • Specialized/targeted marketing representatives

  • Marketing channels of the base product you extended to develop you software

Designing an attractive brochure and developing a demo disk that highlights industry-specific functions and buzz-words will boost your image and work to your advantage.

Product Support

Some critical decisions in the area of product support are going to be:

  • Between fee and free service

  • Over the phone, with a dial-in remote access, or on-site

  • Through 3rd-party vendors or other local agents

Looking Back

At the conclusion, you'll look back to see what lessons you've learned, whether it was worth it, and would you do it again. Chances are that your first effort might fail and you second one will only be used by the pilot client. Once you've survived that, the third one is going be a charm.

 

For further information, please refer to our feedback page.