Lightweight vs Heavyweight
Nik Silver has a thought-provoking piece on Heavyweight vs Lightweight content management. As the (former) architect of what you might call a middleweight CMS, I find his argument almost totally wrong. As far as I can tell, it amounts to a false syllogism that goes like this:
- WordPress is a lightweight CMS
- The Guardian use a heavyweight CMS
- WordPress cannot do everything needed for the the Guardian website
- Therefore, a heavyweight CMS is better than a lightweight CMS
I think the argument he’s trying to make is that a well-designed system with a judicious amount of abstraction is better than one without the abstraction. But I don’t follow his argument that any changes to WordPress would necessarily result in unmaintainable code. In fact, there are numerous newspapers who use WordPress, and several very high traffic sites that use it too. His argument is basically a retread of the tired old-skool IT dirge “but this isn’t enterprise software”. I find this surprising given that Nik is an eloquent advocate of agile methodologies and should, in theory, be sceptical of the idea that software needs to be big to be effective.
He says:
Lightweight is often good, but it must have its tradeoffs, otherwise other technologies wouldn’t exist.
Really? He seems dangerously close to the ‘one true language’ trap here - an El Dorado of a language that would be perfect for every job and everyone would agree on. This is absurd. Heavyweight software will continue to exist for a long time in my view, mainly because of the vested interests of the corporations that sell it. And not all heavyweight software is bad of course.
Every single decision you make when designing a software system is about compromise - manageability vs performance, explicitness vs extensibility, productivity vs complexity and so on. Every system you ever use has tradeoffs: not every system needs to be extensible, and not every system needs to be optimised to the limit. I prefer the Pragmatic Programmers’ advice: “do the simplest thing that could possibly work.”
To suggest that WordPress is, out of the box, a viable alternative to an existing bespoke system is faintly silly. Is WordPress the cleanest abstraction possible for a CMS? No - it’s targeted pretty much exclusively at blogging. But to suggest that there’s something difficult about getting ads into a page is a bit weird - check out TechCrunch if you don’t believe me.
Lightweight languages and frameworks (for example, Ruby or Python) are all the rage because they make developers very productive. There are downsides, performance being the most often raised one. Many of these downsides are FUD though. Everything I see at the moment leads me to think that the days of Java and C# are numbered as the ‘enterprise way’. The productivity you can get out of things like Ruby on Rails is so great that people are going to be forced to re-evaluate the ‘heavyweight’ options. The (perceived) performance problems of scripting languages are sure to go away. Remember the days when people hand-wrote assembler because they didn’t trust the C compiler to optimise their code properly?
In 2007 I failed to learn a new programming language, although I dabbled with Objective-C and Cocoa. 2008 will be the year of Python (with a smattering of PHP) for me. There are many places to read more about extending your language knowledge, but I recommend Martin Fowler’s One Language and Improvement Ravine.
