In this post I’m going to talk about how the decision of which Content Management System (CMS) you use can affect the development of your website or application. What affect does it have on the developer, and what are the long term implications for the site owner. Does it take longer to build something from scratch? Is it always better to do so? What are the hidden costs of apparently cheaper one-size-fits-all solutions?
I will – hopefully – wrap up those questions with some insightful answers, and end with some kind of meaningful conclusion.
When is it right to go bespoke?
If you’re talking about clothing, the answer’s simple, every time you can afford to. In software development the decision isn’t always so clear. Also, how does this decision affect those of us on the project coalface? The answer to that question really depends on the project itself, as developing bespoke software may or may not adequately fit the bill.
Sometimes, although rarely, the requirement is for a simple brochure style website with a few pages advertising an event, for example, that needs to do nothing more than display a few words and some pictures. In that instance a program like Perch, which enables simple lightweight editing capabilities for small sites, really shines. Creating an online presence like that should be a cinch for any developer, and a pleasure to maintain for the site owner.
Perhaps you’re a celebrity, or a brand, and you want to share your news in a more conversational style than the traditional press release allows. If that’s your only requirement, then one of the many excellent blogging platforms would do the job perfectly. WordPress stands out for me as an example of something easy to install and configure, which is robust and well supported. We have developed WordPress sites for our clients, and when you stick with the intended functionality of the software, it’s a simple pain-free process. Working with a WordPress site after development is also pretty easy, and quick to learn, with many great themes available if you get bored with the way it looks.
Another new name in the world of blogging that’s well worth mentioning is Ghost. It’s a Kickstarter-funded project which Jason touched on last week in his Review of the week with a back-to-basics ethos people seem very receptive to. It’s interesting to note that a lot of new projects are in fact stripping away functionality and bloat in favour of finely tuned niche features.
Maybe your business sells a product and you want to move into the world of eCommerce. In that case you might decide to use ZenCart, Magento, or even Drupal. Each of these software solutions have been around a long time and are used by millions of other people, so they must be doing something right, right? In my experience that’s not always the whole story.
In the case of Drupal, for example, you are using software originally written to perform the function of a bulletin board which is now being used by literally thousands of websites as an eCommerce platform. Over time this lightweight BB platform has grown, organically, with disparate developers adding modules here and there to fulfil various other tasks. Today, Drupal can perform the role of almost any type of site. The trade-off being that it doesn’t do any of them brilliantly without significant investment to further specialise it to your requirements. Also, it’s now so bloated with unnecessary functionality that it’s very resource hungry. A Drupal site will often require its own server to run effectively where other systems can sit side-by-side in shared environments, running 20 or more concurrent sites. That said, no other CMS system tries (and succeeds to some extend) in doing so much, for free, straight out of the box.
Magento on the other hand is also free, written specifically for selling stuff on the web, and has a large developer community. I have personally developed a couple of Magento sites and I would say that it’s a very capable piece of software. Some of the code genuinely represents a benchmark study in object-oriented software design. Many large brands use Magento (generally not the free version) to successfully run high profile websites. You might therefore assume that developing a Magento site is nice and easy, and the obvious choice for open-source, free eCommerce software. In practice it’s actually quite complicated to use, with a steep learning curve for both the developer and site owner when it comes to maintenance. The documentation lacks depth and the aforementioned excellent object-orientation means that reading the intended workflow from code in isolation is time consuming, and often a bit of a head scratcher. The amount of work required to extend the core functionality of the software – even a little – is disproportionate to the task. With experience our developers have learnt to make it jump through hoops but that journey caused more than a few late nights, and would be a daunting prospect to unspecialised people.
A major player in the eCommerce world seems to have picked up on this problem. Amazon recently launched a new free (sort of) service called Webstore that boasts rich, modern features, simple set-up, and seamless integration with the Amazon marketplace. This gives us another clue about current web trends, moving away from DIY, or IIY (install-it-yourself) platforms, to hosted, configurable products.
So, if these packages all do their job, however well that might be, why go for something bespoke?
The answer is simple and almost unavoidable. At some point, you are very likely to require the software to do something it doesn’t do by default. If you decided to use a pre-existing CMS or software package, then you are going to have to change the system to meet your needs. At that stage you are investing in bespoke software, whichever way you look at it. It’s true that a lot of these platforms have modules, plugins or extensions that will do what you want. The support for these often expensive mini-apps ranges from amazing to non-existent. Also, quite regularly, there is no existing plugin that does exactly what you want – so you either change your business to suit what is available, or, again, invest in a bespoke solution.
As a developer you might reasonably be wondering why I care. What difference does it make to me?
I am often asked to step in and work with a business that has outgrown the functionality of their existing online software, but they don’t want to change it significantly. Or a client might ask for a particular platform to be used, generally because the skills required to maintain the software already exist within the organisation, so no further training is required. The ability to hit the ground running with a new project definitely has its advantages. These are all very reasonable situations backed by solid business reasons.
They do however give me a good perspective on the alternative, which is starting with or moving to, a business specific, bespoke solution that meets the current needs precisely and can grow with the organisation.
I think any developer would agree they love a challenge, and the chance to be exposed to varied software – we’re quite big on Laravel development as of lately. Therefore, refactoring existing systems or developing new functionality can be interesting and rewarding. Coercing square pegs into round holes is not a bad description of the average developer’s role – which is great for the developer, but perhaps less desirable for the person forced to engage their services because their critical business systems no longer fit the bill.
I often wonder if the attractive, seemingly cheaper route, is a bit of a red herring given the extra development time required to sculpt these packages into their final shape. Also, in terms of time costs I suspect it’s not as clear cut as you might first think.
Nothing these days is truly written from scratch; not music, literature or software. We all re-use our own code, written using frameworks which themselves build upon other systems, re-using widgets made available by service providers. As such, entirely new systems are not quite as bespoke as you might think, and that’s a good thing. Developers – good ones at least – re-use or refactor code they know works well as a time saving device, not untested dubious code from unknown sources. Therefore a lot of the basic functionality can be built quickly and effectively, leaving more time to create and test the brand new parts of the system for any given project. So, possibly less to worry about that you thought when it comes to the build time of a bespoke system.
Moving forward, what should you take away from this post?
If nothing else, it’s a good idea to give a word limit to humanities graduates writing blog posts. Other than that, it’s probably just a cautionary note to consider the hidden future cost of choosing these pre-existing systems. If you’re investing time and money to launch your product you want to make sure your choice of software is a good one. You want to be confident there is a buoyant community of developers so you can get help with any future issues. If the job is likely to change beyond the scope of the tool, don’t use it. Pick a package and team that can grow with you. Consider bespoke software if it’s appropriate, or use a package that is truly flexible while remaining effective at the task it was intended to perform.
Totally has been developing bespoke software solutions for nearly 20 years, during which time it has a accumulated tremendous experience in how to deliver successful projects to adequately address specific needs. Learn more about our solutions, see who our clients are and get in touch if you need experienced help with your project.