1

Note

When this question was originally posted months ago, I worded it to sound relatively neutral. Whereas it has been answered in a way that seems probably valid and that I would be tempted to accept, I think I just really need to update the question to bring my basic concern front-and-center at the beginning, leaving all the earlier, more neutral contents in place:

As far as I have seen, CMSs get in the programmer's way a lot for what seems to be little to no benefit for a developer. Maybe a journalist needs this kind of hand-holding to build a website, but when I tried a CMS out myself (it was WordPress), there was zero perceivable benefit, even in terms of content management! Do a programmer, an artist, and a journalist all need to work together in a way that the artist and journalist can change their content without involving the developer? Fine - that's why you put content in its own separate files and code accordingly. Do you need to load the same, updated contents in multiple places? Use scripting languages and such to accomplish this. You do not need a CMS that disables and hinders the programmer in many ways in order to do this.

It was not my intention to put something like this at the top, but I think part of the problem I'm having understanding this is not being communicated well below, so I've put this at the top for clarity. If someone can answer this in a way I can understand, I'll pretty much accept their answer.


The Concept of a CMS

The basic idea behind a CMS is to combine web development, artistry, journalism, and so on into a single, user-friendly* aggregate, by which an organization can not only develop a website, but also better coordinate such an effort and potentially more easily automate certain parts of the process.

.
.
.

*...Well..."user-friendly" seems to be somewhat conditional on there being a team of people working together on a project, particularly if they are not all programmers.


Background behind the Question

I remember being tested by an organization some time ago to see if I could write something in particular and get it up and working on a cloned WordPress instance, and part of this had to do with the fact that I had not previously been exposed to WordPress. In fact, this was my first time using a CMS, and I developed a little bit of a bad taste for the concept. What should have been a relatively trivial programming assignment with HTML, CSS, JavaScript, and PHP turned out to be a minefield just trying to circumnavigate all sorts of seemingly unreasonable restrictions, assumptions, and so on built in to the CMS.

I'm going to come back to the positive side of a CMS in just a second, but first some example negatives in the case of WordPress:

  1. PHP was not supported natively. If memory serves me correctly, it took a plugin to enable it, not a configuration change.

  2. It was unnecessarily difficult to read, let's say, a list of countries out of a json file. The file had to be stored in an unnatural location to make WordPress allow it to be read by JavaScript, and the simple fact that the file's extension was .json was something WordPress felt was "too dangerous" or "too complicated and low-level" for a normal programmer to ever want to deal with.

  3. Line breaks were inserted into the HTML, without user feedback to the developer, even when the HTML was written directly by using the code editor. And I know there's a setting in the WordPress configuration to change this, but aside from having to run back to the system administrator to get read/write access to the installation files to change it, their documentation gives you two function calls to insert into a certain file without telling you where in that file to insert them. Put them in the wrong place (the file is thousands of lines long), and WordPress won't work. - This breaks JavaScript containing blank lines for formatting.

And before it was over with, there got to be maybe 20 or so different completely unnatural roadblocks I had to get around to implement a very basic contact form.

So now the positive side:

Months later I attended a WordCamp with an open mind, hoping to find out why so many people would prefer this over "ordinary" web development. The basic answer I got out of that is more-or-less the following:

You're not always going to work with other programmers. Especially if you have a somewhat popular site, then artists, journalists, bloggers, musicians, and other kinds of talented people will either become a part of the team or work alongside it. Oftentimes your non-programmer clientele will need to make frequent changes to the website (sometimes altering the way data is presented, not just the data itself), and having a nice, big GUI that acts like a server with multiple users that manages this - and helps automatically integrate content into code - can really save time, trouble, and stress.

Alright...So what if you don't have non-programmer artists, journalists, bloggers, etc. consistently involved? And in particular, what if you're the only one who's really making very many modifications to the site?

Yes, you can separate content from presentation through a CMS, but if you code like you're supposed to, it'll already be quite separate in your files and site structure.

And yes, people keep saying there are all sorts of plugins, but is that any better to a programmer than there being all sorts of SDKs in more code-style development platforms? What's more is that, at least in the case of WordPress, many of these plugins are there for no other reason than to get past serious roadblocks imposed specifically by the fact that you're using the CMS (such as points 1 and 2).


Personal Opinion

I'm not sold very much on the idea of a CMS at all, even when coordinating with more artist-like people. It's too much trouble for what appears to be too little gain. As a general rule, every layer of abstraction costs you the ability to do and to control certain things you may want to utilize, and a good programmer will mostly separate content from code anyway.

This is enough to allow clients to just copy and paste files with the content over an FTP or something without assistance from the developer.

I know my experience has only been with WP, but supposedly, 20% of web developers these days use it. I honestly saw very little reason to use a CMS, at least until they really improve...BUT I am trying to keep an open mind and listen for things I may have missed.


The Question

So something I have been wanting to ask on here for a while, because nobody has explained this very well:

The idea of a CMS is fairly popular right now. Many people almost automatically flock to one, even if they are experienced web developers accustomed to using text editors. Why would you want to do this, thereby introducing certain kinds of obstacles, in situations where you're not dealing with a bunch of people who are not programmers?

5
  • 1
    wait - you were trying to code PHP for a WP plugin through the CMS? there are better ways to do that
    – HorusKol
    Apr 2, 2015 at 1:31
  • @HorusKol It wasn't really for a plugin. Apr 2, 2015 at 12:34
  • 1
    I really don't understand what you mean by "php was not supported natively." It's written in PHP, it doesn't support PHP, it uses it. I think you didn't really read the instructions perhaps, and didn't understand that php belongs in php files not in the text of an article. It is content management not an IDE.
    – Elin
    Apr 4, 2015 at 1:47
  • 1
    Wordpress may not the best example of a good CMS. I've heard a number of people migrate away from it, or not choose it for what sounded like legitimate reasons. Oct 27, 2015 at 15:45
  • 1
    Have you ever had to maintain a site for more than a few months where content updates were coming in a sporadic fashion that you had to push each one with approvals and formal process? A CMS can automate most of that quite nicely but I wonder if you've seen that other side first.
    – JB King
    Oct 27, 2015 at 21:23

5 Answers 5

3

It's a tool, like any other tool. If it's a poor version of the tool, you look for a better quality one.

I've often thought that a Wiki would be a good tool to have in any software development shop. Basically, what you want is a giant searchable electronic multimedia diary, where everyone can contribute. While it has some of the features of a CMS or DMS (including the ability to link and categorize documents), it also has the ability to chronicle the thoughts, difficulties, solutions and conversations that the developers have, so that they can return to it later for reference.

Sound familiar?

You don't need artists to maintain such a repository. You just need people with the willingness to communicate.

1
  • Accepted because of the first paragraph, as well as a comment you left on my question. Feb 8, 2016 at 13:37
6

Apart from the reasons already mentioned, my main reason for choosing, or writing, a CMS is so that the web site can be frequently updated without having to call on me. I am a programmer not a copy writer, you would not ask me to write your advertising copy for a magazine after all. The single biggest problem that I have faced over the years was to actualy get the content from the client in the first place. So providing them with the ability to enter and edit the content once the site was finished, finished from my point of view that is, is immensely attractive.

Relevent, accurate and frequently updated content is the best way to improve one's natural ranking on search engines. A CMS is the best way to acheive this, unless you enjoy copy/paste from word/email to html yourself that is. Personally it would drive me crazy: I am a programmer not a copy typist.

5

A good CMS is a force multiplier for a web developer. It gets a basic website up & running very quickly enabling you to concentrate on developing modules (in PHP if you pick the right one) that add the customer specific functionality. Basically you do more for your customer in less time but (hopefully) get paid the same - because you're being paid for results, right, not billed hours?

To pick Drupal as a good example, it is not actually a CMS. It is better to think of it as a web development framework that happens to ship out of the box with a reference implementation of a CMS.

What you were doing with Wordpress was the wrong idea and it gave you a bad impression. You should have written a Wordpress plugin in PHP rather than trying to embed PHP in pages which is what you seem to have done based on your description

3

Let's look at what a CMS is for:

From http://en.wikipedia.org/wiki/Content_management_system

A content management system (CMS) is a computer application that allows publishing, editing and modifying content, organizing, deleting as well as maintenance from a central interface.

Now, there have been some moves by some CMS providers (like WordPress and Drupal) to enable some PHP coding through the content management interface. This is a terrible idea - as your experience showed.

A good CMS has a well-documented API (I know Drupal does) and well-documented approaches to writing modules and plugins to enhance the behaviour of the CMS framework.

As for you question - a developer should use a CMS for when they want publish content simply and efficiently - like a developer who blogs. Or if you're a solo developer working for an ecommerce store - use a CMS with modules to support ecommerce, and you will have a much simpler time managing the product line.

Ultimately, as a solo developer, you may choose not to use an off-the-shelf CMS and write a custom script framework. But eventually, I'm pretty sure you will end up developing something that looks and behaves like a CMS.

2

There are several substantial benefits of using a CMS for content management in a team of developers.

  1. Knowledge required to publish content. Let's imagine I want to write an article. With any CMS, that's easy. I walk through the menus, and a few minutes later have a grasp of the system.

    What happens if I have to discover the internal workings of a home-grown project that I need to modify to publish content? I have to know naming conventions. I have to know how to compile the project. What about regression testing? In most projects, deployment is a nightmare, and the number of errors and blocking points you can get when doing a minor change are often overwhelming.

    Some developers in your team may not necessarily want to explore the internal workings of your home-grown project. Some may not even know the programming language used by the project, and not willing to learn it.

    Writing an article shouldn't be more difficult than a few clicks, and a CMS is a perfect tool for that.

  2. Other technical knowledge.

    I have a blog based on a home-made blog engine. I love the engine, but it has a huge drawback: I have to write articles in a simple textarea and use extended Markdown syntax. There are no pretty buttons for bold and italic text, and nothing much to help me when I forget the syntax.

    And forgetting the syntax happens to me very often. For instance, I have no idea how to create a footnote, or a dialog, or a table. I remember that I did that in previous articles, but I have to find them and copy the syntax.

    With developer-oriented solutions, this happens all the time. How do you create footnotes in code? When you need to add a picture, where do you put the image file? With an enterprise-scale CMS, all those features are easily accessible; you don't have to think about them, and so you can focus on important things, that is the content.

  3. Iteration duration.

    How long does it takes to, say, correct a typo or add a comment in a CMS? A few seconds to a few minutes, depending on the steps such as authentication.

    Do you think it will be practical to edit source code to add a short comment, or to make a delivery just to correct a small typo? If the answer is no, this means that you are losing opportunities because of technical constraints you can easily avoid by having a CMS.

  4. Extensibility.

    Take SquareSpace (although not a CMS, the following feature probably exists in a few CMS as well). They have a feature which resizes site images for different screen sizes. You can upload a 8 MB photo from your DSLR, knowing that the user accessing your website from a mobile device won't have to download the 8 MB file, but the rescaled image which takes a few kilobytes.

    How do you do that when your team is directly modifying the source code of the site? You create a tool which does that. The problem is that now, every member of the team has to know how to use this tool. Or you make it possible to do automatically by hrefing images to a specific service, but now the members of the team need to remember that they need to use the service. Half of them will not, leading to inconsistencies.

  5. Maintenance.

    Your home-grown solution will grow constantly. Team members will need different features, leading to more code. The site is a standalone project which should be managed as an actual project, which has technical debt to be paid, which can have regressions.

    The time you spend working on this project is the time you won't spend on other projects. This is unfortunate, since with a CMS, all you have to do is to update the engine regularly.

  6. Access from everywhere.

    Most CMS provide OAuth or similar authentication mechanisms allowing you to connect from anywhere. The fact that they require only a browser makes it possible to change content from practically any device: you can be writing an article on a tablet in a train or posting comments with your smartphone in a subway during your morning commit.

    Making is necessary to modify the source code in order to change the content, on the other hand, creates additional barriers. While basically the only two things you need is a text editor and a version control system client, this may not be that easy to have. Do you have vi on your smartphone or a git client on your tablet?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.