Let's begin from the premise that you as a well established developer, know what a CMS is, so I won't lecture you on what one is because I'm sure you know a few, love one or loathe another, that's why I'll get straight to the point.

In all my years as a developer I've had my way around a few CMS's (Haven't we all?), hell I even tried building one myself (Disclaimer: It's still in development!), but some time ago I started asking myself what makes a good CMS? I know, I have weird hobbies, others think about pudding or world ... stuff (You thought I was going to say peace! Well think again!) and I fantasize about what makes a good CMS.

Alright then, what makes a good CMS? Can anyone answer that? Maybe you can, or maybe you in the back with "My Little Pony" shirt? In my own personal opinion, a good CMS has to fulfill a few basic needs (5 to be more exact) in order for the end-user and the developer, that is in charge of the whole developing process, to be satisfied and happy.

  1. Good UI.
    I'm referring here to the back-end UI and because this is a debatable point, I'm going to start with this one. We as developers don't care that much about UI, so it doesn't matter how it looks or how the whole writing / adding media process is performed as long as it just works, but for the end-user it's really important. The truth, weather you like it or not, is that the UI has to be minimalist, clean, make use of icons, but it shouldn't have just icons, it has to have text associated to each one of them and last but not least it has to be straight forward, no hidden menus, pages or ways to get a certain result. Using icons helps people remember stuff because our brain is wired in such a way that it's easier for us to associate a picture to an action, and then use that information to perform that particular action.
    Another important aspect is that is has to use warm colors, that don't put too much strain on the users eyes.

  2. Customizable.
    If the CMS gives people the ability to customize the way their content or website looks they will love it long time. People like when they have some sort of power over the whole creative process, even if they don't know a thing about design. But some of you (Especially the designers!) won't agree with me on this one, because giving a user too much power over how the whole thing looks might break all the hard work that was put into it. Well for those of you who question my opinion I have a simple word for you, "Markdown" (Enough said!),_ _and a very interesting point made my Rachel Andrew at last years Smashing Conf, that you can visualize here.

  3. Fast.
    The speed factor is a rather important aspect. I'm not referring only to the way the whole thing loads, I'm also referring to the speed of a process or a user action. How much time does it take to perform a basic action? Just because the CMS developer uses Google Fiber and all of the websites they browse load at the speed of the Millennium Falcon doesn't mean they have to build a slow CMS. The end users will appreciate the fact that they won't have to reload a page each time they want to "Save" something. Some may say that this aspect may be outdated, because nowadays everything is powered by node, angular, ember or whatever you prefer. Well that's because people started to realize the use of building a dynamic, scalable application, that interacts with the server in real-time and provides information in the blink of an eye, to the end-user.

  4. Developer Friendly.
    Developers are friendly people! Well at least most of them are, but that's not the point here, the point is that when someone is building a CMS they should think about the developers and the torments they could go through if the CMS isn't developer friendly enough. The CMS should have a good, well structured documentation that covers all the functions, classes and variables that are part of it. Developers shouldn't wrap their heads around the documentation when they want to achieve something. The code should be well commented, because we, the other developers, tend to spend a very long period of time looking at other people's code, and maybe if it were well commented then we would be able to solve a simple request from the client. Plugins. Developers love plugins! They love using them and they love making them. A CMS without plugins or extensions is like a phone without a pair of earbuds. It's ok, you can listen to music using the built-in speaker, but that doesn't mean you should.

  5. Sociable.
    We are a sociable species. Starting from the earliest stages of mankind and ending today, in the era of the smart things, we as humans always had a tendency to group and share stuff. We have created a network and systems that are present on that network that connect almost the entire human population. Having said that, giving the ability, to an individual, to share something with others, has a major impact on the way they perceive the before mentioned individual. A good CMS shouldn't be only for managing content, it should also give a user the ability to share that content, if he or she so desires. Weather it integrates all the major social networks or just a basic comments system, people should be allowed to share their opinions, knowledge and in the end be able to share the content.

I guess I should wrap this up. In the end it's all about the power that a user has over his content. What abilities is the CMS developer going to provide the user.

Maybe the CMS will be restrictive and won't allow many action to be performed over the content, but we're getting into a whole different field, that I'm not going to elaborate now.

The important thing to remember is that, no matter what CMS you chose to manage your content you should be able to manage it with ease and have the ability to share it with others.

That is all for now. Let us continue this talk in the comments. What is your opinion on this?

Until next time, code long and prosper!

Stefan