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 testing,
sales 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:
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?
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.
|