How do you choose the "right" CMS? A lesson in due diligence.

Contents

In a recent project, I changed the CMS (Content-Managment System) three times. Each time it changed, I felt stupider than the last. I've never had to change it so many times in one project. To be honest, this was the first time I changed it mid-project at all. In my defence, the project requirements continuously evolved, so the CMS had to as well. That said, I could have saved much time and frustration with greater due diligence earlier in the project. It was still completed on time. The only negative impact was a few Saturdays lost fixing my mistakes. In my blog about the process of a website project, I talk about the importance of a comprehensive Discovery phase. Safe to say, my Discovery was not up to scratch in this project. Definitely, a lesson learned. Let me tell you what happened.

Which CMS did I use?

Like most websites, this one needed a CMS. I built the site using Nuxt.js, so a headless CMS was required. Initially, I picked Hygraph. I use it to power my website and blog so felt it was more than up to the task. Were it not for budgetary constraints, it would have been. Essentially, my client told me halfway through the project that the website needed localizing for three languages (something we should have gone over in Discovery). Unfortunately, the free plan of Hygraph limits you to two locales. By then, I had told the client that the CMS was free so they had not budgeted for the additional cost of the paid Hygraph plan. I had to pivot and find a new CMS to use.

Next, I decided to use Storyblok. I had never used it but many Developers I know, and trust, rave about it. Crucially, it offers unlimited locales on its free "Community" plan. From what I could tell it fit the bill. Time to crack on. Everything went swimmingly as I rebuilt the CMS. Fast-forward to two weeks before the live date. The client sent me the final website content. Up until then, I had been working only with images. Now they were sending me videos (another failure of my Discovery). It turns out, one can't upload videos on the Storyblok Community plan. How vexing.

Frustrated, I set about finding the third and last CMS. This time, I was far more thorough in my research. Previously, I had gone off my own experience and anecdotal reviews. On the third try, I thoroughly compared the project requirements to the CMS features. I settled on Sanity.io. It offers unlimited locales, a fully customizable content schema and is "asset agnostic". Lovely. You do have to write your Sanity content schema manually but that only slows you down a little. A Saturday of re-configuration and code-refactoring later, I had the website working as before. Finally, after three attempts, I got it right.

How do you choose a CMS?

This post is not a plug for Sanity.io. Nor is it a dig at Hygraph and Storyblok. I still use Hygraph for this blog. They are both great, capable platforms. They wouldn't be so popular if they weren't. The lesson I am trying to impart is to always match your CMS to the project requirements. It can be tempting to just go with what you know. It is always worth spending a bit of extra time to see if there is anything better suited.

Initially, I mistakenly went for the CMS I was most familiar with. I rushed to the path of least resistance rather than check it was the right choice. That is a failure of my due diligence. I can't blame the client for not telling me about the localization part of the project. I should have known to go deeper in the Discovery phase. Lesson learnt. The first part of choosing your CMS is gaining a complete understanding of the technical requirements.

My second mistake was choosing a CMS based mainly on another's recommendation. In my case, I was too naive. I should have done more research and testing. Instead, I blindly went ahead based on someone's recommendation. In future, I will research and critique other people's advice before diving in. If you have been wise enough to gain a deep understanding of the project requirements, it would be foolish not to use those as the guide for choosing your CMS.

A lesson for life

The lessons learned here are far more wide-reaching than just selecting a CMS. We live in a world where opinions are cheap and evidence is fluid. Many people offer opinions, advice and recommendations. Each uses facts and statistics to back them up. It is difficult to find the truth. It is, therefore, vital we develop an ability to filter and verify information. 

It is easy to be led by our favourite influencers, podcasters and thought leaders. As we listen to them, we must maintain a critical mind. Dissect the information we receive. Check the facts. Integrate the useful information and discard the rest.

As we find new information we should always test and verify it. As we test we constantly refine and improve our knowledge. In my case, I tried twice to find the right answer. Each time I took the lessons learned to be better informed next time. Ultimately, those lessons helped me find the solution I needed. Making mistakes is part of learning. Being methodical and not acting rashly is advisable. Being agile and quick to pivot for a better solution is just as important. It would have been easy for me to ignore the need for a more suitable CMS. I could have looked at the inconvenience of rebuilding it as a reason not to do it. Instead, I decided to adapt to the new situation and find a positive solution. I am glad I did. The lessons I learned from the process were truly valuable. They led me to the best solution for the project and put me in a better position to serve my clients in the future.

Conclusion

So, how do you choose the "right" CMS? Firstly, put aside the urge to stick with what you know. Break new ground. Gain a full understanding of the project requirements. Once you are confident you know the full extent of the project, spend time researching which CMS best suits the project. When you find the CMS that best suits the project, go ahead with that one. Don't rush. Remain impartial. Do your due diligence. Trust the process. Find your solution.