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:
PHP was not supported natively. If memory serves me correctly, it took a plugin to enable it, not a configuration change.
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.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?