I realise that when I make sites, I am a bit of a maverick. My blog runs off DocBook, for a start (and to my knowledge, there are no other DocBook-powered blogs out there). The received wisdom is: never bother writing your own system. CMS’s have been done to death by everyone and his dog, better than you will manage in less time with no team. Nevertheless, I reckon there are still some situations when it makes sense not to use an existing solution.
You do not need a GUI. Writing a GUI is a complete pain, and you will never get this right on your own. On the other hand, this is where most solutions fall down because a huge amount of the development effort is focussed on the web front-end to the CMS, when most sites do not need one. Many of the sites I administer are updated and edited more conveniently from the command line and synced to the live site, more recently using
You will need to write a pile of custom code wherever you go. If your needs are entirely served by some existing solution plus its plugins, you’re an idiot if you don’t go for it. There are plenty of gaps in the existing market though, and you will probably find yourself writing a Drupal block or two, or hacking some Wordpress plugins, and so on, if you go with an existing solution. The trick is work out how to minimize your work. Zero work is clearly optimal, so you should not consider rolling your own unless you know you will have to write at least some code anyway.
You have the skills and toolkit. Over the years, I have built up dozens of servicable extensions and snippets in my folder I can whip out as needed. Working from scratch is not worth the hassle.
You have time on your hands.
The CMS will not reduce the amount of code you write much. Suppose you have a simple site, with only 30 per cent of the code duplicating what the CMS would do, and the rest doing stuff which you have to maintain yourself anyway. For example, I am redoing the CICCU site at the moment, which has a simple menu system, some code for the sermons which does not line up very nicely with the queries or views that Drupal and others offer, some code for hostname-based display of college events, and bits of custom GCal. This is a case where using a CMS barely reduces the amount of PHP to be written and maintained.
The CMS cruft outweighs the benefit. Your three hundred line menu system is not perfect, but does its job and a competent webmaster after you can extend it if need be and you designed it well. On the other hand, a CMS demands constant updating, and subsequent webmasters have to learn its API to work with the fifty thousand line behemoth you used to replace your three hundred line menu system.
You have highly unique requirements.