When I first started out as a webdeveloper I was a 100% for building your own CMS. And I felt like that for a long time. This was mainly because I didn’t like any existing CMS that I tried (Typo3, Mambo, I even didn’t like WordPress back then).
A few years later, and half way building my own CMS from a scratch for a third time (and worked on a few more in-house developed CMS systems during internships and jobs), the company I worked at decided that we were wasting too much time maintaining our own CMS and spending too little time working for our clients. This was probably also a non-billable-hours vs billable-hours situation.
At first I was very hesitant about the idea of using a 3rd-party CMS. We went to a whole selection process, with one of the requirements that the CMS should be build on a framework that could also be used separately for situations where we needed to build a different web application that didn’t needed a CMS.
We landed on ExpressionEngine 2 (at that time not yet in a stable release, but we were patient). And a while later we also started to use WordPress for the smaller sites.
A few sites later I realized that I was spending much more time on actually creating awesome websites and making clients happy, and almost no time at creating features in an outdated CMS that already existed in almost every other CMS out there. And I liked it a lot!
I also got much more satisfaction from creating a beautiful good working website than I got from handling file-uploads, building content versioning with preview function and other default CMS functions.
Although, I do have to say that developing and maintaining your own CMS does teach you a lot and probably wil make you a better developer.
Reasons people use to justify building a CMS instead of using an existing one.
Whenever I hear people at companies talk about why they have their own CMS I always hear the same reasons. Some of them are good reasons, but most of them are bad. Don’t get me wrong, there are perfectly good reasons to build your own CMS, but for some reason, people often name the wrong reasons to build it yourself.
Full control over features and how it works
This one is 100% true and I can’t deny it in any way. When you write your own CMS you are in full control of how it works, which techniques are used and which features to include. Although the needs and wishes of your clients will probably be (and should be) a big influence.
Clients won’t be able to leave you very easily
This is a reason I hear very, very, very often. Too often I believe. And it’s a bad reason. If the only way to bind clients to your company for a longer period of time is that they can’t leave you (because leaving would mean they don’t have a website anymore). You are doing a bad job.
Clients should be with you because you provide a good service, they are happy with the quality of the work you do for them and they trust you.
WordPress is just an fancy blogging tool
During my career, I have come across a lot of hate towards WordPress, mainly from people/companies that have their own CMS. But this is simply not true, and saying so is ignorant. Sure, WordPress might have started out as a blogging tool, but it has outgrown that a long time ago.
CMS ‘x’ is really insecure and unreliable
This is also often said about WordPress. People pointing every time a WordPress site gets compromised and yell: ‘See, it’s insecure!’.
In my experience most of the WordPress sites getting compromised (or any other OpenSource CMS for that matter) are those that are developed once and then left unattended. I believe it’s common sense that you need to keep your CMS software up-to-date. You wouldn’t expect your virusscanner or Operating System to run smoothly for years without ever updating it. So why expect it of your CMS software?
Existing CMS systems don’t have enough features or don’t work very well
Almost every CMS out there has a way for extending. Some better than others, but they are almost all extendable. With widgets, plugins and extra modules that you can create yourself or download from the internet (free or paid) you can create almost every feature you can think of in almost every CMS out there.
‘But why would I use CMS x when I still have to extend it with my own feature?’, you might ask. Well, that’s very simple. Just creating the missing feature for an existing CMS is a lot less work than building and maintaining your own CMS.
We can’t connect an existing CMS with our system
I would like to refer to the previous point. This is exactly the same.
Cons of writing your own CMS
In my opinion, there are two very important reasons to not build your own CMS.
It costs a lot of time to do a good job
Building your own CMS will cost much of your time. Very much, if you want to do a good job. If you aren’t able to spend a vast amount of time every month into maintaining your own CMS after you build your first version (which will also cost a lot of time), you shouldn’t be building one.
Clients won’t be able to leave you very easily
As I stated before, I believe this is a bad thing. In fact, building your own CMS could even cost you potential clients. In the past I met a lot of potential clients who had one very important demand. An OpenSource CMS, or at least one that isn’t solely maintained by their webdevelopment company. So that they could leave, if they wanted to.
I believe it is a sign of confident in the quality of your work when you are not trying to keep clients by locking them in. And I also believe potential new clients will think the same. You don’t need to make your clients dependent of your CMS, you need to make them dependent of the quality of your work.
If your job is to help your clients with their online presence, help them sell more tickets, products, or whatever. If you just want to build and create awesome websites, then you should not be busy building a CMS. That would be a waste of time. Your time is better spend helping your clients, figuring out what they need and build them an awesome website.
If your job is to create a tool for other developers to create websites, then building your own CMS can be a good decision. Just don’t forget to make time (every week/month) to maintain your codebase, support your users, bugfixing and documenting everything. This is something many companies forget. Building your own CMS will cost a lot of time, all the time.