The very first part of Sitecore development really needs to take place when you are thinking of using a Content Management System (CMS) or not. (Now often called an Experience Management System (XP) due to additional capabilities such as A/B testing, personalization, etc.)

The considerations involved when choosing whether or not to use a content management system don't apply only to Sitecore; therefore I'm going to discuss CMS systems in general (in this first post).

Advantages:

  • Save time using pre-built controls which may be put together like Lego blocks (a common analogy).
  • Many systems have built-in functionality that would normally be very difficult and costly to build on your own such as A/B testing (including automations) and personalization.
  • CMS systems allow a website to be built, and then for non-programmers to take over the daily running of the site.
  • Many systems are able to host multiple domains from the same code-base saving time and money via the shared system's templates and controls.

Disadvantages:

  • Pre-built system's architectures have been decided upon by someone else. You will need to work within the confines of that architecture.
  • If a bug is found within the system itself you may not be able to fix it yourself. You may also need to upgrade your sites in order to get the bug-fix.
  • Any customizations of the system need to be thought about very carefully and most likely avoided. This is because customizations could break the system's upgradeability.
  • You are also, most likely, going to be paying for one of these systems, and that payment is to cover all the development work that went into creating all the system's features. If you don't have plans to use the various components of the system then you are paying a lot of money for development work you'll never use.
  • Oftentimes a custom solution, including only what you need it to do, provides better performance. This may lead to needing fewer resources which could reduce overall cost and make for a better end-user experience.

The general advantages and disadvantages don't include one very important factor: CMS systems are often meant for non-developers to use. If I know my HTML, CSS, and JavaScript. It might be faster for a developer to make a new website page by hand, than to go into a CMS system and create a new one out of components.

Also, if it's developers who will be working on your websites, even when taking into account the complexities of database, server-side code, and other factors. It still might be more cost-effective to create your own system that only contains the features and functionality that you need.

So, how do you decide? I use a very simple formula for this:

  1. Will developers take care of placing content? (5 points for custom) Rationale - It may be easier just to create HTML pages which can be done very quickly and deployed easily
  2. Is there a complex piece of functionality that you will definitely use right away and that is already included in a given CMS system? (2 points for the CMS system for each piece of functionality already included) Rationale - Building complex functionality is the most costly aspect of development if this is already done for you it is worth paying for
  3. Do any of those pieces of functionality need to be customized? (-1 point for the CMS system) Rationale - Modifying existing functionality is dangerous, might introduce bugs, and could cause many problems including making upgrades much more difficult
  4. How many pieces of custom functionality are needed? (2 points for the custom solution for each piece of completely custom functionality) Rationale - if you have to build everything yourself anyway, what are you really gaining by trying to fit it into a pre-built system?
  5. Is there a piece of functionality included in the CMS system you will definitely not use? (If the CMS solution is free, 1/2 point for the custom system for each piece of non-usable functionality. If the CMS system is pay-for, 1 point for the custom system.) Rationale - Why pay for something you won't use and that might also make implementing other functionality more difficult because of pre-determined architectures?
  6. Is there a piece functionality included in the CMS system which you might use in the future? (1 point for the CMS system per possible future included functionality) Rationale - Already built saves time, but if you don't know for certain you will use something it might end up just sitting there, even though you've paid for it