World of Xophe

Where Every Day is Xmas

Coldfusion

Is Coldfusion dying? Opinions differ, often passionately. Here's the take of a developer who's been with it since CF4, namely, myself.

No love for poor Coldfusion on the Adobe website

Turn back the clock to the neolithic years of the Information Age. The world (the Western World, anyway) lives in the shadow of Y2K and the impending apocalypse (biblical, digital, or both, depending on who you are) that could follow. The demand for technical skills to help avert said digital apocalypse is correspondingly high. In addition to Y2K, The IT industry is growing far faster than colleges can produce kids with CS (or CS-ish) degrees. Traditional hiring practices for IT jobs have gone out the window. Employers who demand that job candidates have a minimum X year's experience with technology Y often have to sheepishly scale back their requirements, after being informed that technology Y (Coldfusion being one of those Y's) is less than X years old.

I'm spending New Year's Eve in a backyard hot tub with half a dozen or so other inked, body-pierced, disaffectedly hip Generation-Xers, getting friendly with the raven-haired beauty sitting next to me. We're guzzling our gracious hosts' top-shelf tequila as we wait for midnight, and whatever descent into global anarchy may or may not follow. Trent Reznor's singing about how this is the first day of his last days, from a state-of-the-art CD player (prudently situated a safe distance from all of the alcoholic revery). Our host, my friend Matt, is a master of Java, Oracle, and a few other words I've vaguely heard of, and owns his own one-man consultant company. His girlfriend Misha, our hostess, co-owns their single-family home with him. She's a freelance web developer, and she does beautiful work.

Both of them make more money than most people twice our age...which hardly seems fair, but as elders sometimes need to be reminded, life's not always fair.

Like most of my friends, I have no formal training in computer science whatsoever, and yet, somehow still seem to be light-years ahead of our quaintly luddite elders in terms of general computer and internet savvy.

For example. I work in the investments department of a D.C. insurance company (not that I have any formal training in finance, either, but I'm good with Excel speadsheets, and getting jobs I'm unqualified for and then rapidly ascending the learning curve seems to be a developing pattern in my professional life.) Oddly, I seem to be the only employee in my company who recognizes, or is appropriately concerned by, virus-infected PCs. Recently, after noticing some quirky behavior on a few PCs in my department, and having my concerns casually dismissed, I brought in my 3.5 inch virus scanner/cleaner disk from home, and ended up scrubbing clean some fifty  infected desktops throughout my floor. Mind you, the company I work for manages multi-billion dollar union pension funds. Just doing my part to help the American working man/woman and his/her family.

I also have my own personal website -- a novelty in this early period of IT history. A few friends have seen it and expressed their approval, and people are curious to know what's involved in creating one's own site. It was easy, I say. I recently taught myself HTML at home, over the course of a couple nights, from a book I picked up at Borders. Just to make a few extra bucks on the side. Companies in and around the beltway are going crazy looking for people who can create a static website in a weekend. And HTML is ridiculously easy to learn. Like other tech-related acronyms, HTML seems to enjoy a certain esoteric mystique -- which quickly evaporates once you read about it and realize that it's just a collection of tags for formatting and positioning images and text.

Matt and Misha already know this, of course; nevertheless, Matt's impressed by my initiative. "So, did you do this because you want a career change?" he asks me from across the hot tub.

True to Gen-X form, I shrug. Career  is such a yuppie word. I dunno, I say. Maybe. Or maybe I just like the idea of corporate America paying me $60 an hour for side-gigs any literate sixth-grader could do.

Matt just smiles. In addition to his preternatural knack for things technical, he seems to possess an innate knack for seeing through people. He can often tell what they want, sometimes before they're even aware themselves.

"Dude, you think you're in demand now? Before you go home, I'm going to loan you a small book on SQL, which is even easier than HTML and should take you less than a day to finish. When you've read it, come back and I'll teach you Coldfusion.  And after that, I promise you won't be doing just side-gigs."

A week later, Matt was as good as his word. He taught me the fundamental tags of Coldfusion -- cfquery, cfif, cfoutput, cfloop, cfset, and the data manipulation functions, and looked over my shoulder as I wrote a simple CF drill-down application.

And that was my start. One day I was a junior investment analyst (which felt an awful lot like a glorified admin assistant), facing the unattractive reality that any significant career advancement necessarily meant a getting a Series 7, CFA, or more likely an MBA -- more  formal schooling, more  student loan debt, more  information to memorize that may or may not have much to do with actually doing the job. Investments are kind of cool, I thought, but the whole culture surrounding them seems married to a lot of silly myths. For example, the myth that good work requires a suit and tie, and ideally, the same hideous tie that your boss is wearing.

Then a few months later, that was all behind me, and I was a web developer  at a dot com. My days, now spent in t-shirt and shorts, became a coffee-fueled rush of coding, playing fusball, coding, free lunches, coding, flirting with female co-workers during company happy hour, then going home and studying and coding some more. And I was never happier.

All of which helps, I hope, in a roundabout fashion, to illustrate the climate in which Coldfusion emerged, and the need for which it was and still is particularly well-suited: RAD. Rapid application development.  Books have been written about the RAD methodology, but it's just a fancy way of saying "We don't need no freakin' specs, just get coding...we'll figure the rest out along the way." (Which really isn't as bad as I make it sound -- Agile is a subset of RAD).

Not that there wasn't schooling involved. George Mason University was offering a six-month certification course, aptly labeled Train to Technology,  for folks in the workforce who wanted to jumpstart a career in web tech, for which I signed up. But it didn't cost an arm and a leg and two digits per year as interest, and given the heavy market demand, was oriented toward getting what you needed to know solidly into your head as quickly as possible.

To illustrate CF's strength as a RAD language, T2T offered two tracks of study -- one based on ASP (Microsoft's Active Server Pages), and the other based on Allaire Coldfusion 4. I was going to take the CF route anyway, but I was told off-the-record that while both server-side languages served the same purpose – to produce dynamic, data-driven web pages - ASP was verbose and ungainly, and generally took three or more lines of code to accomplish what CF could do in one. Also, being tag and attribute-based, CF was relatively easy for one to pick up, especially if one were already familiar with HTML. Also, CF played well with non-Microsoft technologies. ASP, unsurprisingly, not always so much.

As I write this today, with Coldfusion 11 update 5 recently released and CF 12 slated for a TBD future release date, CF is barely the same animal that it was when I started working with it. The basic tags are still there -- cfquery, cfif, cfloop, cfoutput, cfset – but in comparison to CF4, it has far more features, is far more stable, far more secure, and far faster.

There are still a few unloveable characteristics of CF, the most unloveable to me being client scope variable management -- for Windows servers, client variables are stored in the host server's registry  by default, which, with a sizeable quantity of variables, is an excellent way to transform a perfectly good server into scrap metal. But in general I'd say CF today is still among the best in class for RAD. With Coldfusion components (which are essentially templates for object classes), I'd also say it's an excellent language for modularization and object-oriented design, especially given that it's built on top of Java and native Java functions can be called as easily as CF functions. And with the Coldfusion Admin interface, it's a snap to tell CF where your components live, so they may be easily accessed from any directory in your site/application without worrying about the relative path.

And developing in CF is as easy at home as it is at the office. The single-instance CF development server can be downloaded for free from Adobe's website and installed right on your home machine, and doesn't take up a lot of overhead. Get a free database like MySQL, and you have all you need to start developing (CF comes with its own WWW server if you don't have one on your home box). I've always liked CF especially because it takes a lot of the tedium out of web programming. It's NOT case-sensitive. The data manipulation make it easy to work with complex variables such as objects, arrays and structures. And as for debugging, ah, what a delight it is to work with...the cfdump tag makes it easy to view data without having to do any for x in y looping, or using the browser console (very nice when viewing in IE). And, when CF throws an error, it will usually spoon-feed you as to why and what page and line the trouble's coming from. Perhaps most importantly, I think CF makes it easy to grasp and use the MVC (model, view, controller) model of programming, which in simplied terms is about separating data (model), from logic and data handling (controller), from presentation (view). For a developer to understand MVC today leans increasingly more toward "need to know" than "nice to have".

But the question so far remains unanswered: is Coldfusion dying?

First of all, "dying" is a subjective term, and some of the debate I've read owes itself to different definitions of the term among the debaters. "Dying" may mean "no longer supported by its owner" to some, "diminishing in frequency and volume of use" to others, and simply "no longer a hot technology" to yet others.

For my part, the definition is purely practical – "Is it a skill often explicitly asked for by employers?" To which I would reply, from my observation, decidedly no. Just go on Indeed and do a search for Coldfusion. And it's asked for much less today than it was five years ago. On the other side of the coin, from the vantage point of an entrepeneur or CTO, I ask myself "Is there a compelling reason to choose this technology over another?" And the answer would be a definitive, unqualified "It depends."

While rapid application is always in demand, be it to start a business or just to stay  in business, mobile devices, social networking, and open-source frameworks have changed the landscape significantly. Today, people surf the internet and make online purchases with their smartphones and tablets more than with laptops and desktops. And with mobile internet speeds today that hearken back to the days of the dial-up modem, today it's all about reducing load times. AJAX has become the standard for loading parts of the page instead of loading the entire page. SPA - which stands for Single Page Application - has become the web buzzword du jour and Javascript frameworks such as jQuery, Node.js, Backbone.js, and AngularJS, along with the new features of HTML5 and CSS3 and responsive frameworks such as Twitter Bootstrap and Zurb Foundation, make it possible to create rich SPA's for mobile and tablet. What's more, it's hard to beat the price - none of them cost any money to use. Then there's Coldfusion, which sits as a middleman between the client and server, and which costs $4,250 per year for the enterprise version. CF is less and less in demand in my own experience. I used to searched Dice and Indeed specifically for Coldfusion developer roles, and given the sheer concentration of businesses here in Manhattan, along with the scarcity of CF developers, usually got a good number of bites. Today I don't bother even highlighting my CF experience. It's still there on the resume, of course, but I've found my front-end experience, specifically Javascript and its frameworks, is the skill most looked for.

That said, CF offers incredibly simple ways to make use of AJAX, including the ability to call CF object methods with a simple url. In CF, classes are written in files that end with .cfc (which stands for Coldfusion component. So for example, if you wanted to call the "getCustomer()" method of customerManager.cfc via ajax, passing in a customerID argument, you'd just write your AJAX get statement with the url "customerManager.cfc?method=getCustomer&customerID=123". And what was true of CF in the 90's is still true today: in just three to five lines of code, Coldfusion can do what most other languages, client-side or server-side, need ten to twenty lines of code to do. This is especially true of database queries. That saves a lot of time not just when the application is first being built, but also whenever fixes/modifications/enhancements need to be made...which from my observation tends to be almost constantly, for the rest of the app's life. With enterprise applications, development time is always money, and in this respect CF can potentially pay for itself. And then some. I can't help but wonder how many more businesses might use Coldfusion if their technical decision-makers were more familiar with it. Or had even heard of it.

So if CF is circling the drain, one might naturally wonder, why? And the most compelling answer can be seen, or more importantly, not seen, on Adobe's website. Go to Adobe's website and note what you see. The landing page is all about their real cash cow, Creative Cloud. You wouldn't know that Adobe even has a product called Coldfusion, even after clicking on the "All products" link. There is, in fact, no way to get to Adobe's CF page through the navigation. A specific search for "Coldfusion" needs to be done. This more than anything else answers the question pertaining to CF's state of health. Ask any business -- it's hard enough to sell a product when you're actually trying  to sell it. Much more so, when you're trying to draw as little attention to it as possible.

Poor Coldfusion, the abused, red-headed stepchild of Adobe, hidden away in the basement and allowed up only once in a blue moon for the ocassional conference. If CF isn't dying, one might be compelled to ask, "Why not?". 

This isn't good or bad, necessarily. All irresistible metaphor aside, Coldfusion isn't a child. It's a product which Adobe either sees or does not see worth using resources to promote it, and presumably based upon real sales numbers.

Yet, There are a good number of legacy CF customers, which is why I think CF will be around for a good time to come. I'm using it for this website, if you hadn't already guessed. It's an easy language to get used to; so easy that there's little incentive to migrate away from unless necessity demands it. (I've worked at companies that spoke of one day migrating away from CF to Java, PHP, Python, AngularJS...as far as I know, none of them ever set a date.) And Adobe dutifully supplies updates and support, and they are looking to add improvements and new features for the next version of CF, Coldfusion 12, aka "Dazzle", ostensibly getting user input for said improvements at the November 9-10 Coldfusion Summit this year in Vegas.

But the bottom line is, they're not trying to sell CF to new customers, and to date they have no active evangelists for the product. In other words, to use even more irresistible metaphor, while CF hasn't been sent to the slaughterhouse, or denied medical attention, it's certainly been put out to pasture to live out the rest of its days in dignity.

Or, just maybe, as Netscape did with Navigator back in ye olden days, Adobe secretly plans to release Coldfusion into the wild at some point as a free, open-source project.

I wouldn't go all-in on it. But as the Blondie tune says, "dreamin' is free."

Go Top