Friday, November 11, 2011

COTS vs. Home-Grown Software

We are at an age where businesses must transform and adapt fast. As a result, organizations, especially the ones in the service sector, must find a way to introduce products and services rapidly. So, increasing number of technology executives, architects and developers are facing a newer challenge – build custom software or purchase commercial of-the-shelf (COTS) software.

Some developers may not care much for this issue as long as they get to work on newer technologies. Architects, on the other hand, may have to evaluate the value of custom software as opposed to COTS when it comes to assessing the current and future state of corporate systems. I must emphasize that the roles of an architect can vary from one organization to another; however, many architects, regardless of their roles, always have to consider flexibility, agility, extensibility and timely delivery of products when designing large scale systems. Consequently, they may have to constantly evaluate whether to buy software (or software components) or to build something in-house. Technology executives may focus more on the bottom lines – expenses, project deliverables, resource management, and fulfill short and long term corporate goals; but, any decisions taken by architects and developers usually have direct impact to executive decisions.
Whenever we attempt to evaluate of-the-shelf software products against the option of building in-house, we have to consider many things. Both these options have their advantages and disadvantages. Let’s look at the followings:

No need to reinvent the wheel
Recurring license/support cost; can be costly
Minimizes work for quicker product implementation
Customizations may be limited and/or costly
Resources not needed for continuous product improvements
Some features of the product may not be relevant

Home-Grown Software
Complete control over features and functionalities
Dedicated resources may be necessary to support the product
No recurring license/support cost
Products and services to customers may get delayed due to the development/enhancement time

Despite the advantages or the disadvantages of both the options, the price plays a major role in our decisions. If the cost is relatively low, then organizations may very quickly decide to buy instead of building a product. If the price tags for off-the-shelf products are pretty high then the decision gets a little harder.
I feel there are three different categories of off-the-shelf products:

1)      General purpose– These products don’t target any specific industry or business operation. They can be utilized in many different types of applications.  Such products can be inexpensive.

2)      Operations specific – These products can target specific operations within a business organization and can be quite expensive. For example, accounting and customer relationship management.

3)      Industry specific – Industry specific (or line of business specific) products target certain industries (e.g. insurance, healthcare) possibly with features such as workflows, business rules, security and governance. These products can sometimes be quite expensive.
There are off course open source alternatives to many expensive products these days. We can always pick some of those; but support and constant improvement might get challenging.

There are plenty of commercial of-the-shelf software products in the market. It is difficult to fully understand available features, customization options and ongoing maintenance costs associated to these products. In addition, we may face a difficult challenge should the producer decides to abandon the product. Home-grown products are no different in this regard. Life span for in-house products is gradually shrinking, and (in some cases) the cost is gradually increasing. It is for sure that the competitive market is demanding us to come up with robust and flexible systems at a faster pace. As a result, we are being forced to increasingly evaluate between COTS and home-grown software products.