There is no silver bullet


Devviness rating ★★☆☆☆ 
Funkiness rating ★★★☆☆ 


As every good developer knows, there is no silver bullet in software development: no language, framework or toolkit can solve any problem, and a big deal of the effort required for any task depends on the choice of the right tool. 

This may seem evident in ordinary construction (or is there anybody who would use a screwdriver to cook pizza?), but when it comes to software it’s often easy to be biased by previous experience or personal, religious views.

Even worse, the wrong tool choice may be imposed by management: usually it’s a former-programmer-now-become-manager who forces the whole development team to use his favourite language/framework/toolkit/set of practices, ignoring that the word “former” in his role means his knowledge is, at best, outdated (this is the reason why young coders are still being forced to learn vintage technologies such as PL/SQL or JSP).

As common knowledge says, anyway, management and the funky developers speak different languages, so what we call “silver bullet” in management-ese sounds like “enterprise”: it doesn’t matter if your tool is right or wrong for your problem, if it will speed up your coding or will sit between you and a delivered project waiting to be dribbled, what usually matters to the pointy-haired bosses is if it’s “enterprise” (which probably means every pointy-haired boss in the world has a secret passion for Star trek).

Let’s pick a real world class of problems as an example: CMSs.

According to Wikipedia, a CMS is “A content management system (CMS) is a computer application used to create, edit, manage, search and publish various kinds of digital media and electronic text”, which seems pretty straightforward and not enterprisable; do we really need an enterprise technology to efficiently setup a CMS-based website?

Short answer: no.

Long answer: no, and let’s see why using the most famous Java-based CMS around, OpenCMS.

(Note: in case somebody didn’t know, “enterprise” and Java are almost synonyms)

OpenCMS is the typical, almost paradigmatic case of a tool that keeps on growing in size and complexity to be as enterprisey as possible until it becomes a giant Moloch that stands in the funky developer’s way instead of letting him run freely through his own path towards a working project.

Let’s think of the most common operation you might want to do on your customized CMS: developing your own module.

Typically, a CMS module is a small snippet of dynamically generated HTML dropped in your pages, whose content is usually generated by server-side scripting; usually, CMS modules aren’t very big in terms of lines of code and computational cost, because they constitute just a small part of the page which is (as the “C” in “CMS” may suggest) focused on its main content.

So, developing a custom CMS module shouldn’t be an enormous project and thus it shouldn’t require most of the infrastructure required by medium-to-large sized software projects: what is really needed to develop a custom CMS module is a good text editor (an IDE may even be too much) and a quick and easy way to test quick and easy modifications to the source code.

OpenCMS provides a built-in text editor and WebDav support to import and export modules via http, which works in combination with the Eclipse WebDav plugin to allow importing and exporting to and from your Java IDE.

Sounds cool, isn’t it?

Unfortunately, the built-in editor looks like this:

OpenCMS Screenshot

OpenCMS Screenshot

(click image to see it full-size. Warning! May damage eyesight)

which makes it completely unusable.

Using WebDAV on an OpenCMS website, instead, requires an afternoon of configuration tweaking to your application server to be set up, and another afternoon of tweaking your Eclipse environment to reach a wonderful speed of 1 shortcut + 5 clicks + TILDE20 seconds waiting for the server to answer to deploy every single change to any source file.

“No way, i’m using FTP to upload my modified files on the application server”

Are you kidding? FTP? FTP isn’t enterprise! Call an exorcist!

OpenCMS, which is *really* enterprise, doesn’t expose its file system to you funky bastards who want to be in control…OpenCMS HAS ITS OWN FILESYSTEM.

It’s called VFS, which stands for Virtual File System, and is probably a hybrid obtained breeding a real filesystem with a db (i don’t really want to know the details, i may be embarassed), and what’s really enterprisey with it is that it can’t be accessed in any way other than OpenCMS’s own file explorer or WebDAV.

I can only imagine the amazed look on your faces, now…but the really fun thing about this OpenCMS and VFS stuff is that…somebody actually uses it!

Obviously, the number of poor people frustrating themselves with such torture is waaaaay smaller than the one of people using a working, PHP-based CMS (and this alone should be a reason NOT to use OpenCMS…unless you don’t care about user knowledge base, documentation, plugins and similar stuff), but there really is someone using it, and it’s probably someone whose management thinks PHP is good only for garage-based fansites and Java is the only possible solution for enterprise projects.

So please, the next time you begin any kind of software project, please pay a little attention and spend some time choosing the right bullet for your target, as excluding some technologies due to religious issues (yes, ‘enterprise’ is a religion, since it makes its integralists completely blind) will most likely cause you utter pain.

Besides, once you discover that the best technology for your project isn’t in your skill set, the funkiest thing you can do is to learn something new instead of dumping it and sticking with your old-fashioned framework :)

Add This! Blogmarks BlogMemes BlueDot BlogLines co.mments Connotea del.icio.us de.lirio.us Digg Diigo Facebook Google Google Reader icio.de IndianPad Leonaut LinkaGoGo Linkarena Linkter Magnolia MyShare Yahoo! MyWeb Netscape Newsgator Newsvine reddit Rojo Segnalo Shadows Simpy SlashDot Spurl Startaid StumbleUpon TailRank Technorati ThisNext

,

  1. #1 by Orla - March 4th, 2009 at 15:51

    Nice post!

  2. #2 by hal - March 4th, 2009 at 15:52

    You are right Raibaz. I had a similar working experience… :(

  3. #3 by Raibaz - March 4th, 2009 at 15:55

    I had more than one, unfortunately :(

  4. #4 by Dave - June 2nd, 2009 at 15:39

    As someone who inherited a network of over 40 Open Cms websites, I can hereby recommend that NOBODY uses Open Cms. It’s the worst experience of my life, and does make me almost want to jump off a clip. I agree with all that you say.

(will not be published)
  1. No trackbacks yet.