Resisting the Urge to Build Custom

People in the web design and development world go through some defined stages, like teenagers. Only there is (slightly) less drama and more, well, web development.

The most important stage, to me, is the stage where you build everything custom. From the ground up. I was and still am a huge fan of CodeIgniter as a basic code framework, but I still liked building the things that managed the sites I built.

One of the reasons for this is it is part of the learning process of coding. Coding a blog sounds fun, so why use someone else’s blog they coded and integrate it? That’s where you learn how things fit together and how great code is born. If you never try your hat at building something like your own content management system, you can miss out on some great learning experiences as a developer. You learn to appreciate how great systems are put together.

That’s really where my coding education took place, and after some time I learned to appreciate the benefits of using other code and other solutions to build something.

Why am I mentioning this? Because very often, the idea will be floated within a Catholic school that a portal or CMS should be built from the ground up to suit their needs. We’re not saying that this is an idea floated by novice developers or web pros, but I’d like to argue that this is the wrong way to go, for several reasons.

Don’t Spend Money Solving Old Problems

There are hundreds of web content management systems out there with dedicated teams working on them – bug fixing, keeping up with new features on the web, creating new features, etc. These content management systems have solved all the problems already. Even if your web team doesn’t feel like the problems of a particular solution have been solved they way they want them to, there is definitely a solution out there for them that has.

Existing Solutions Come with a Community

Having a department build a CMS leaves you in a tricky situation when it comes to support: there is a very limited number of resources available to you. If the person who coded something moves on, then there are no forums or communities available to help solve your problem. The only one who knows the system is the person or team that built it.

Additionally, 10 years down the road, the CMS that was built for your school’s site might not even work. We may be into PHP 10 (we’re on 5 now), or another language altogether, and your site running PHP5 may be too ancient to keep up. A community or company behind a solution means you won’t be left in the dark to start all over.

It Doesn’t Have to Be Open Source

We have a favorite CMS that we use that is – gasp! – not open source. We purchase a license each time we build a site using it. It’s called ExpressionEngine, and for us, there is nothing better for building websites anywhere. And believe me, we’ve looked everywhere.

ExpressionEngine costs $150 for a non-commercial license (a commercial one is $300). Yes, there are content management systems that cost $0, but when we need support, there is a dedicated team in the ExpressionEngine forums there who are paid to answer questions and solve problems. For an organization, that can be well worth a few hundred dollars.

Adopt a System, not a Frankenstein

The real power of a great CMS is its ability to organize and structure pieces in a modular way. ExpressionEngine does this through a series of code APIs to create field types, modules, and plugins that hook into the core system in a standard way. WordPress has a standard plugin structure. Nearly every well-done CMS has something like this.

The benefit behind this is custom functionality – developers can create custom addons that hook into the system, adding to the code in an organized way. You can get a Calendar plugin for WordPress or write one on your own. ExpressionEngine has one built in, but you can choose from hundreds of free and commercial plugins available or build your own. There is a standard, organized way of doing things.

The alternative to this is bringing together the best of several CMSs and trying to make those work together. For example, WordPress for a blog, and ModX for the teacher’s sections, and Drupal for the main site. The result is a ton of redundancy, and a conflicting and unmanageable creation. Working with one system will help organize and standardize things on the back end for continuity down the road.


We’re not saying anyone who wants to build something custom is a beginning coder or naive. Catholic schools have a myriad of demands in terms of functionality and structure, and it can often times seem to be an easier route to just start from scratch.

What we’re saying is that adopting and sticking with a system has a lot of benefits that include support, a community, upgrades, and continuity after the people who coded it have moved on. So when in doubt, find a system that works for your organization.

Tags: , ,