Build vs. Buy

I keep being surprised by how frequently I hear clients tell me that a vendor has suggested they "build them a CMS," or by proposals from vendors that include custom building a CMS. I hear people suggesting building their own social networking website. I even occasionally still hear tell of organizations who want custom CRMs.

The web software landscape has changed dramatically over the years. Five years ago, it was full of custom built systems of all sorts - and the "build vs. buy" decision was, I think, more difficult, because the available software to buy was fairly cruddy. (And, for the purposes of this post, I'm using "buy" exceedingly loosely - including purchasing proprietary software, installing open source, or using SaaS.)

But the landscape is different now, and I think that, in some senses, the "build vs. buy" decision is much more straightforward. First, the software available, whether it be open source, SaaS, or proprietary, is much better all round. There are new types of software being developed all the time (like, for instance, the new crop of "Social Network Management Systems" both open source and SaaS, like Ning.)

In addition, the increasing openness of software, whether it be open source, or open platforms like Salesforce.com, means that customizing software to your needs, or integrating different pieces is much more straightforward, meaning it's a lot easier to create exactly what you need by integration or customization, rather than building from scratch.

This is not to say that there is no role for custom built applications. I'm in the process of working with two organizations to create just that. But they are both for quite highly specialized functions. And I've also been involved in projects to create interesting and customized web functionality - but those are being done with adding custom modules to an open source CMS.

From my perspective, exhaust all of the "buy" options: open source/proprietary/SaaS out-of-the-box, customized open source/SaaS, or integration of already existing components, or building modules on top of open source tools, before you take on building something new from the ground up. You'll save money and time, as well as be able to take advantage of an upgrade path as web software changes and improves, meaning you won't have to build whole systems again.

Comments

In complete agreement as

In complete agreement as well. I continue to be impressed by just how robust the "buy" options are today - and most are open to custom additions and adaptations with a fraction of the work needed to "roll your own".

There are a couple other benefits to tailoring a standard solution vs. building from scratch I am a big fan of:
1. Resources available -If you use an existing solution its much easier to find developers familiar with the basic framework for maintenance, fixes and additions. Plus documentation on the web.
2. Usability -In most cases you'll end up with better usability - someone or many people have already thought through the best workflow and user friendly controls for you. Unless you have a large budget, the right team and dedicated time the admin side tends to suffer in custom solutions.
3. Portability - once you are in a known system chances are that someone has been down the migration path to another system already and it will be easier to move if you decide to change systems.

Great topic and post.

Absolutely, Michelle. I

Absolutely, Michelle. I completely agree. I also think there's a lot more strong platforms that one could tailor to meet unique needs than there used to be. For instance, tools like Salesforce, CiviCRM, SharePoint, and Drupal could be reasonable starting points even if you have very specific, unusual requirements (wow, I bet you don't find too many lists that include both CiviCRM and SharePoint).

You'd then plan to tailor or program in your new needs, but you'd start from a base of functionality that provides you a big head start over starting from scratch.