All in the <head>

– Ponderings & code by Drew McLellan –

– Live from The Internets since 2003 –

About

Writing The Code is the Easy Bit

18 May 2004

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.

- Drew McLellan

Comments

  1. § Basil Crow: Just out of curiosity, are you planning to release the source for this CMS?
  2. § Drew: No plans at the moment, but as there would be vast commercial advantages to doing so, I wouldn’t rule it out completely.
  3. § Simon Jessey: Isn’t there some sort of JavaScript or CSS hack that one can use to seal up the crack, so that it is impossible to disappear up one’s own arse?

    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.
  4. § Seth Messer: I agree totally. I had written a little ecommerce system for a client, and had done it in PHP and MySQL, and even though I’d use those same tools again, I’d definitely approach it completely differently. So now it has flaws, that I originally had not anticipated.

    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
  5. § Nathan Pitman: Hi there, I’d just like to say what a pleasure it is, to be the person that stops Drew from disappearing up his own arse. :)
  6. § Drew: (and very good at it he is too).
  7. § Goynang: Crikey!

    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).
  8. § Nathan Pitman: Off the shelf may sound great, but in reality you may well spend the same amount of time required to build a bespoke system trying to customise it to meet your needs! :)
  9. § george: I like how PHP is moving more towards OO. Simply because it makes planning so much easier. Crack open a good modelling tool ( and a pencil, rubber* , ruler and bit of paper). I like the saying if you cant plan it you cant code it. Of course another advantage is the fact that classes tend to be highly reusable, hell you could even build your own MVC framework. Then your head can go right back up your arse again, mine did, that is my own not yours ;-0

    *For the Americans this means eraser

    George
  10. § Tonico: Security policies, multi-author setups, versioning, and all those other things you wish youd never heard of.

    FWIW I learned to love the Zope application server.
  11. § ozzy_cow: oddly enough, I’m just customizing a PHP/MySQL CMS for a customer. Check out EZ Publish http://ez.no
  12. § Kris: Write down your goals and global architecture on a big piece of paper (with plenty of space left) and put it on the wall in front of you. Always meet the goals, all else is potential feature creep. As you progress building it, distribute analasys of how to tackle the problems evenly over your architecture, so you will see what will affect what.

    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.

Photographs

Work With Me

edgeofmyseat.com logo

At edgeofmyseat.com we build custom content management systems, ecommerce solutions and develop web apps.

Follow me

Recent Links

Affiliation

  • Web Standards Project
  • Britpack
  • 24 ways

I made

Perch - a really little cms

About Drew McLellan

Photo of Drew McLellan

Drew McLellan (@drewm) has been hacking on the web since around 1996 following an unfortunate incident with a margarine tub. Since then he’s spread himself between both front- and back-end development projects, and now is Director and Senior Web Developer at edgeofmyseat.com in Maidenhead, UK (GEO: 51.5217, -0.7177). Prior to this, Drew was a Web Developer for Yahoo!, and before that primarily worked as a technical lead within design and branding agencies for clients such as Nissan, Goodyear Dunlop, Siemens/Bosch, Cadburys, ICI Dulux and Virgin.net. Somewhere along the way, Drew managed to get himself embroiled with Dreamweaver and was made an early Macromedia Evangelist for that product. This lead to book deals, public appearances, fame, glory, and his eventual downfall.

Picking himself up again, Drew is now a strong advocate for best practises, and stood as Group Lead for The Web Standards Project 2006-08. He has had articles published by A List Apart, Adobe, and O’Reilly Media’s XML.com, mostly due to mistaken identity. Drew is a proponent of the lower-case semantic web, and is currently expending energies in the direction of the microformats movement, with particular interests in making parsers an off-the-shelf commodity and developing simple UI conventions. He writes here at all in the head and, with a little help from his friends, at 24 ways.