I am often involved in tenders for new pieces of software development work. I frequently come across tender documents full of questions that scream 'we are expecting to use a COTS product for this system!!' even though ostensibly the process allows (sometimes explicitly) for the possibility of a bespoke system. I often find it necessary to explain the pros and cons of the two approaches, both of which are perfectly valid in the right circumstances.
First off, some definitions:
- When I say 'bespoke' I am referring to the complete, ground-up development of a system. This may use some 'productised' components for specific functionality, for example a reporting component, or some advanced controls for the user interface
- By a COTS (Commercial Off-The-Shelf) product I mean a system that already exists and delivers a common set of functions, usually for a particular business domain, with the ability to be customised, configured or extended to suit each client. For example, many companies use SalesForce for customer relationship management, or Xero for accounting.
- In the middle there is a slightly grey area in which products form a customisable platform on which to write bespoke software. For example, Microsoft SharePoint or Microsoft Dynamics CRM, both of which can be used to develop many types of system faster than a pure bespoke development by providing core functionality 'out of the box'. I'm going to ignore this possibility in the interests of brevity in this post, but if anything I would consider this a form of bespoke development rather than a product-based implementation method.
So when would I recommend each approach? Inevitably there is no simple rule to this, but I do encourage you to think long term about it. Below are a couple of examples of factors that you may want to consider if you are faced with this decision. Everyone will have different factors that they care about, but the important thing to understand is that the decision can change as a result of considering the Total Cost of Ownership (TCO) of the final solution. This means not just the initial investment but the ongoing operating costs such as the cost of support, the ease (or difficulty) of making changes, the business benefits that the solution will provide (and how soon you can realise them), and myriad others.
With anything other than minor customisations, over time COTS products are likely to increase in cost relative to bespoke solutions, as they are harder to change. Also, many of the benefits of COTS products can be lost or reduced in value. For example, a heavily customised implementation of a product will be harder to upgrade when a new version of the core product is released; support will be likely to be provided for the core product only, meaning that your customisations will effectively be unsupported; and your ability to influence the functionality of the product will be lessened once the vendor knows you are tied in.
Conclusion? Simple really. COTS products absolutely have their place and are worth considering. But consider carefully how closely they fit your business before committing to one. If it's a square peg with its corners sanded off to fit a round hole, how long before the gaps start to show?