First off I thought the title would intrigue you... But let me say that it's so far from the truth that literraly it's amusing!
I have been doing ColdFusion for going on 12 years (really shows my age; man I am getting old) now... and I hear the "CF is DYING" or "CF is DEAD" comment like every other 10 minutes... It's not only ammusing at times; it's plain old ignorant!
I love to get into debates with students, people learning at EasyCFM.COM or even at User Groups about the topic; and you know what I find everytime? The people that make the comments have no clue; and can't take constructive critism well... It's like I am in the school playground and you just can't get through to these "trouble kids".
With that being said; I want to point out a few things for people reading this. Now sure someone can say CF is your preffered development choice and that is why you fel that way; but that is just not true.
Prefered choice is one thing; best tool for the job is another. When a client (be it web or corporate or goverment) comes to you and spec's out a particular project for development, that client could care less what you write it in; what they care about is two things:
- How long?
- How Much?
Now, if the client does not have "CF licenses" and you choose to use ColdFusion for that project; the how much includes the license fees. Free, is not always free... they [the client] will pay for it in the development and project lifecycle; so even if they don't spend say $10,000 in a license; they will still spend the $10,000 sticker elsewhere. (Note: If they can't or dont want a license; consider a managed server.. usually a few hundred dollars a month gets you a CF license (usually enterprise) at most hosting companies, so what is the problem?) And I know people will say; shouldn't the developer make it instead of the license fees? That is a matter of business logic, and individual honesty. Sure; we all want to make more money; but shouldn't honesty to your client be more important? Shouldn't providing the best route (for the client, not you) be the route suggested? I tend to think so!
(This usually ends up making you more money in the long run anyways with referrals and repeated business).
I have built hundreds (sometimes it feels like thousands :) ) of applications [Some Enterprise level, some not]. Some in C# (both for the web and as stand-alone ditributable applications), Some in JSP, some in CF, some in othe languages (anyone remember htmlOS?) and to be honest; a language is just that... a language..
It's the person who speaks that language that makes it what it is. I speak 3 languges (you know this; if you read my 25 things about me post) and I cannot say Spanish is better then English or Italian is better than English.. Each one has its place; when in Rome guess what? Italian is better... when in California; English (or in some cases spanish) is better.... So naturally the same is ported over to the programming language arena. Or at least, it should be!
Let's go back to say 1998, when flash got really really popular and you would see fully developed flash website (which cheesy animations and unusable content).... In those days; doing this was considered tacky and very unprofessional. Today with Flex; that is not only the NORM; but it's encouraged. But why? because technology got better; the ability to streamline data to the flash interface is easier and mor seemless; therefore making the "user experience" better.
Life is about timing; knowledge; and plain ol' salt. Salt? WTF?!?
In life; you need to take everything with a grain of salt (at least I think so)... When you read posts like Aral Balkan's (CF is dead) post; or Steven Errat's (CF is NOT Dead) Post ; or even this post; you have to read them and take them in with a grain of salt... Because you have to inform yourself; then make a judement on to what is best for you with seeing all of the pictures in the bulleting board; not just the one someone wants you to see.
What is better... what is not better? Is too "general" and high level of a question; without knowing the situation; it's useless... A better question would be:
What is better for my task as hand (my project, my client, etc.)? That is the question no one ever touches when they say CF is dead... better for what... you (the developer), them (the client)
In my years (over a decade now) of teaching programming (I teach PHP, Java, C# and CF) (both in seminars, classes and universities) I can tell you that CF can compare to any other language out there... It can deploy .NET, Java, CFML, and more... but let's forget that for a second; and look at the other reason why ColdFusion is not DEAD or dying...
I hear this one often; it's too expensive! First off; I have said this before; but the price sticker on ColdFusion is not expensive for a company. If you're company cannot fork over at least a professional license; then you should start asking can they pay my next paycheck... But that aside; Railo anyone? If FREE is too expensive; then you have issues....
Next I hear; CF developers are not real programmers; they are scripting (or tagging) kiddies... So I asked myself; let's prove it.
So I began the language test with some univesity students. I gave 8 students (2 using JSP, 2 using .NET, 2 using PHP, 2 using CF) the task of building a fully working; tested application (I selected the application; in thise case it was the dreaded "Address book" application) and the one's that got it working quicker an could support a lot of traffic (using a stress tool - Mercury) would win the prize.
Now; putting this in perspective yes the CF team did it quicker; followed by the PHP developers, then the C# developers and then the JSP developers. I put them all through Mercury; and all 4 of them withstood the stress test of 5,000 concurent users. Sure that is not a lot when you compare it to Twitter or MySpace or whatever; but it goes to show that it can work (correctly) under presure. All other aspects were the same (same OS, Same DB backend, the only thing that was different was the language they used) and they all behaved accordingly. But this takes me back to the "How Long?" and "How Much?" questions clients asked.
CF Developer Team - 3 weeks
PHP Team - 4.5 Weeks
.NET Team - 5 Weeks
JSP Team - 5 Weeks and one day.
The CF Team even created a partial Flex front end that invoked their web services (since all they had to do was switch a setting on the CFC to enable web services) as extra credit. The other teams didnt have time; and came in just under the gun (deadline was 6 weeks).
When I spoke to the developer teams individually; they all said that this was a great excercise because they are seeing (unbiasedly - is that even a word?) that each situation has it's place... CF was just better here; in this case and point.
Take this to the next level and build something like YouTube...Would CF be the best route to build something to that scale? Probably not because of a few reasons; however; could it be used? Sure look at a site i built in less then a day: ColdFusion.TV; but it required me to use third party applications to handle the video compression, etc. But keep in mind I said I wrote this in a day. (Not weeks, months or even a year, but a single day).
Does it have all the bells a whisltes of a YouTube? No; it was just a day; does it have full capabilities to upload videos of any format; conversion to FLV (flash video) the ability to play and place it on your own site (like YouTube) yes it does! And all that in just one day! What else could you do? With more time?
Going back to YouTube; writing this in JSP or C# would be better because you can get to a more granular level and control the file conversions more powerfully; then you ever could in CF... so does CF fit every mold? No, it doesnt. Does this mean it's dying? I think not! In layman's terms:
"If you have a screw, a hammer might not be the best tool.. but if you have a nail; then start hammering!"
Lastly, let's leave you with one last piece of information.
ColdFusion 8; when used correctly can work perfect and seemlesslesy (especially in a 64-bit environment). To the same standards that a PHP system, C# system could. Don't blame the technology; because you have met some people that didnt know what they were doing and we're dangerous enough to build something that didnt work!
If you are a developer starting out; don't leave ColdFusion out of your "things to learn" just because you read a post on someone's blog that says its dying.. If you do your thorough research and still dont want to learn it; then that's cool... Can't know every language perfectly; so find the language [or languages] you feel confident with and run with it [them].
Hopefully it's ColdFusion... But I It's something like C#, PHP or JSP (or more graphic userface related (i.e. Flash, AIR, etc) then that's cool too...) We need all kinds of people with all kinds of knowledge to make the web what it is... If we ll did the same thing; that was is the point!
Together we can all make it better by challenging ourselves; and most of all the technologies we use.
With my book length post (sorry); I leave you with this. Coldfusion is NOT dying; it's just getting started.
Your thoughts? Let me hear them!