Using a CMS Made Me A Better Developer

Back when I first started writing code for the web, I thought I knew everything. I thought I was invincible! My ASP.Net Web Forms and I were going to RULE THE INTERNETS!

The idea of creating dynamic, data-driven HTML from backend controls was like magic. I was adding databases, importing RSS feeds, and generally just feeling in control of every single detail. I was in complete denial that anyone else ever needed to help out with this project.

Of course, I was dead wrong.

ASP.Net Web Forms gave way to MVC, PHP and node js, all of which have been eclipsed somewhat by microservice architectures and static site generators using front-end frameworks like reactjs and vuejs. Needless to say, I’ve written a lot of code in a lot of different languages and frameworks.

Somewhere along the way, I decided that being in control of everything was a VERY BAD IDEA. Every website and mobile app I worked on was immediately out of date as soon as I deployed it. Constant changes to the most inane details consumed the majority of my time. I ended up spending my days writing CONTENT instead of CODE. This seemed to peak around the ASP.Net 2.0 era (2006?), and the company I work for (Agility) decided to do something about it, for real.

We built a CMS (Content Management System) and called it Agility CMS. My life changed pretty much OVERNIGHT (it actually took about a couple years to get to v1, but the time flew by). We started getting back to doing the things we actually ENJOYED, like writing decent code.
It’s not easy to write a good, high performance website. Getting the layout and CSS just right, and making your customer happy is HARD. Normally you start out with a home page, maybe add a landing page or two, and some other list/detail pages here and there. Awesome! Client sign-off complete!

Now, who’s going to actually input all that content? Oh, shoot. That is ZERO-PERCENT-FUN for a developer.

This is the point where you really need to look at a CMS, and preferably one where you don’t have to rewrite everything you’ve built so far. In most cases, a decent Headless CMS will provide a content API and/or SDK so you can just plug the content into your existing artifacts. It could be that you’ve been some template code which you can refactor to work with that CMS’s routing engine. That way, after having written even just a few aspects of the templated pieces (header, footer, homepage, listing, etc.) you probably have enough to get some of the principal sections of the site configured.

Sometimes, you can even start with a pre-built template, too. You can often plug it into the CMS-provided logic in a way that can get you started without having to do all the boiler-plate code. Having done that, now you take complete control over the finished product and make any modifications that you like.

And then comes the real magic. You get everything set up in the CMS, you plug it into your code or do whatever refactoring you need to do to get it running, and you’re kind of… done. Sort of — now it’s time to hand that thing off to the content team. That team is now responsible for all the things that you hate doing — it’s perfect! It’s up to them to create all the different pages and all the list items and upload the images and yada-yada-yada-boring are-we-done-yet? And then… you launch the staging site a couple of days later, and you see a hundred pages in the sitemap, and hundreds of shared content items in all the various lists you configured early. The value of your work has been multiplied by another team, and you hardly had to lift a finger. It’s a very cool feeling.

The first time I experienced this was when I was tasked with creating a site that I really didn’t want to work on. I put it off until Friday afternoon, where I stuck together some templates and cranked out some uber-simple content types. I worked like crazy and got it setup on a staging server, ready for content entry. It was the most basic, piece of junk website I had every created.

I showed up on Monday morning and the customer was overjoyed to have been able to work all weekend jamming content in. The asked for a few changes to the CSS, but really, all they wanted was to get something online that they can see and work with.

I’ve never written a website or mobile app without using a CMS since then.