The 5 stages of grief & why you probably shouldn't build your own CMS.
As some of you know, I’ve been working on a little project in my free time called Akela CMS. It’s a CMS built with React/Redux and MongoDB (but soon to be database agnostic!), intended for individuals and small organizations who want a content system that’s easy to extend, internationalize, and edit after the developer has left the project. It was named “Akela” after my friend’s cat. The cat is an adorable white ragdoll who chews through cables like candy string and licks your hand when it wants you to stop petting it.
Much like this cat, Akela CMS has been licking for me to stop working on it for months, but I couldn’t bring myself to let go of it. “I could use this for all of my future CMS client work!” - I rationalized. “But I’m learning so much about creating optimized React components!” - I bemoaned. I was in denial.
Well, I’m finally ready to go through the grieving process. Here’s why you should probably not build your own CMS like I did.
“All of the other systems don’t do what I need!”
Have you ever thought this? Here’s a list of judgement free statements that may describe many of your experiences with content systems.
- You’ve had some experience with Wordpress, Drupal, or a Rails CMS gem and grew tired of fighting against them to build a custom template or feature that worked with the system and met your requirements.
- You needed a feature like content translation and were skeptical about how these systems or their plugins supported that core feature.
- You just will never, ever work with PHP again.
- You didn’t want to pay for a CMS that had what you needed and thought “I could do this myself!”
But this is a thought that blossoms from a lack of research.
Do you want to have full control over the front end and have client-side rendering, or, maybe just the ability to easily customize your own templates?
No PHP? Free and open source? Self-hosted and with good documentation and community support? Check. Check. Check. They’re out there.
There is absolutely a CMS already out there that suits your needs and gives you the flexibility you want and in the stack you deserve unless your needs are so specific and ground breaking that you really ought to be getting paid a six figure salary to build this new CMS. Not doing it for free on your own dime and time.
Say it with me:
“There is a CMS out there that does what I want. I just have to find it and learn how to use it.”
“But I deserve better than what’s out there! The other systems are too clunky/ugly/*insert adjective here!!”
Ok, breathe with me. In. Out.
It sounds like you take pride in your work and what you build for yourself and your clients. That’s great!
But sometimes when we focus on the negative, we forget to see the positives that existing systems already give to us. Maybe their admin interface doesn’t give your non-technical user the beautiful drag-and-drop template editing of Squarespace or Wix. But try to think about the hundreds if not thousands of hours and the myriad complexities that comes with building something like this.
Are you willing to spend all of this time designing a sufficiently flat data structure, building an API, writing thousands of tests, and then wrestling with a single page app frontend that can communicate asynchronusly with multiple endpoints at once and handle the data structure that you meticulously (re)designed just to work with this specific interface? How will you handle the creation of custom templates? How will you decouple them sufficiently from the backend and interface logic to make creating new ones a breeze for developers? You don’t want to think about all this. I know. (soothing voice) I know.
Sometimes perfection is a thing we expect from ourselves because we don’t have the support we need. We aim for the moon hoping to land among the stars. But sometimes what we deserve isn’t a thing that we set our minds on, but the serenity in knowing that something is “good enough”.
That, and at least a six-figure salary to build a drag-and-drop interface like Squarespace or Wix.
“Maybe if I can just get the template nodes working by next week, I can launch a demo and invite open source contributors to the project. Then it’ll really get going!”
So you’ve already committed a couple hundred hours to this project. It’s got some great features, it kind of works like a basic blogging engine, but it’s ugly as shit, still has a lot of bugs, and still has miles to go until completion.
It sounds like you’re saying, maybe if you just work a little bit more on it, it’ll be worth it and you’ll still be able to finish it somehow? This line of thinking is what we call sunk cost fallacy. Sometimes, we think that because we’ve already done something halfway, we ought to finish it even if it’s not worth doing anymore. “I might as well keep dating this person I can’t stand anymore because I’ve already spent 4 months (years?!) with them”, is an example.
I want you to think about what continuing down this path will cost you. Hundreds of more hours? Thousands? What will you be losing? Your free time? Friends? The chance to learn how to use a headless CMS? Your happiness?
Could you get what you wanted in some other, less costly way?
I want you think about what your time worth. You’re not getting paid to make this CMS, it’s sucking up all of your free time now, and you’re miserable. This is about moving on and letting go. This is not about what you’re losing but about what you stand to gain.
You deserve those things you stand to gain! Go get those things!
And let’s be honest, your code needs a few more refactors to be accessible for open source contributors anyway.
“I’m a failure.”
It sounds like you’re having a rough time. Do you want to talk about it? You do?
What makes you feel like you’re a failure? Because you didn’t build your own CMS? Who has made you feel like a failure before because you didn’t build your own CMS?
I think you’re so brave for even making the attempt. And you’re even braver and wiser for stopping.
You’re not a failure. I want you to believe that and do some things that make you happy today. Do you. Do whatever you desire. Treat yourself.
It’s okay to make mistakes. Mistakes don’t make you a mistake. Remember all those other content systems out there? They’ll always be there by your side.
I’ll always be there too.
“The 5 stages of grief & why you probably shouldn’t build your own CMS.”
The grieving process looks different for everyone and I don’t necessarily believe everyone experiences the stages in this order, or even all of them.
Acceptance is the stage where you stop trying to hold on to something and move on. For some of us, this means moving onto a new project with a little more wisdom and knowledge. Or this could also mean taking a break from coding for a month to recharge our batteries. It’s different for everyone.
If you’ve read this far, here’s an example of what acceptance looks like for one person. An article about why you probably shouldn’t build your own CMS. I hope this can reach just one person before they try to embark down this path, but honestly I know that someone thinking of building a CMS is probably googling how to build it right now insteady of why not to build it. So if you’ve gotten here after sharing a similar experience, feel free to reach out to me on my my twitter I’m always fond of meeting other survivors!