Software: Build or Buy?
Good article explaining why customising off-the-shelf software is not always better value than building from scratch.
You will find that extending and customising COTS (Commercial Off-The-Shelf) systems is often a horrible variant of ugly hackery that’s almost impossible to do with good software craftsmanship. You will still have to hire developers, but instead of allowing them to build well architected solutions, you will be forcing them to do a dirty and thankless job. You can guess the calibre of developer that will be attracted to such a position.
Anyone who has tried to build a system on top of Sharepoint, or customise MSCRM will know the pain involved. It’s the same for pretty much any enterprise software system.
Each additional requirement over and above the out-of-the-box features will cost significantly more than the equivalent additional requirement of a custom system.
This is the 80/20 rule biting us. It’s tempting to assume that since an off the shelf product gives us 80% of the functionality we need, that’s 80% of the work done. However 80/20 tells us that all to often it can be as little as 20% of the work done. And the work we still need to do will be harder to do, because we’re working with a closed system that probably had slightly different objectives to our objectives, which will have quirks and bugs that we’ll only discover as we go, and whose extensibility points are generally going to be poorly documented, if at all.
CMS is the classic example of build v buy. Since there’s a bunch of free CMS’s out there, it should be a no-brainer. Most developers seemed to have had a go at writing one at some point or other, mostly as an exercise, and there have been a number of serious open-source efforts, but even with all the choice available, folk still find that writing their own CMS is the best bet.
So should you always build from scratch? Of course not. If you’re extending an existing product, then it effectively becomes part of your toolkit. Like all tools, you choose it based on how productively you can work with it (or you find people who can work effectively with it). And on the other hand, sometimes its easier or more cost-effective just to adapt your needs to the tools that are available.



