Buy vs. Build Software Applications: The Eternal Dilemma

The other day, an IT colleague of mine mentioned a conflict at a corporation where he’s working. The corporation has a mission-critical application deployed across a large number of workstations. The set of corporate employees who use this application largely use it and nothing else all day long at dedicated workstations. The application they are using is a customized third-party application; however, the firm has been having chronic problems with this app (let’s call it “QRSApp”), and so is looking at different solutions. The firm could continue to make changes to QRSApp to fix their problems. The firm could switch to a different third-party application; several other vendors market applications of this type within this firm’s industry. Or, as a senior IT manager now wants to do, the firm could develop a completely custom and private application to replace QRSApp, so that the firm has complete control over it.

The question: which solution is best?

Let’s step back a moment to look at the issues involved. Consider the following (simplified) diagram:

A given piece of software can range from being an unmodified, commercial off-the-shelf (COTS) software package – such as, say, Microsoft Word – to being a completely custom, written-from-scratch program. Between those two extremes you can find customized and/or configured COTS software, custom software built using commercial software frameworks and libraries, and complex systems comprising all of the above.

As shown above, this low-to-high customization axis usually correlates directly to three other aspects: cost, suitability, and time to deployment. First, acquisition and deployment of COTS software is usually cheaper than development and deployment of equivalent custom software. You can buy a copy of MS Word for a few hundred dollars, while developing a word processor from scratch would probably cost you a few million dollars. Likewise you’ll have to invest the time and personnel in maintaining and updating your custom software, whereas COTS software will be maintained by the vendor (though you will typically have to pay for upgrades after some point).