Why learning ColdFusion today is a waste of time.

Coldfusion: RIP

It seems I managed to stir up the ColdFusion world yesterday on Twitter by responding to a tweet by Peter Elst that read:

free coldfusion technical workshops, shame they're splitting it into separate Dutch and French sessions in Brussels -- http://is.gd/eLpJ

If you follow the link, you'll see that it leads to a blog post by Andrew Shorten from Adobe UK announcing that Adobe is offering free technical workshops around Europe to teach developers ColdFusion 8. That can't be bad, right? I mean free is good, isn't it?

My response, which kicked off a small wave of conversation was:

@peterelst Surely _they_ should be paying people to take Coldfusion classes; why waste time learning a dead-end proprietary technology?

The immediate response of an Adobe CF evangelist was to ask me to refrain from being a "player hater" (Adobe's so street these days, yo) and inform me that "ColdFusion and it's community pioneered the RIA movement", adding that ColdFusion "is paying for Flex/Catalyst" so I shouldn't "piss in my own pool" by dissing ColdFusion.

Man, that's some old-school Spanish Inquisition-style evangelism right there! :)

Before I move on, a little observation and fact checking on that tweet is in order:

ColdFusion did not pioneer the RIA movement, Flash did. Any rich-client technology in ColdFusion comes from Flash/Flex, not the other way around. We were building RIAs with Flash in Flash 5, before Macromedia acquired Allaire, even though the term had not been coined yet.

That's not to say that ColdFusion wasn't revolutionary when it debuted in 1995, thirteen years ago. It greatly simplified the creation of dynamic web sites and was subsequently copied by PHP and ASP. When I was creating my first web application, a pet project to build an online video catalog for my university's library, I wrote the back-end in C as a CGI. Coldfusion would have greatly simplified my task.

Finally, it's irrelevant whether or not ColdFusion sales are paying for Flex and Flash Catalyst development. Adobe needs to remain competitive with the Flash Platform and it's internal accounting is its own business. Coldfusion sales could drop to zero today and Adobe would invest as much if not more in Flash. The two are not linked in any way.

To get back to the topic at hand: why do I think that young web developers should not waste their time learning ColdFusion? Is it dead, dying, or alive and well and living in the enterprise?

Is it dead?

It's no surprise that people have been pronouncing ColdFusion dead for some time now. ComputerWorld famously included it in its list of The top 10 dead (or dying) computer skills.

Dave Lowe makes this point in his blog post from last year:

We know what our ideal server environment is (XServes + Apache + Python + Django) and we know there's a huge difference between what we're able to do now and what we'll be able to do in the future with that setup. But first, a little background.

I've been working with ColdFusion for 7+ years. It was the first server-side language I learned, and I've built many different web applications with it. I started out as very much a rookie programmer and gradually moved to best practices and started leveraging components for as much as possible. From there I quickly learned that ColdFusion didn't have much more to offer, and if I were to continue using it, I would be doomed to code redundant line after redundant line. On top of that, if I wanted any modern libraries that exist in the open-source world, I'd have to reinvent those wheels myself.

Is it dying?

It's a matter of perspective. I'm a web developer. As far as consumer-facing web applications go, ColdFusion has zero mind share. It is, effectively, dead. How many new web applications (not enterprise apps/intranet apps) do you know that run on ColdFusion?

It's not modern, it's not exciting, and it's not a skill that can be easily transferred.

To state that ColdFusion is dead, however, would be to deny the huge number of legacy ColdFusion apps in enterprises across the globe. No, it's not dead. But it is living out its last days in a comfortable retirement home.

Coldfusion is alive and well and living in the Enterprise

The first time I encountered ColdFusion, about eight years ago, was when I inherited a ColdFusion-based student registration application at a prestigious law school in the US. It was linked to an MS Access database and would, like clockwork, go down every year on registration day. Not the best start to a relationship but definitely not unheard of in the ColdFusion world where the promise of non-programmers creating applications creates for good marketing but crappy applications.

However, it is good marketing that sells to enterprises and I'm not surprised that Adobe is still selling CF to enterprises today. They'll probably continue to do so. More power to 'em.

Enterprise, however, is not the web.

Why you have better things to learn than ColdFusion

If you're just starting out as a web developer and you'd like to spend the best years of your career maintaining legacy applications in an enterprise then, by all means, learn ColdFusion.

The simple truth is that in the age of Web 2.0/3.0, in the era of cloud and utility computing, the application server is a commodity. A commercial, proprietary app server simply cannot survive in this environment anywhere outside the lethargic, soft-padded walls of the enterprise.

That's why I feel that it's a waste of time for a developer to learn ColdFusion today and I don't see how an impartial party (i.e., without short-term financial self-interests) could, in good faith, advise any young developer differently.

If you want to work on cutting edge Web 2.0/3.0 sites, learn modern development paradigms, deploy applications on the cloud and possibly reach and affect millions if not billions of people, then learn Python or Ruby (and less so PHP), and, of course, JavaScript. Learn Flex and ActionScript. Learn Objective-C, AIR, and QT. More importantly, read up on MVC and understand how frameworks like Django, RoR, and CakePHP work. Learn about graphic design, user experience design, web standards, and accessibility. Those are skills that will not only make you a better designer and developer but that you can reapply and reuse, even if the technologies themselves eventually fall out of favor.

But surely you can learn ColdFusion too, especially if the course is free, right? Sure you can. But there's free and then there's free. The opportunity cost of your learning ColdFusion is the time you will be wasting not learning the relevant skills and technologies of our day. And time, given all that there is to learn and experience out there, is your scarcest resource. When you factor in the opportunity cost, free starts to look rather costly.

What's the big deal?

I'm very passionate about education, and it saddens me to see, for example, that kids in the UK are being taught a computer education curriculum that is almost entirely focussed on teaching them secretarial skills with Microsoft products. It's very important that we give the next generation a modern set of computing skills; these skills are the new literacy. I was lucky enough to have had some great mentors at a time when personal computing was still in its infancy and I want to make sure that my children have the same, if not better, opportunities for achieving literacy in the information age. This is a topic that I will, no doubt, continue to explore in future blog posts and it is an area that I want to get more involved in — at least in the UK — with the aim of actually helping improve the status quo.