Software design is hard. Yeah, I know no one said it was easy, and it’s certainly a lot of fun, but damn it’s hard. I’m currently working on a PHP/MySQL based content management system, largely based on the lessons I learned after spending the best part of a year building an ASP/SQL Server based CMS for a different company. But you know what? The decisions don’t get easier with experience, they get harder.
When building a system that is going to be used by real life users (who have paid you money and know how to use a telephone) you learn an awful lot about your products very quickly. You find out what sort of things the users want to do that you hadn’t anticipated, and you learn what features are going to be requested. You also learn the limitations of your architecture and framework, and before too long you can begin to curse those decisions that you made early on.
They say ignorance is bliss – and that’s certainly true when it comes to designing a web content management system. The more experience you have, the more you know, so the harder the decisions become. Writing the code is the easy bit. It’s the architectural decisions, the implementation strategies, the points and degrees of abstraction. Security policies, multi-author setups, versioning, and all those other things you wish you’d never heard of. After a while you can accurately predict the user response based on the choices you make, which leads to more choices and tougher decisions.
The real danger, however, is that of disappearing up ones own arse – a problem that I think can only be alleviated by having a colleague to discuss the issues with and bounce ideas off. You can’t do it alone without ending up in a padded cell. Don’t be afraid to phone a friend. Writing the code is the easy bit.



Comments
Seriously though, I think you are absolutely right. It is a bit like having money. The more of it you get paid, the less of it there seems to be available for those nice things you wanted to buy.
I just finished the “community” section of my CMS software to where many different users can post on my blog, I plan on adding a lot more features in the future to it, but like most dev. projects its just an ongoing thing. :D
You sound just like me! I’m currently going through exactly the same process as you and could have written this blog entry word for word myself.
Our company’s CMS is written using JSP, some custom tags and a whole load of black magic.
Everyone seems to want a different thing out of the system. Some people care about multiple authors and workflows, others don’t. Some people care about multiple languages, others don’t. Etc etc etc.
Trying to write one system to handle all eventualities yet is still simple to use if proving a bit of a pain.
The option of using off-the-shelf software always raises its head at some point. What’s your view on that? I’ve not really seen anything that impresses me (although I’ve only really looked at open source stuff so far).
*For the Americans this means eraser
George
FWIW I learned to love the Zope application server.
It is like painting. Don’t start in one corner and end in the other; instead, start with a basic layer, then add another layer of more detail, and another one till the painting is finished. At any point in that process you will have something you can look at and judge as a whole.
It’s what was taught to me in art school. Just a thought.