Starting Out

(This article appeared in "IT Glimpse 2001", a magazine published by the School of Computer Science, M.G. University, Kottayam, Kerala.)

How does one make a great software product?

Don't you wish you had the answer? Me too. A lot of people would kill to know the right answer to that one. Try asking this seemingly simple question to ten of your friends. You will be very amused at the variety of answers you get. The truth is that at best, one can only (and this article claims to do no more) get insights into causes of success and failure.

Defining Success

Before proceeding, lets stand back and define our yardstick for "greatness" of a software product. How is "success" measured?

If you ask this question. a designer would opt for a well-built, modular architecture. A programmer would point out new technologies, challenges overcome and low-level hacks. The quality team would talk about "Six Sigma" initiatives or some such confusing jargon.

This article submits that user acceptance is what makes a great software product. Great design, clean coding and overcoming technological barriers are all very good and usually would be present in such a product. But by themselves, they would mean nothing if the software application was not used by anyone.

Maybe this is too simplistic, but the success of a software product is

  • Getting users to understand that they need the software
  • Getting users to try the software
  • Getting users to buy the software

Sustained success is

  • Getting existing users to keep buying newer versions of the software
  • Getting more and more users to buy the software
  • Keeping users happy

Sometimes success is highly relative. Going by the previous definition and taking a practical example, the Windows OS would be a qualified success. There are quite a few users who are dissatisfied with it, but keep buying it because they say they don't have a choice, given Microsoft's monopoly.

Examine the facts and you will see that there are always choices. Users buy Windows because it keeps them relatively happy by avoiding the issues (cost / user-friendliness / availability of applications) arising from using other operating systems like Unix, MacOS, etc.

In real life, there is no free lunch. People don't "just build" software products. They build it for getting something back. Usually this "something" means money, directly as revenues or indirectly as increased efficiency. Even if there is no profit motive involved, software is built so that people use it.

Getting users to understand that they need the software

Users try out a product only if they see a need for the product. Custom-built software applications fit this bill because requirements are pre-determined. The story is a little different for software products and services.

Market research on needs can help in discovering niche or even mass markets. "Killer apps" such as e-mail and instant messaging come to mind. Products must be built with an audience and a need to cater to. Otherwise, the software would end up nothing more than an interesting programming exercise.

Sometimes, new products are built to capture a market by displacing existing products. To do this, the new product must have something new to offer, such as extending existing functionality with better features at lower cost. Microsoft is particularly notorious for muscling into existing markets by buying out leading products or using a marketing blitz for its new product in that area.

To put a Machiavellian aspect to this issue, companies come up with useless products or features and create demand by sustained marketing hype. Its is not just children and teenagers, but even adults who can be susceptible to such tactics. Companies sometimes corner markets by patenting technology or creating monopolies through acquisitions and mergers. Such measures, while despicable, are becoming more of a reality than one would like to admit.

Getting users to try the software

At this stage, there is a user with a need and there is a product which meets the need. To get the user to try the software is the next struggle. Some users go to the buying stage directly. This is, of course, a welcome scenario, but something that cannot be depended upon.

Shareware was one of the great ideas in the Internet age that encouraged users to try out products with minimal fuss. Over the years, traditional marketing strategies such as sales pitches, ad campaigns, promotions, etc. have been supplemented with web marketing using Flash demos and email ads.

Getting users to buy the software

There is an old worn-out adage - "First impression, best impression". If the user can get through the first few minutes of using a software and getting it to do the right thing, the battle is half won.

Here, an intuitive user interface is very important. The user must be able to find the commands that he/she is looking for very easily. The usability of a user interface assumes predominance over considerations such as attractiveness and originality.

Let's take the vi editor in Unix. As a powerful text editing application, it has few equals. Yet people would rather use the lowly Notepad on Windows, because it makes them so much more productive in a shorter time.

The next point is so obvious: The software must be right. One can never overstate the importance of quality assurance. Nothing bugs users more than seeing the software application die on them. (Pun intended)

One of the more common programmer nightmares is a demonstration to an important customer crashing when his/her module is being shown.

Cost can be a major factor in purchase decisions. But if we take a look around, we see that costly Microsoft Office outsells the free Star Office. I guess this is what business folks mean when they talk about "Total Cost of Ownership", i.e., the price tag of a product is less important than the costs or reduction of costs involved in using it in the long term.

Existing applications, setup and personnel inertia can be a major factor (rather obstacle) in product acceptance. Inter-operability with or easier migration from current systems would increase the chances of success.

Getting existing users to keep buying newer versions of the software

You might spend months designing the most complete application for solving a particular problem, using teams of analysts and designers. But let a user use the completed product for half an hour and ask him/her, "How did you like it?" 99% of the time, you can be sure that any answer will start with "Its great, but..." along with a list of new features wanted desperately.

The point is - no software is ever complete. There is no "The End" banner and dramatic music after the successful release of the product. More work begins at this step, namely, finding out how users are using the software and what more they want from it.

People use some products in weird ways. For example, a developer I know uses Allaire HomeSite for generating imagemap code and uses different editors for different sections of the rest of the server page.

Successful products inspire imitations. If an imitation includes the additional features that users are looking for, it may very well displace the original. Hence, the original product needs new versions to come out at regular intervals. Work should start on those versions immediately after the first release and not after product sales lose steam.

In large corporations, buyers are automatically locked into the software they purchase, because of the huge investment involved, particularly with regard to infrastructure and training. For less expensive products, there is no guarantee that the current user will not abandon the current application and go with a product from another vendor.

Lets take a parallel from the drug business. The product should be good that buyers are "hooked" on it and they want more and better stuff. But while the drug mafia can ensure their exclusive presence in a locality, software vendors do not have that luxury. The market leader should be alert and miss no opportunities.

Getting more and more users to buy the software

Keeping users happy

In case you are losing sleep over it, the occurrence of the two headings above is intentional. By a happy coincidence, the best way of getting more users of the product is to keep the existing ones happy and getting them to spread the "truth" (God forbid you be in the Trojan Horse creation business).

Users buy a product for a particular need. If the software helps them do it, they are satisfied. If it doesn't, they don't want it. Nor will others with similar needs. Once this essential criteria of meeting needs is satisfied and the product keeps improving through each release, a strong word-of-mouth reputation starts building up.

It goes without saying that the product has to be marketed properly, regardless of its technical perfection. For those operating on a shoe-string budget, reading about some of the low-cost innovative Internet strategies might be a good idea.

Nothing succeeds like success (cliché!). The more copies of the product that are sold, the more users that want to try it at least once, which increases the possibility of more sales. Hence the importance of striking the bull's-eye at the very outset.

Conclusion

How to make a great software product? Well, we are back to where we began.

We see dud releases from huge corporations investing billions of dollars in marketing research. We see stunningly successful products (Linux, Winamp) from students writing software as a hobby. Through every story of triumph or disaster in software development, one lesson stands out - "The customer is everything".

Build software for users. Learn about user needs, build software and market it for those needs. Keep finding out how you can improve upon what you have built.

Imagine that you are the customer and start. You can't go wrong.


Copyright © 1999-2010 Krishna Kumar, All Rights Reserved. Disclaimer