Wikipedia's definition of a website content management system is:
Website authoring, collaboration, and administration tools that help users with little knowledge of web programming languages or markup languages create and manage website content.
Without a content management system, all website changes would have to be carried out by a developer. In the early days of the internet, a website was a collection of files, one for each page. If something needed to be changed you would edit a particular file and re-upload it to the server. This required more time to learn initially, is easy to make a mistake and becomes very cumbersome once a site grows beyond several pages.
Content management systems solve this problem of developer reliance, whereby anybody with even basic skills can maintain a website by creating, editing and removing content. For most editing tasks, using a system is far quicker even for a developer than manually modifying code. The process is streamlined and lots of tasks can be carried out automatically.
The term content management system encompasses a broad array of tools, ranging from DIY website builders such as Squarespace and Wix, to widely known industry names like WordPress and Drupal, to very specific in-house or custom built solutions. Whilst they all aim to solve similar problems, they provide different levels of control and work in very different ways.
Since all websites are different, the CMS needs to adapt to manage different types and structures of content. Managing a list of products with prices, stock levels and configurations is very different to a recipe blog or a social marketplace. In practice this is where a developer can help versus using a website builder or just installing a WordPress theme. By customizing the system to the specific use case, the website is easier to manage going forward because it has been built for it. Just the same as buying any item of clothing off the rail, rather than looking at the size and making sure it fits you first.
What functionality does a CMS usually provide?
The following are all common CMS features, some might be more useful to you than others:
- Support pages with dynamic content. Most webpages don't just contain a block of text, this would be very boring! Instead, you might have a section containing three boxes each with an image and text or a page that shows different content based on whether the user was logged in or not.
- Maintain documents in revisions so that you can see what has been changed, when, and revert if necessary to previous versions.
- Hold a media library of images that your company has access to, so that everything is concetrated in one place.
- Access controls and restrictions so that the right people have the power to do what they need to do, but not more than this.
- Streamline the process of editing content, removing mundane or repetitive tasks such as resizing images or duplicating information to different pages.
What makes one CMS better than another?
Being biased as a developer has likely influenced my decision to give this a high priority of importance. For me flexibility is the most important aspect. I want to be able to integrate a CMS with any type of page, no matter if it contains hundreds of images or interactive content.
2. Logical & organized
Able to manage each piece of content in a single logical place rather than scattered throughout a maze of menus. If you only edit a block of text each year, you either need detailed notes as to where to find each option or an intuitive enough interface that it's obvious.
3. Content guidance
One of the fundamentals of design is consistency. It communicates professionalism. In contrast to flexibility, actually being restrictive in certain areas is a good thing. Less choices when amending content, because the decisions were made up front leads to a better site. Guidance with SEO in terms of title length and the way a page will be presented on social media are also very helpful.