An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

CFML - Too Little, Too Late?

November 18, 2012 · 35 Comments

Originally posted as a comment on Nick Kwiatkowski's blog, this is a revised and expanded version of my thoughts on the "2012 State of the (CFML) Platform". The background to this post can be found in the following two blog posts:

First off, let me say that I admire the positive attitude behind the State of the Platform panel (and also behind Learn CF In A Week). It's good to see community efforts that are forward looking, trying to improve the perception of CFML and trying to make it easier to onboard new developers. The panel discussion led to consensus that CFML would be helped by several community-driven open source software packages, either commonly used applications or wrappers around commonly used APIs. It's good to see recognition that we need (a lot of) improvement in certain areas.

Nick mentions the traditional "technology lifecycle" in his post and asserts CFML is in the decline / decay phase. I'd hope that is not a controversial assertion - I'd be shocked if anyone really believed that CFML hasn't yet passed its prime? Perhaps you believe CFML is merely "mature" and hasn't yet started its decline but I'd say that is very rose-tinted and denies the facts of a declining job market and the trend we are seeing of companies migrating off CFML to other technologies.

CFML's place in the technology cycle is not something to be all "doom'n'gloom" about. It's just a fact of life and all technologies go thru this phase. COBOL, for example, has been in that phase for a very long time and there are still COBOL jobs advertised and there are still companies running their business on COBOL. But, being realistic, there are very, very few new developers who think "Yeah, I'll learn COBOL and build my career on it!" and overall there are fewer and fewer developers who are actively doing COBOL development these days.

I think it's important that someone called out the panel and follow-up post as being unrealistic. CFML developers have a tendency to a "ghetto mentality" and often lack broad exposure to other communities. That in turn means there's a lot of hiding heads in the sand and insisting everything is fine and CFML is alive and well. Over the years, there have been countless blog posts and magazine articles either claiming that CFML is "dying" or else responding to such claims, staunchly defending CFML. Let's be realistic: the CFML market is not growing, new developers are not choosing CFML over other technologies, companies are not choosing off-the-shelf solutions built with CFML (Mura is a notable exception but it is very much an outlier). Lots of words have been written about why this is the case and such discussions are often full of suggestions about how to "fix" these problems. We're talking about a technology cycle here. The natural way of things. This really isn't something you can "fix".

What you do need to do is figure out how you're going to adapt to a smaller job market and to companies migrating to other technologies. What are YOU going to do about your career?

LearnCFInAWeek is a very slick-looking community project and I applaud the team of volunteers that have worked so hard on it. As I said in my comment on Nick's blog, I think it's too little too late and I wish we'd had it five or six years ago before the decline really took hold. It would have been a great resource when developers still might have been persuaded to use CFML instead of Ruby / Python / PHP / .NET / Java / whatever. It is unfortunate that the very first page is a twenty four step process that requires an account with a corporation to even get started. Compare the process to what it takes with any of those other languages - heck, even compare it with the Railo Express process! - and you'll see that CFML is off to a bad start. Most developers will look at that first page and think "You're kidding?!? I have to go thru all that just to try CFML?" and we've already lost them. Frankly, getting Clojure up and running on Windows is a ton easier - and Windows is very much the red-headed stepchild of the Clojure world. If you want new developers to try CFML, it should be a simple download that you optionally unpack and then just double-click. And it shouldn't require a login. And it should be easy to find on the vendor's home page (ahem, Adobe!).

I interact with a lot of non-CFML developers all the time. Just this weekend I got the "ColdFusion? Seriously?" question again. To the vast majority of developers out there, ColdFusion is irrelevant. Most of them haven't even heard of it. Those that have view it as an old-fashioned, commercial product, and are usually surprised anyone is still using it. Even the most informed non-CFML developer won't have heard of Railo (let alone Open BlueDragon). Yes, it's wonderful that we have a free, open source option these days but it's a tiny drop in the ocean as far as the larger developer world is concerned. It really doesn't matter how many new developers Railo brings into the fold, it's going to be insignificant compared to what used to be the ColdFusion developer base at the peak - which was probably four or five years ago, before Railo even went open source. I like Railo. I use it in production. I've used Railo exclusively for over three years - and ColdFusion 10 is the first version of the commercial product that I haven't even downloaded, since I was first exposed to ColdFusion in 2001. At work we're on Railo 3.3.4. We probably won't upgrade. Sure, Railo 4 has closures which I'd like to use - but we're already using Clojure which, like most of those other languages I mentioned above, has had closures since day one. Sure it brings command line execution of CFML - very cool - but we're already using Clojure for those sorts of scripts (precisely because we couldn't use CFML for that!). Like many other companies out there, we've found CFML wanting in several areas and we've started to incorporate other technologies alongside CFML that don't have those deficiencies. And, like many companies in that position, upgrading CFML - even the free, open source version - is just becoming less and less attractive. Other languages are easier to use and/or more advanced and/or have a much larger developer pool to recruit from and/or any number of other benefits over CFML. The much vaunted advantage of being the more rapid way to build web applications has evaporated: that's a commodity now. CFML - even in the free, open source versions - is an old-fashioned language that competes in a very aggressive space against other languages that have evolved much, much faster.

I'll ask again: what are YOU going to do about your career?

Are you going to remain a "CFML Developer", defined by your language? Are you even able to compete in the current jobs market? I've said repeatedly that lessons you learn from other languages will make you a better programmer - and make you more employable. That's where CFML developers need to expend effort: raising their game. I've been interviewing a lot of people recently for roles at World Singles. The general lack of experience with modern software development processes is holding CFML developers back: TDD (heck, even basic unit testing), automation (of testing and of deployment, CI, CD), source code control systems (learn Git people!), polyglot development experience, understanding the JEE / JVM stack, Agile techniques (Scrum, Lean, Kanban...). The list goes on. I've been saying for years that this is what will kill CFML and, as Nick notes in his blog post, we've seen a lot of the top CFML developers, evangelists and cheerleaders moving to other technology communities where these development processes are commonplace.

Whilst it's all "too late" for CFML in my opinion, there's still a chance for CFML developers to change their game, to learn those new skills, and to find interesting work with technologies that are still in the growth stage.

Don't let your language define you, let your skills define you.

Tags: coldfusion

35 responses so far ↓

  • 1 Justin Carter // Nov 18, 2012 at 7:45 PM

    The "2012 State of the Platform" article struck me as being very odd... The challenges noted seemed to be very unscientific and the proposed projects and action items don't seem to be real solutions to growing developer numbers.

    Building API wrappers and example apps for services? A Learning Centre project on Kickstarter? A suite of apps that can share skinning and authentication features?...

    My initial advice would be to stop focusing on hiring "skilled CF developers", and just hire "skilled developers". If you have jobs available, grow the pool by bringing people into it. We've hired 2 new devs this year who came from Java and PHP backgrounds, and they're now happily working on large CFML projects and being very productive.

    To me, the language a platform or product is built on is becoming less and less relevant. If that means that commercial solutions are dying then perhaps ACF is in trouble, but if developers and clients alike gain value out of it and Adobe are still making a profit selling it then I don't see how that argument holds up.
  • 2 zac spitzer // Nov 18, 2012 at 10:49 PM

    have to agree about Railo, ACF just works out of the box

    when lots of people blog about how to install a product, it a sign there's something wrong
  • 3 Wil Genovese // Nov 18, 2012 at 11:57 PM

    In the words of Cee Lo Green, "FUCK YOU!" You are using your influence in the ColdFusion Community to undercut it because your personal choice of late has ben to move in the direction of Clojure. You are working for Railo and as such you are competing against Adobe ColdFusion. Sean, me and you have eaten, drank and even pissed together and I have great respect for your skills. However when you turn and undercut community efforts to promote and expand ColdFusion I have to call you out and say FUCK YOU! You are biased against Adobe and as such your arguments are invalid. With all due respect to you and your cats.

    WilGeno
  • 4 Adam Cameron // Nov 19, 2012 at 6:39 AM

    Hi Sean: good post. In case you didn't notice, I decided to make my response a blog article instead of cluttering up your comments: http://adamcameroncoldfusion.blogspot.co.uk/2012/11/sean-said-that-nick-said-that-fusion.html

    Cheers.

    --
    Adam
  • 5 John Farrar // Nov 19, 2012 at 6:41 AM

    Seriously, too late is base in the insanity approach. To do the same thing the same way expecting different results would be insane.

    Can anyone tell me what percent of the web is run on WordPress and Joomla! combined? Now what percent of the PHP market is that? What if we throw in Drupal? If we put down our tech brains for a moment and look at this with a business oriented glasses it should be apparent we have a platform the same age as CFML. Now get out of tech circles and ask site owners why they choose those solutions and you will have scientific evidence that just like a hammer is key to construction tech is key to web sites. Being key though only works when we have synergy and we are missing components needed to thrive that are out there sitting on the shelf.

    The only reason we are not thriving is not all the legit challenges Nick, Sean and others mentioned. If we want to thrive we need synergy and being narrow minded we have not looked for bright spots outside without out tech colored glasses.
  • 6 Anonymous Coward // Nov 19, 2012 at 9:14 AM

    I agree with Justin on several points, but I think this is one of the most obvious: Doing anything like what's proposed with Kickstarter is bound to do more harm than good. Unless the funding goal is incredibly low, there is no chance it will get funded; creating yet another ripple of FUD in the community. And even if it does manage to get funded, I would bet against it being successful at growing the community.

    And now we reach the point where it becomes obvious why I'm hiding behind anonymity: I'm about to be rude.

    Fusion Authority and the Dinowitz's haven't been relevant for a long time. For me, it ended when they silently welched on FAQU magazine subscriptions and didn't even bother to tell the volunteer writers and staff what was going on, taking whatever was left of the war chest and hiding in the woods. But that's just when I lost my faith -- it doesn't mean they were even deserving of it that long.

    And John Farrar, while a kind and well-intentioned person, is about as hapless as they come. The SOS framework he's been building and preaching for years has never materialized, nobody is interested in it, and yet he's at every conference talking about how it's going to be the next big thing. I'm sorry John, it's not.

    So to have two irrelevant parties meet and discuss the state of the platform and how they intend to save it, is a bad joke that's just going to leave the organizers and attendees ultimately disappointed, and the outside onlookers assured that they were right the whole time -- CFML is a deathtrap not worth their time.

    Apologies all around, but in my opinion it was something that needed to be said. Sometimes the truth hurts.

    (P.S. - Sean, you misspelled "polyglot" as "poyglot.")
  • 7 Sean Corfield // Nov 19, 2012 at 10:00 AM

    @Wil, "You are working for Railo" - wrong. Check your facts, pal. Your attitude is exactly what I'm pointing out is a problem here: someone criticizes Adobe? Dismiss them as "biased" and say their ideas are irrelevant! Someone criticizes CFML and/or the community? Dismiss them as "undercutting" things out of spite because they chose another technology!

    That attitude is why CFML is slowly fading away. It's a ghetto mentality.

    I've used CFML + Java, CFML + Groovy, CFML + Scala, CFML + Clojure. There's a common theme there and it's CFML because it's good for building dynamic web pages. The problem is that its advantages - which were once undeniable - have all been eroded, in different ways, by different technologies. Denying that is putting your head in the sand.

    Yes, I like the Railo server better than the Adobe server. Not because I'm some "Adobe hater" or "Railo fanboy". I'll write about why I'm no longer working with Railo at some point but for now you'll have to take my comments as they stand. But even preferring Railo's product, I'm unlikely to upgrade now. A lot of people are saying the same thing, if you'll allow yourself to hear them: the latest CFML versions - of any engine - just aren't as compelling these days.
  • 8 Adam Cameron // Nov 19, 2012 at 10:07 AM

    Wow. Odd to see this angst and vitriol and none of it is from me!

    FWIW, I think your reaction is a bit OTT Wil, and it's reactions like yours that really make me cringe about the CFML community (ones that are my equal measure gushing are just as bad in my view). Nothing Sean said is inaccurate, as far as I can tell from my own experiences. It might not be what we want to hear, but don't shoot the messenger here.

    One funny observation: having spent some time in Scotland, whenever I see someone using the word "pal", the next thing I expect is a fist to fly. I'm sure you didn't mean it like that, Sean.

    Cheers.

    --
    Adam
  • 9 Sean Corfield // Nov 19, 2012 at 10:12 AM

    @John, "To do the same thing the same way expecting different results would be insane." - except that's what you are doing. There have been repeated attempts to foster open source collaboration in the CFML community and the result has been the same every time.

    How many failed bulletin board projects have succeeded? (zero) How many blog projects have fallen by the wayside? (the leading two are now stagnant)

    The only CMS that's really being successful outside the CFML world is Mura.

    There have even been two open source CFML foundations and one failed a while back. The current one is already hampered by having half its board members switching to non-CFML technologies.

    People choose WordPress and Drupal and Joomla and so on because a) they work really, really well - far better than any CFML project and b) it's really easy to find cheap developers to customize them. Oh, and c) there's no license fee.

    Instead of the Kickstarter learning project, why not contribute to LearnCFInAWeek? Instead of creating new Blog / CMS / whatever projects, why not contribute to the existing ones? That lack of collaboration has throttled open source development in CFML.
  • 10 Sean Corfield // Nov 19, 2012 at 10:25 AM

    @anon, I'm sorry you don't feel able to stand behind your comments about John Farrar and the Dinowitzes - I think you'd find more sympathy than vitriol in response...

    And I've fixed "poyglot" thanx!
  • 11 John Farrar // Nov 19, 2012 at 10:47 AM

    You are right about why people use WP, J. and you are not completely right. You have enough of the picture.

    a. We can build something that works really, really well. ( We are up to the challenge. We have the tallent. )

    b. Nothing here we cannot do the same. Oh, hopefully different. Have had CFML customers who also had WordPress, Joomla! you would not want to have been on the business end of my client's experiences. LOL, many businesses would like an alternative.

    c. Exactly... so what is hard about no lisc. fee? No roadblock there.

    Now it has been done before. Software has been done before. The web has been done before. MP3 Players had been done before the iPod. SmartPhones had been done before the iPhone. It's the market mix that brings the synergy.

    Why I am not contributing to current projects.
    ( Do a market analysis of the synergistic keys to WordPress, Joomla! and Drupal and you will see we don't have any projects to match in the community ATM.) Do you remember my first conference talk at the Frameworks conference in DC, Feb. 2007? It was on collaborative application frameworks. I had the tech glasses on only on those days but took a minor sabbatical to learn how to see through business glasses. We are loosing because we do not understand the business side of technology. More collaboration without understanding business is playing the lottery and the lack of collaboration is NOT why CFML is in decline. ( To be clear you are just wrong here even though I would hire you to code and architect apps today! )

    2/3 of the internet is running on Content Management Systems. So not focusing on that market is to back off to less than 1/3 of the market immediately. The top 4 CMS solutions are PHP based followed by blogger.com with the same share of the market as ColdFusion. Those CMS solutions make up over 1/3 of the leading site platform on the net, PHP. That's right those 3 top solutions are about 1/4 of the internet and PHP is 3/4 of the internet sites out there.

    Let's say developers were the key... ColdFusion sites make up 1.1% of the market ATM, same as Blogger.com does. If we build better unit testing, will we grow to 5%. What about a better IDE, a mistake of thinking on my part in the fast while I solved problems with only a set of tech glasses. We need different glasses for different things.

    We don't have the jobs because our platform doesn't have the market share. We don't have the market share because we don't have business ready solutions that shine in usability and economics. My point made in multiple other places is for 200 bucks USD you can get hosting, a sweet web skin and a book on running WordPress. Does the CFML world have a competitive product in the consumers view? Mura is a great enterprise product but it doesn't have the same approach-ability as WP currently.

    We can win if we want to. If Mura wants to talk I would be glad to help them become a better solution for a bigger market but they are a great fit for enterprise customers now. They are a win in the ColdFusion column. If they want to win outside the enterprise that would also be awesome expansion but until then other solutions are very possible.
  • 12 Brockhard // Nov 19, 2012 at 11:06 AM

    I wanted to stick with ColdFusion, but I found out it was really because I was comfortable...change was scary. Then I started working more with PHP (not Wordpress) and found out it was not too terrible like the CF community wanted me to believe (not all, but the vocal majority). And now I'm using .Net/MVC4 to build apps, and yes that was a no-no according to the CF community.

    Here's what I've learned. PHP and .Net are evolving at rapid rates. PHP has Composure (getcomposer.org) and Packagist (packagist.org) for keeping my apps in order. .Net has Nuget (nuget.org). While I don't use Ruby on Rails, they also have gems. In all cases, I can keep everything up to date including assists such as the former Twitter Boostrap library. Not to mention .Net probably has the best IDE out there, which by the way can do PHP development. In addition, step through debugging (Visual Studio out of the box) is far better than having to move cfdump around to find out what is going on.

    Additionally, PHP frameworks such as Laravel (laravel.com) and .Net MVC4/Razor have simplified development to the point where it is as easy or easier than ColdFusion. Now in all fairness, ColdFusion does make things simple for integrating with Excel and other things, but that's not really a game changer when I can be just as productive in other languages that require for a cheaper overall cost using the same operating system and database when comparing. On the plus side, CF has server admin that makes management a breeze.

    With services out there such as Sendgrid (sendgrid.com) and Mandrill (mandrill.com), email is a snap and I don't have to worry about blacklisting, so the benefits of cfmail have really been removed. I can generate HTML pdf's in PHP using dompdf (https://github.com/dompdf/dompdf) in a snap. PDF's in .Net are a bit more costly, although the open source community in .Net seems to be growing at a much more rapid rate (example: Codeplex, www.codeplex.com) than CFML. This is by no means meant to discount the work that has been done and is being done in the CF community, just an observation.

    ColdFusion has many large applications out there which will need to be maintained. Other than that, there's not much compelling to start new development with CFML. I think Railo is by far the best option out there for CFML, but if I'm going to run on Windows anyway, I'll go .Net/MVC4/Razor and use Entity Framework. I can crank out an app just as quickly that has better performance (ok maybe not too much better since I'm still learning, but that's on me). If I need open source, I've got PHP with Laravel, which I can work even faster than CF with a fraction of the experience.

    I wanted CFML to succeed, but as someone who was devoted to it, I've moved on for all new development. Most of you could care less, but I'm willing to bet that I'm not the only one who has chosen a new solution.
  • 13 Sean Corfield // Nov 19, 2012 at 11:35 AM

    @Brockhard, thank you. It's good to see people posting with real experiences of just how far other technologies have come. As I said, too many CFers have blinkers on around their favorite language and don't realize the landscape has changed dramatically.

    @John, based entirely on business needs, the choice of technology really doesn't matter: that's part of why WP et al succeed - they solve a real business need, even when the underlying technology was less than ideal. But those problems are solved. No sane person would try to compete with such well-established territory, unless they can do so disruptively. CFML is not a disruptive technology.
  • 14 John Farrar // Nov 19, 2012 at 11:47 AM

    So what makes a web server not matter until it's disruptive technology Sean? Sounds like double talk from a business side. ( honest question )
  • 15 Sean Corfield // Nov 19, 2012 at 12:53 PM

    @John, you completely missed my point.

    My comment about CFML there was more about the behind-the-curve nature (of both CFML and the majority of the community).
  • 16 Justin Carter // Nov 19, 2012 at 2:52 PM

    @Zac: It sounds like you tried Railo several years ago and haven't tried it since.

    @All: The fixation on things like Wordpress and Drupal in these discussions somewhat astounds me. Installing something and then haphazzardly downloading themes and extensions for it isn't software development, so I'd be careful about trying to cater to the of "out-of-the-box" crowd. And as far as developers go, it's always tricky to introduce a new platform or framework and gain traction with it when you don't have a large volume of developers to jump onto it. Besides that, PHP was wildly popular for several years before Wordpress came along and a couple of years before Drupal got a foothold - ColdFusion never had that level of popularity, at least not outside the USA.
  • 17 Anonymous // Nov 19, 2012 at 5:14 PM

    First of all, I do respect ColdFusion because I did make a good living out of it. At the time, I was working comfortable using ColdFusion and making enough to live comfortable as well. Also, Coldfusion was my first programming language. It was so close to HTML (tags) that it made it even easier to learn it. So in that token, I do have respect for the language. However, I have to agree with Sean Corfield. The language is going on a fast downhill slide. In part, I blame Adobe all the way through. Adobe failed horribly with its efforts to establish ColdFusion in the market. Why would I pay Adobe a fee in order to use an editor? Why would I pay Adobe a fee to use its Builder? Why would I pay Adobe $750 dollars for a language that does less than most of the other FREE cost languages? It just does not make any sense. The ColdFusion community is brainwashed into Adobe's mentality. It is either ColdFusion or the high way. Many times before while I was a ColdFusion programmer that I used to hear how bad PHP was and how bad Microsoft was. None of that nonsense was true. None of it. That is the ideology being instigated around by the ColdFusion community. I can say that about 90% of those ColdFusion developers whom I have known have moved away from ColdFusion. Most are either on ASP.NET or JAVA. I chose PHP instead. Also, Adobe failed when it tried to re-brand Object Oriented programming by RENAMING everything we have known and learn in the OO world with their own keywords/terms. Come on...stick with standards. ColdFusion is dead in my state and most of the country. You can do a search on any popular recruiting site like Monster.com, Dice.com or CareerBuilder or even Indeed.com. There are no jobs for ColdFusion let alone "careers". The market is dead because of the ignorance of it's company and the monkey mentality of its community. After I began using PHP, I became part of a community that is so much more open to the world of opportunities out there. We do so much more with PHP and it is so much more fun than ColdFusion. Just like they failed with ColdFusion they also failed with Flash and its ActionScript and even FLEX. The technologies that they developed are just not taking off at all. With the coming of HTML5, Adobe will have to rethink their strategies.
  • 18 Zarko Susnjar // Nov 20, 2012 at 2:42 AM

    Rightful as usual. I agree with everything you wrote. I expected something like this from you after recent comments on the web.

    I have only one remark.

    No matter how much positive I am about CF, you made me re-think again about everything.

    I work also in other technologies, I'm language agnostic, so I'm not financially worried. I got more worried about my career after this post, because I already invested years of my life in CF. I do not like the idea to step down and be Junior Level Developer in Python project, or Regular level in Java project.

    You just planted thousand seeds of suspicion and uncertainty. Not seed of "CF is dead", we're are immune to those, but "Even if CF manages to live for 20 years, you're stuck".

    I think people, highly respected by all community, one of the rare which opinion really counts, like yourself, should not write posts like this (at least, without some brighter footnote).

    If you made me think about running away, you'll probably make majority of others wanting the same.

    Again, you are 100% right, but don't make it worse :)
  • 19 Matt Osbun // Nov 20, 2012 at 4:38 AM

    Thank you, Sean. You have neatly and publicly summed up my reasons for having left ColdFusion development behind some years ago.

    I very much left my direction to chance. I could have transitioned equally well into a .Net, Java, or Ruby developer role. I found junior to midlevel positions in each to interview for, and gave the same pitch. I have little to no professional experience, although I'm familiar with the platforms. However, I've been an application developer for 10 years, and it's you'll end up with a better contribution to your team if you only have to teach a language, rather than good development habits, unit testing, source control skills, OO architecture, SDLC patterns, etc. The .Net shop returned the best offer.

    CF was a great launchpoint for my career. I learned a lot, both from the language and from the people- many of whom I still keep in touch with. But for all the reasons listed above, it's just not a factor in my life anymore.
  • 20 Sharon // Nov 20, 2012 at 7:51 AM

    It used to be that CF had a *big* advantage over just about every technology out there: rapid application development. We could get sites up and running while the other guys were writing file access services and setting up db connection strings. Yeah, our marketshare was never stellar, but we were smug in our technological superiority.

    Almost because of those limitations of other languages, they *had* to agree on CMSs and frameworks to get anything done. I know people who, even today, write their own CMS...which is frankly, insane. If you still do that...stop it.

    Meanwhile, the rest of the world evolved. You can get a functioning site framework up in Rails in minutes. WP has a whole eco-systems of not only plug-ins, but templates! And don't even get me started on the yumminess of modern, front-end dev.

    Where does CF still shine?
    - Datasources are still so much better than connection strings.
    - Tag based display is just easier, especially for designers.
    - Most functionality is built-in without having to rely on dicey third-party plug-ins.
    - It will talk to Java, it will talk to Microsoft, it will talk to anything XML/json almost natively.
    - It has a passionate community.

    Where is it failing?
    - It flat-out pisses off network administrators. Everywhere I've worked, they've hated it, despite having to support plenty of other nasty stuff.
    - Bad code. It's just too easy to write bad stuff that runs...and for some reason it seems like the bad code stays around longer than the good code.
    - Adobe doesn't care. Every sign I've seen from them for the past 5 years or more is that they are more than happy to take license money, but it is clear that CF is not part of their overall strategy.
    - It has a passionate community...that to the outside world, comes off as overly defensive and scared of anything new.

    My thoughts:

    - Learn another technology. Now. Just do it. It will make you a better programmer and will also give more weight to your opinions on things.
    - Stop re-inventing the wheel. The open source CF world is small, but it's there. Grab some code, fork it, improve it, release it back.
    - Do better and more advanced CF. Not all of us wanted or needed a full-stack framework like CFWheels. But heck, try FW1. Learn what dependency injection is. Do some OO. Write something entirely script-based. Redo a small app in ORM. All of these things are transferable skills if you do have to move, and if not, you're writing better CF for all of us.
    - Stop the squabbling, please. Don't make me get out the mommy voice. Use the frustration more productively...see above.
  • 21 Sean Corfield // Nov 20, 2012 at 9:10 AM

    @Zarko, "Even if CF manages to live for 20 years, you're stuck" - just remember this is true of EVERY technology. This post needed to be written because it seems like a lot of CFers just hide their head in the sand and don't want to believe it. It's just a fact of life in the software industry: technologies have a cycle, you need to learn new skills to remain employable. I've been saying this for years.

    And it's not just about the language. The real problems are going to be for folks who don't have any of the other modern skills around testing, automation, deployment - even basics like version control and bug tracking.

    You're right that many folks don't want to do that side-step to a junior role - many simply can't, financially - yet they make no effort to learn these new skills whilst gainfully employed. They don't buy/read books, they don't attend courses or conferences, they don't go to user groups. They just don't make an effort to improve.
  • 22 Sean Corfield // Nov 20, 2012 at 9:25 AM

    @Matt, nice to see someone who has made the transition thru a junior/mid-level role in other tech. It's a hard path for a lot of people so kudos for taking that chance.

    @Sharon, great comments. Thank you. Agree on all points, esp. about our community being both a great asset and a great liability at times :)

    Worth noting tho' that in some languages, the datasource story is much better than you might think because database libraries are much improved these days. Also the template story has improved a lot and become a lot more designer friendly. For example, it's possible to have pure HTML templates and apply dynamic content thru server-side DOM transforms that are fairly natural to write.
  • 23 James Agnostic // Nov 21, 2012 at 5:04 PM

    When ColdFusion was great


    Instant PDF generation
    Instant WYSIWYG editor
    WDDX was way ahead of anything
    The power of Java without the complexity of Java
    JSTL was (and is ) a total hack of CF.
    The highlight for me was when had flash based cfforms were brand new. ASFusion.com had really cool stuff.

    There were synergies all over the place, just waiting to be tapped into.

    It started falling apart when CFScript did not get fully implemented. Even today, when I have to do code reviews with C# developers, when they see CFScript there is a positive reaction. OTOH, trying to explain when to use CFScript vs tags, just killed any enthusiasm.

    Here is a personal pet peeve. The code should have been valid XML..

    There should have been a free plugin for MS Visual Studio

    Fusebox Community got lost when they decided to make a compiler. (FW/1 is great, though)

    Something should have been done with Spectra

    Didn't Adobe(Macromedia) have Code Exchange way back when? It should have not been allowed to die.

    Getting local variables in objects to work right, took way, way too long.

    As I look around as to what to do next, I like what MS has done with SQL Server. I am reading and trying every thing I can with it. There is definitely and active community out there.
  • 24 Shlomy Gantz // Nov 21, 2012 at 5:32 PM

    While I will always have a place in my heart for DBML, I rarely get any development requests for CF that are not legacy support.

    I have been watching the decline from afar for several years and tend to agree that this is part of the natural product life cycle.

    CF used to give you a distinct advantage over other platforms. Now, it is clear to me that advantage is gone.
  • 25 Marko Simic // Nov 26, 2012 at 2:55 AM

    Few days ago I found a post in Java Group @ Linked, pointing to presentation from latest Jfokus 2012 Conference: Comparing JVM Web Frameworks.
    Fitting ColdFusion (as web framework working on top on JVM) into this story was enlightning.
    First, you can see what features are most valuable/important to web framework users. Thus, on what features CF Engine providers should/could focus on.
    Second, how CF stands against most popular f/w
    Thirds, and not least, where (when) CF lost the step in this race.

    Comparing JVM Web Frameworks
    by Matt Raible on Feb 15, 2012
    http://www.parleys.com/#st=5&id=3084&sl=33

    I would say, CF still could catch the competition. But we should all start watching more (much more) "out of the box" (including engine developers) to be able to do this.
  • 26 David Fekke // Nov 26, 2012 at 1:49 PM

    Great post Sean. I got my start using CFML. I still do some CFML coding from time to time. I am currently doing Objective-C and .NET development. I still have a lot of friends who still do CFML fulltime, but it has been a little harder for them to find good opportunities. I heard someone say you should learn a new language each year. That is bit much for me, I personally try to learn a new one every 2-3 years.

    For me it has been purely financial which language I use for work. It is whatever someone will pay me to do. In the last year it has been PHP, ASP.NET MVC and CocoaTouch.
  • 27 James Mohler // Nov 26, 2012 at 3:33 PM

    This may be of interest:

    http://blogs.coldfusion.com/assets/content/roadmap/ColdFusion%20RoadMap.pdf
  • 28 Dale Fraser // Nov 27, 2012 at 2:59 PM

    I have to agree with most of the points. I've been using ColdFusion commercially for 12 years and its been good to me, its made me look good and earn lots of money to get products out the door, but that's the past and it's not the future.

    While your opinion clearly angered some, its your opinion and bravely shared as you have a strong reputation at risk.

    I seriously considered Railo as a solution to the problem, but ultimately I think its not the solution, its the fallback plan if Adobe ditch ColdFusion as I have no issue paying for a ColdFusion licence I have no reason to move.

    I think this sums up the problem right here "a declining job market" ColdFusion has been unable to entice people to the technology. Complete failure, its a good technology better than some of the more popular ones, but if no one is using it, its useless.

    Its like Beta vs VHS. Beta was better but wasn't marketed right and VHS (aka PHP) won the day.

    I ask myself this, is this the technology I want to use when I start a new project. While its the easy answer, the fast answer, the answer I am most comfortable with, its not the right answer, I don't believe its future is secure enough to give my new app a 5 year lease of life.
  • 29 Sean Corfield // Nov 27, 2012 at 7:24 PM

    @Marko, that's an interesting talk - thanx for posting the link!
  • 30 An outsider // Nov 29, 2012 at 11:00 AM

    Little late to the party, I just stumbled on this post while do some research on CF & Railo. I thought I'd chime in with an outsider's perspective. I'm an outsider in the sense that we are a CF shop but I never participate in any of the CF forums/talks and while I love CMFL I am also completely technology agnostic and don't mind working with many different platforms.

    I've been developing with CF since the mm days. I love CF, it still an amazingly useful and easy platform to develop on (once you get it setup properly). We also use PHP extensively (in large part because of wordpress and other open source apps that run on php.)

    It's very interesting to see various opinions on the state of CFML. In my opinion Sean is essentially right, CF is in complete decline and it's irreversible. If it weren't for Railo offering a viable alternative it would be a pretty bleak landscape. And from my point of view it's entirely Adobe's fault.

    PHP came to dominate for a simple reason, it's available entirely for free, and it's easy to install. This lead to widespread adoption both on the developer and hosting side, and then into a very large number of php open source projects (wordpress, drupal, etc.)

    Railo could have been a good answer to this, had it come out 5+ years ago. In today's world there's just so many good options out there I think its chances of changing the way CFML is heading is very remote.

    The way it looks now I think Railo is a great solution if you have a large amount of legacy CFML apps to support. We're moving all our ACF installs to Railo, because I just don't trust Adobe and the way ACF is heading. As many others here we never upgraded to ACF 10 and will just be switching to Railo.

    But for any new project I would never even consider CFML. There's just too many other good options out there with much wider support and existing available apps.

    I think the BETA vs. VHS is the best analogy. It's not the best technology that wins, it's the one that's the most painless and easiest to adopt. It's basic human nature. Unfortunately yes, it means often mediocre solutions will get wider adoption than better ones (eg. mysql vs. postgre) but in the end it doesn't matter (shoot me if you want but MySQL has gotten pretty good!)

    Just my $0.02

    M.
  • 31 Nando // Dec 11, 2012 at 6:41 AM

    I've been following the recent discussion concerning the decline of CFML ... it's not what the cool kids use, Adobe's negligent stewartship, natural technology cycle, etc. While it all makes sense, I've noticed that I'm also looking at this from the perspective of my business clients, and that's created a split in me.

    What my clients want is stability. They have no interest, and nothing really to gain, from the fevered rush of the software industry towards "new technologies". What they want, to give an example, is that the number of hours an employee works per month is correctly tabulated and reported, reliably, always. If I go to them and say "Look, all the cool kids are using Node.js these days ...", they'll think I've become unhinged. And I believe they'd have a point.

    I'm a big fan of Alan Cooper's Goal Directed Design principles, which puts the focus squarely on user goals. Cooper worked at Microsoft in the early days as a senior developer. The origin of his methodology lay in seeing how the cool kids working at Microsoft at the time were screwing up products like Word, simply because they put their own goals first. They all wanted space to prove their technological superiority, or at least mark out their territory, in the product. Fast forward 20 years, and all my clients think they are too stupid to use a computer. I tell them that the developers who created Microsoft products were "stupid" in the sense that they were too self absorbed in their drive to be "technologically superior" to their peers to recognize that the goals of the users of the software were, and remain, very different.

    More than a decade ago, I created several apps using Fusebox 3 - and they are still in use! When Fusebox 4 was released, I felt compelled to upgrade them to the newest technology, but never found the time. Then Sean took over and released Fusebox 5. That upped the pressure on me to upgrade these apps to the now more clearly superior framework technology, but I never found the time, and regretted it ... Fortunately, because not long after that Mach II and then ModelGlue came along, and I was stuck for a time between the 2, finally settling on ModelGlue as being more to my likely.

    Now I was convinced that I definitely had to upgrade at least one of these apps to ModelGlue. The technology had advanced significantly. It was really time. Again fortune intervened with several large projects that delayed my plans, which I built in ModelGlue, of course. Because then Sean released FW/1, which is a true joy to use!

    It's still running happily on Fusebox 3, happily in the sense that the clients continue to find it easy to use and it both saves, and helps make them money. I've upgraded some of the front end stuff with jQuery enhancements, but haven't touched the "antiquated" back end. And my clients would not be able to tell the difference if I had, because the way the software meets their goals would not change at all.

    If you're competing in the market for employment, and there are little to no ColdFusion jobs available, then it's obvious another server language needs to be learned. I'm not sure what all the fuss is about.

    However, if you're building web applications for clients, stability, and meeting their goals, matter more than keeping up with the cool kids. What the cool kids are interested in will be different in one or two years. Value is not developed by chasing fashion in our field. It's developed in the same way it has for a very long time, by meeting client goals. And these don't change as quickly as the technology in fashion.

    I'm not negating the point that learning new technologies, new languages, keeping up with advancements in the languages we use, is important. I'm only offering another perspective, that the value and quality of a software product, and by extension the developer behind it, has more depth than that.
  • 32 Sean Corfield // Dec 13, 2012 at 3:58 PM

    @Nando, thanx for the response. Certainly if you have existing, working applications that are being maintained, there's not much sense in rewriting them in a new technology unless the old codebase is unmaintainable or you're hitting problems that can't be solved on the original stack.

    As for "cool kids", just bear in mind how much both the Java and the .NET worlds have advanced in terms of productivity and effectiveness. Also, 'cool' languages like Python and Ruby are as old as CFML. Even PHP has had big improvements, as noted in comments above. In all of those, building web applications has gotten substantially simpler, eroding CFML's former advantages.

    It's really not about 'cool' vs uncool. It's about productivity, cost-effectiveness and availability of talent.
  • 33 Nando // Dec 14, 2012 at 1:46 AM

    As a side note, I picked up "Functional Programming for the Object-Oriented Programmer" by Brian Marick earlier this week, available at http://leanpub.com/fp-oo . So far, I really appreciate his accessible approach of introducing functional programming to those of us who have no experience with it - using Clojure! Here's a pity quote from the book:

    In US law, there’s something called the “doctrine of attractive nuisance”. Children find certain things attractive (trampolines, swimming pools, abandoned refrigerators) and they’re not competent to understand the risks of playing with them. Therefore, it’s the responsibility of the property owner to take reasonable care to prevent children from doing something stupid.

    We all bring deep-seated assumptions to our work, and we’re about as good at questioning them as children are at thinking “Could something bad happen if we’re playing hide-and-seek and I climb inside that abandoned refrigerator and shut the door?”

    One of those assumptions is that nouns name clear-cut categories. We want to believe there is a procedure that anyone could follow to distinguish, say, chairs from stools. And we assume that “bachelor” can be justifiably and equally applied to any of: the Pope, a 76-year-old widower, a never-married 45-year-old living with his mother, and a 28-year-old living in a Chicago loft who has three “friends with benefits” and a subscription to Maxim magazine.

    A class-based language is one that has a boolean is_a? or instanceof predicate. Giving such a language to people like us is… an attractive nuisance. Just as with an unfenced swimming pool, quite often nothing bad happens. But sometimes we become too insistent on modeling the world with classes, on wedging the fuzzy world and the fuzzy ideas of our clients into an attractive inheritance structure. We climb inside the refrigerator of classes, slam the door shut, and only then notice we can’t open it from the inside.

    Is it possible functional languages offer a way out? People are much more tolerant of ambiguity in verbs than in nouns. We’re perfectly happy with sentences like these:

    • “I saw the dog.”
    • “I saw what she was getting at.”
    • “I saw the light.”
    • “I saw the light in her eyes.”
    • “I saw right through him.”

    … or these:

    • “The clock ran out.”
    • “The boy ran out.”
    • “The water ran out of the basin.”

    We accept that there’s no single thing that is “seeing” or “running”, and that the meaning of a verb can’t be found in isolation. Instead, you need to look at the surrounding nouns and possibly other words.

    In effect, it doesn’t bother us that verbs in practice don’t have clear-cut definitions. Rather their uses share family resemblances. That suggests to me that generic functions might be a useful modeling tool in cases where the more noun-like, static approach of object modeling is inadequate.
  • 34 Mark Gregory // Dec 15, 2012 at 2:16 PM

    Yeeeee ha!

    For years, I have have remained concerned about the quirkiness of the CF community, and the broader impacts. Not saying that our oddball-ness is why CF has declined, but when talking to someone whose primary language is other than CF, having to explain that when we say DAO or Gateway for example, that we mean something totally different than the rest of the world.

    For me though, I love CF. Version 9 with the improvements to CFSCript was a massive game changer for me. I show other programmers CFCs written in script, be they C# .NET, Java, whatever, and they totally get it. I show them how we instantiate objects, how quickly we can implement ORM, stuff like that, and they start drooling. CF has extremely attractive qualites, more so today than even.

    Last few years, I have made a mental transition from being a CF Programmer to being a Programmer. In a recent interview, I was asked "What if we decide to go to .NET or Java in a couple years. How would you feel about that?" I told them I would be super excited to lead that effort. At the end of the day, I just want to write some cool code. As time passes, I care less and less which language it is in.
  • 35 Rey Bango // Jan 1, 2013 at 12:55 PM

    It's been a VERY long time since I've done CF development (easily 4-5 years) but hopefully some of you still remember me. I definitely remember a lot of names on this comment list.

    I recently wanted to help out a friend with a site he wanted. CFML is the only server-side language I've worked with extensively and so of course I turned to it. But it's been so long, though, that getting back into the swing of coding for it would take me as long as learning something new like RoR, Python/Django, JavaScript/Node. And for the sake of career development, it makes more sense at this time to invest in these other languages and frameworks than it does CFML.

    CF worked really well and I'm sure it still does but purely from a career perspective, from what I've seen, it's a limiting choice to stick with. I've worked and talked with enough startups and dev teams over the last 4-5 years that share the same feedback Sean has given; CFML to them is irrelevant. It's not a dig at the CF developer community at all. It's a simple observation of the lack of use and interest in ColdFusion and CFML-based technologies.

    From my perspective, I will always love CFML but in order to continue to be a valuable developer, I need to evolve to the technologies that companies are looking for. Thankfully, I transitioned to front-end development focusing on JavaScript & HTML5. But I also want to be able to build out the back-ends and an investment in RoR to me is the better route than a continued reliance on CFML.

Leave a Comment

Leave this field empty