Posted in ColdFusion | Posted on 03-21-2011 | 6,104 views
Doug asks:
How do you handle technology snobs, or people that blast ColdFusion? Any canned replies you could share to quickly put them in their place?
Seems as long as I can remember, people slam CF. 10 years ago if you didn't use Java, you weren't a real app developer. Now, if you don't live .PHP, .net or Drupal, you're antiquated.
First off - let me be the first to admit. I'm a ColdFusion Fan Boy. 100%. I'm also very passionate about ColdFusion. That means my responses to the haters can sometimes be a bit ... passionate. Much like a nuclear missile may seem like overkill when dealing with a noisy neighbor. (Unless it's a really noisy neighbor and then I say turn the key, baby.)
The best person I think in this regard is Terry Ryan, one of Adobe's Evangelists. I've been trying my best to learn from him as I feel he has a practical, measure, and mature way of responding to folks. This is what I've picked up from him and others.
If they say ColdFusion is old
...then I remind them it's not any older than PHP or Ruby. ColdFusion was released in 1995. PHP in 1994. Ruby was discussed in 1993 and released in 1996. OO, as an idea, dates back to the 50s (as per Wikipedia). They may not know it's still being updated. If so, I'd point to the ColdFusion 9.0.1 release and the plans for ColdFusion 10.
If they say it is buggy
... I ask for specific issues. Everything is buggy. Even my darn cable box. I'd love to live in a world where software was perfect but I'll have better luck waiting for genetically engineered Unicorn hamburgers. If you can get a person to talk about a specific bug, you may be able to help them find a fix. Worse case you can ask them to report it. In my opinion, saying something is buggy without telling the vendor is next to useless. Oh, and saying it's a bug on Twitter is NOT the same as reporting it.If they say it is slow
... I ask if they bothered to do any testing or server tuning. It's shocking how few people don't bother. I then point them to Mike Brunt who - at last count - I believe had a ColdFusion site running something like 500 trillion requests in a millisecond. (Ok, maybe not that many.) At the end of the day - every platform out there is going to be slow if not coded right or configured correctly. ColdFusion is easy. There is nothing wrong with that. But because of it's ease, it has allowed folks with little to no background in application development build web sites. Let me repeat: There is nothing the frack wrong with that. Unfortunately if a casual user doesn't take the time to even consider updating their skills a bit, or hiring someone to help, then they could be left with a slow application. In that case, blame the coder, not the code.If they say it is expensive
... I ask if they even bothered to think about development time. Unfortunately, some people flat out refuse to do so. They look at one cost only - the sticker price - and never imagine what that up front initial cost could save them in total development time. By that metric, no one would buy cars and would simply walk everywhere. Also, unfortunately, there are some people who take this religiously and refuse to pay for software. Forget about them. They are not living in the real world. It may also make sense to remind folks that ColdFusion is free for your development machine, free for your staging server, and I believe also free for a hotswap backup. You're paying for production, that's it.That's all I've got for now, but as always, I'd love to hear opinions from others. I've yet to read Terry's excellent book, Driving Technical Change, which I've heard is excellent in this regard, but I've heard nothing but good things about it so I can safely recommend it for this cause as well. Also remember that nothing is better than actually getting things done. ColdFusion has always shined at exactly that. There is a great quote from one of the creators where he said - basically - that ColdFusion was not created to be beautiful - it was built to let you get things done. That's what we're here for, right?


The biggest gripe I have about CF is there is no jobs for it where I want to live. That's it if there was an active job market for CF devs I would still be in it. I know there is a lot of licensed software that makes up the borg that is CF server and it can't be OSS but without a fresh generation of users it will go the way of the dodo sorry to say I don't want to move my family to D.C. or 1/2 way across the country just because I prefer a way to write variables.
So for me those points you bring up are easy to argue but the reality is not something I have an answer to.
I have more work than I can ever do and I get paid pretty well. The work I do WOWs my clients because I can get more done while they sip their coffee, than I could ever do with compiled software or PHP.
Thanks to everyone for keeping the lid on ColdFusion! ;)
You can see a list of some of them here: http://www.forta.com/cf/using/
We are looking at possibly doing a complete rewrite of my clients software (10+ year old system at it's core but been greatly enhanced/maintained over the years and currently running on CF8) and the officialy company position is to move them to either Java or a MS solution. :-(
Booster? Go! Retro? Go! FIDO? Go! Guidance? Go!
Surgeon? Go! EECOM? Go! GNC? Go! TELMU? Go! Control? Go!
Procedures? Go! INCO? Go! FAO? Go! Network? Go!
Recover? Go! CAPCOM? Go!
Launch Control, this is Houston. We are go for launch!
HTML: Go! CSS: Go! JavaScript: Go! ColdFusion: Go! jQuery: Go! SQL Server? We're go flight.
Launch Control to Major Tom. We are go for launch!
We're not fortune 500 (or even close), but the rapid development far outweighs the cost of ColdFusion server.
@Ed: Another excellent piece of advice that Terry has shared is to NOT look for CF developers. Look for people with web development experience. I built and deployed my first CF site within about 2 days. Was it crap? Sure - but it worked. My previous experience had been Perl so I was already familiar with the basic concepts.
I usually then go on to tell them about the latest advances in the CFML language (including the cfscript enhancements in CF9, Railo 3.2 and OpenBD 1.4 - oh, and, yes, that there are multiple implementations - for the audience I'm usually talking to, the fact that there's an active JBoss community project supporting CFML tends to get their attention!), the ease of integration with other technologies / protocols, the recent release of a dedicated IDE from Adobe (somehow that often seems to "impress" haters more than the continuing stream of major server releases - go figure!).
There's always room for improvement in how CF is perceived and I think some killer open source apps would help - Mura is a great start, and is used in a number of companies that would not otherwise consider ColdFusion for whatever reasons. Overall we need to follow Terry Ryan's approach of being calm, measured and reasonable (and try to avoid the rabid fanboi-ism that many of us feel about our favorite technology!).
"and try to avoid the rabid fanboi-ism that many of us feel about our favorite technology!"
This may sound dumb - but as I work at home and I'm alone most of the day, I've been trying to simply yell my emotional response. So I'll see the comment on Twitter that makes me mad, yell out a few quick F bombs, then once that is out of my system, try to go for the calm response.
I don't always succeed. :)
We've been making these kinds of lists for 15 years now, yet CF continues to be marginal, at best. Whether or not there are some numbers showing overall growth of "CF developers" I think we can all agree that in the real world CF jobs are few and far between, and people investing in ColdFusion starting from zero are fairly rare.
The classic issue is that CF is so easy to use the community is largely folks who wouldn't otherwise be "good" developers (to this day I think a huge number of CF developers really only know ColdFusion) in the eyes of other communities.
I think another major problem is the lack of clear frameworks -- we have several as a community, but if you're coming from Rails or Django or a java framework the community has much tighter understandings of the conventions to use -- in this way, ColdFusion is often unfairly compared to frameworks rather to languages.
I used to run a CFUG, I used to do CF training, and I used to run CF sales seminars. I have done consulting in a few dozen companies, large and small. I have worked personally in or with at least 10 engineering teams. Without fail, unless people are "ColdFusion people" they wouldn't touch it with a ten foot pole -- it's great to say that you should just hire a developer and teach them CF, but rare is the talented developer even WILLING to work on a ColdFusion project. It's simply not a good career move in the eyes of most developers (and, frankly, given the market for it, I think that may not be wrong).
I think for CF to get more respect it would be great to see:
1) A serious attempt to create a CFML implementation that does away with some of the legacy backwards compatibility issues that create inconsistencies in the language.
2) A clearer set of conventions for building good web apps, including a clearer framework direction from the CFML vendors (this is a very hard nut to crack, as it's a complicated issue with no easy answer).
3) A Heroku-style way to deploy CFML apps.
4) Some truly well architected open source projects that provide clear answers to hard problems for people (agreeing with Sean on this one).
5) Perhaps CF needs a major rebranding effort -- let's face it, the name itself is actually kinda hokey, and it carries huge negative baggage. This would also dovetail nicely with #1 above, as it would allow some new brand to emerge that has the same ease of development but with a new, cleaned up markup.
6) More good thinking about new language elements -- I have to say, having gone fairly deep with the new spreadsheet stuff recently it just feels, well, loose and ill conceived. I was incredibly disappointed to learn that the way the CFSCRIPT equivalents of CFQUERY etc. were implemented was via CFCs (an old argument not worth reopening, I suppose, but there it is). Gone are the days of Sim Simeonov and his successors putting deep thought into the language. I'm sure I'm pissing someone who worked hard on these feature off by saying this, but that's my POV.
Some may scoff, but I think having serious open source implementations was a turning point.
It seems like a relatively large number of CF folks are trying other languages these days -- the 7 languages in 7 weeks book is popular, even with CFers! If that isn't a sign, I don't know what is. Heh.
Seriously though, it seems like the number of CF coders who are "clued in" has grown quite a bit in the last few years.
Reply by the numbers:
1) "Clean" implementation: This has been discussed on the open source engine lists a few times, and I wouldn't be surprised to see something come of it. So besides the minor problem of the solution not being Adobe ColdFusion...
2) "Sanctioned" conventions: Application.cfc (Sanctioned Frameworks: love is a battlefield)
3) Stupid simple deployments: I made something that's pretty swell, and the OBD GAE stuff is getting *rave* reviews! We're so close to "all around ease", it's gross. A lot of interesting stuff in this area is happening for JEE in general, so we all get to hitch a "free" ride.
4) "It's the apps, dummy": Guess we all know what we need to be popular. :) There's a real argument for not getting /too/ popular tho. At least to my mind, but I'm not quite normal, so... but anyways, I agree.
5) Branding: Branding is hip these days. I get that. I like the name though. There's plenty of groovy stuff like quartz and whatnot. Hokey is okey dokey, for me. But whatever. A rose by any other name...
6) CFML Language thoughts: The "conventional wisdom" group is where it's at, yo! The open source engines have a fast release cycle, which is a form of evolution, so the things that survive and emerge from them are probably worth thinking about on the commercial engine side. As this has always been the case anyways, and the reverse is sorta required... eh- I'm mostly just glad there's an open place for thoughtful discussions on implementation.
When I say "I'm the most excited I've ever been about CFML", I'm not just saying it. Part of the "why", is that I see the points you made above being addressed.
Which are good points, but as I opened with, are points that are less true in recent years.
Long and the short of it: We're getting there dude, for good or ill. :)
The avalanche has already started. It is to late for the pebbles to vote.
-Kosh
And one thing we obviously need in our hand is a list of high-traffic sites built in ColdFusion, so this we can show to our customers too. like I know one is www.voanews.com,.
please share if you know more...
before I start, can I say that I've been using CF since 2004 and love it.
I think the main problem CF faces is an image problem, and that is a very difficult one to overcome no matter what 'facts' we throw out there. This is why we always see these same issues and perceived 'problems' coming up time and time again.
Developers tend to be loyal to the technology they use and are comfortable with, so actively converting developers and/or the decision makers, I think is a lost cause. I think for CF to be more successful, it needs to grab the new developers out there.
If I were about to embark on a career of web development (I kinda fell into CF), I don't _really_ know the ins and outs of say, building a dynamic website - let alone a full-scale web-app. While researching tech, one Google search on Coldfusion (assuming I'd even ever heard of it) would bring me to Adobe and the eventual license issue, merited or not, free for developers or not, you would have to agree it is a large barrier to entry.
Also consider: size of community, resources, ISPs, and dare I say it, Adobe's ongoing and most importantly again, well publicised battle with Apple - merited or not!
Why would I even consider Railo or openBD (both of which I use btw) if their community is even smaller than ACF?
Why would I _not_ choose the most widely used, supported, and hosted server side language out there?
Sorry to be so negative, but that's just how it is in my opinion.
On a more positive note, I remember a while ago seeing a post on CF vs PHP vs .NET pros and cons which predictably flamed out after a while, but why not actually show how easy it is to do the things we do in a Coldfusion cookbook kind of way - top 20 things a web developer does on a daily basis: running queries, session management, interacting with CF application framework, most common frameworks, component reuse etc. etc.
thanks, Tarek.
http://www.planetmagpie.com/Default/W3Services/Web...
Also, when I consider CF to be old, it's not in the time frame that the language has been around, it's in the way it acts. When one of the biggest news events out of SOTR was that Adode CF would be moved to Tomcat...I was surprised that it had taken that long. Look how long it took to get a decent ORM. CF is evolving, but it's doing it at a slower rate than other languages.
Even the community evolves slower. Look at how fast projects evolve on Github. I myself have forked several gems that I customize and use in my own apps. I know that with github, my customizations can easily be merged with the origin when changes come down the line. The CF community has seemed averse to using git and Github in preference to SVN....which doesn't have the same ease.
Another thing I've noticed the Ruby community doing right is books. This weekend, I wanted to move from a test unit based methodology to RSpec. I was able to purchase an awesome 400+ page ebook for $25 straight to my iPad. I was able to read it over the weekend. Conventional books/bookstores which is where you find most CF titles wouldn't be able to facilitate that. The Pragprog site has a bunch of good books all within a minutes reach.
I think the biggest thing CF could benefit from is a set of community driven standards. I love that when I fork a project on Github, I can easily tell constants, methods, classes, etc just by looking at the way things are named. I really like the fact that they've even settled on a default indentation (2 spaces - not tabs) because it always looks the same in my editor no matter which machine I'm on.
From my point of view, CFers seem to have a love-hate relationship with duck typing. If you have a dynamic language, why not embrace the fact, yet some coders will check arg types on calls -- although I don't see what benefit that gives them.
CF can be an amazing tool. The CF community needs to stop worrying what others think about it and concentrate more on learning what other languages can teach it. Don't be afraid to adopt new methods and most definitely -- come up with some community driven coding standards.
http://www.aspevents.net/Content/Adobe-ColdFusion
Cheers!
Git: I like Git too... but seriously - are you saying it's bad/poor/old to use SVN? At the end of the day, making use of SC is crucial. I don't think folks have to rush out to switch to Git tomorrow to be considered hip. ;)
Books: The book industry as a whole suffered a few years back and I think hit CF quite hard too. You've got the WACK series but you also now have smaller books coming out like Matt Gifford's excellent OO book. Many years back Forta had a set of small books that were focused on a particular topic (like e-commerce), and I'd love to see a return of those.
I fully agree with your last point.
RE: git - I don't think it's bad or poor to use SVN. I don't think SVN encourages the collaboration that git does. It's model is not distributed development. I think a move to git or something like git will encourage more CF developers to fork projects and get involved. I think RIAForge is an excellent resource, but I don't think it's a great collaboration. More than likely, if I needed something off of it, I'd download it, make some customizations and that would be it. I wouldn't make my mods public because there's not an easy path to do that vs the github model.
RE: books - I think the time of big publishers and programming books are here and gone. The programming industry moves a lot faster than publishers can get their books out. PragProg has done a lot of beta books where you can purchase it before it's finished and get downloads of the product as it's created. Another emerging idea is community driven ebooks - collaborated/published on github also. I don't think I'd wait on the publishing industry any longer. Also, who wants to lug around 500+ page reference books when you can have them on your tablet without the weight or wait :)
ORM: What's wrong with XML? ;) Sure - I love how I can use CFCs now. But I'll never understand folks aversion to XML. Just my personal opinion though.
RIAForge: RIAForge supports Github based repos. Problem solved. :>
If PHP, .Net, Ruby (via FastCGI or JRuby), Python (via Jython, .Net, etc.) did not scale, they would not stick around for long. In fact, I would argue with several of the newer languages that FastCGI is one of the only reasons they could stick around. Read a little history regarding twitter for that tale of craziness.
Point being, CF scales and competes very well with the other solutions. Look at the features, target, and specialization of each tool, choosing accordingly.
Cheers,
Mike.
Because we worked with a non techie audience who didn't know better and it stands for Arran, Stefano and Phil!
To this day only the IT dept of clients will realise that.
@Mike, Isn't php the only one using FastCGI anymore? BTW, anyone who argues that language X can't scale is usually just ignorant of any language other than the one they've attached their career to.
@Arran, I bet you get that question a lot :) At least it makes sense now.
if only more CF developers used git then CF could be considered a legit language.
Most of your other comments were intelligent and thoughtful, but that one was just plain ignorant
One of the things RIAForge did is to try not to be "grabby". If you want to use Github as your main project site and just "list" at RIAForge, you can. Ditto for Sourceforge. RIAForge is fine just being the pretty shallow listing to your 'real' site elsewhere. ;)
Personally, I don't care where projects are hosted - just give me something to look for at either location! And now, I think we need to get back to the real topic at hand . . .
Git is swell, but we shouldn't act like there are no tradeoffs when going to distributed from centralized.
If you're curious at how it can actually make it *harder* for people to work together, take a gander at EGit. There's a reason team project sets aren't supported yet (or weren't last I checked- they're moving fast!)... they're having to code up new stuff, much like github does, *around* git's limitations.
And when I say limitations, I don't mean that in a bad way, just that "distributed" comes with it's own set of baggage.
The subproject support is butt-ugly, and having to check out the entire project is kinda lame, but I reckon both those relate to distributed nature moreso than implementation. Going "distributed" does complicate some stuff, while simplifying other stuff. *shrug*
Still, there's a freaking *ton* of CFML projects on github. Relatively speaking. =)
I don't think the "problem" is choice of VCS, or using XML for configuring things. I don't think it's "attitude re: git" so much as it is "attitude re: open source".
I have seen a *huge* shift in how open source is looked at within the cfml community. And not limited to CFML, per se. CFML heads have been pushing other open source projects forward. projects like jQuery. Maybe I wasn't paying attention before (which be *totally* possible), but it doesn't seem like stuff like that was happening, say 5 years ago.
Eh.
Frankly, haters can eat a bowl of Richard. I'm not worried about them, or the language, or the community. I think we're perfecto! Like a fine wine, just getting better. :)
IMHO - Biggest reason CF isn't as widely used as it could/should be is that while Adobe (and Macromedia before them) has been great at putting out new version (thank you) - they have been terrible at marketing to the unknowing and unconverted.
They have very little documentation available for anyone who wants to get started (Yes, I know they have a setup guide and a few tutorials) and very (couldn't find any just now) tutorials/samples geared specifically towards people who just don't know anything. If you go to their site, just about everything is geared towards experienced developers. They layout is very unfriendly as well.
Having people like Ray and Ben out there but the audience they reach aren't the kids messing around building their first sites and dipping their toes into the water. That's the audience Adobe needs to go after.
Every copy of DW sold should also come with a great CF tutorial and sample projects, showing just how easy doing tasks like CRUD, emails and pdfs are.
It's like Adobe is afraid of offending people by putting CF out there.
Give me a marketing budget!
I wish that Adobe would start marketing CF for what it is: an extraordinary application server. But as long as they keep putting in things like CFMAP, CFAJAX and CFWHATEVERFRONTEND I doubt that serious developers will start considering it.
Developers, not designers: I hope that this is where the OSS engines will shine.
I am one of two contractors at my current job. I have about 11 years exp. with CF. The other contractor has a PHP background and no CF. We are working on a large internal application in CF that has some fairly complex logic behind it. Over the course of two weeks, my counterpart was able to get completely up to speed on CF and take over as the project lead. He regularly comments about how things that would have taken dozens of lines of code in PHP require only a couple in CF. With the time savings we have also managed to implement jQuery into our code to produce some pretty impressive results.
People like php becuase its free, there are tons of open source systems (drupal) that make webdesign easy for them with out even knowing whats going on behind the scenes.
CF is simply a easy language to use that due to more popular languages (PHP) that has been pushed aside. Which to me is sad. I think if there was more of a open source community for CF ( enter ralio) CF could see large growth or at lest i would hope so
There is a serious lack of nice-looking, working examples of Coldfusion's actual capabilities. Yes, there is a lot of info (mostly outdated) on how to do things with Coldfusion, but what new developers need is actual examples of Coldfusion at work.
Where are the nice PDF examples?
The image manipulation examples?
The preadsheet generation examples?
The list goes on and on...
As much as I like Coldfusion, I can't overlook the fact that newcomers to the world of web developing/programming have very few valid reasons to select Coldfusion over PHP or .Net.
If you go to the PHP site - would you find better examples and docs?
My point is - I think Adobe has done a fair job here and others have stepped up to also provide support.
Please, correct me if I'm wrong, but I don't see any actual examples on Adobe's site (where a newcomer would expect to find them) or on the CF documents. I see a lot of code samples, but nothing a berginner could look at and say: 'wow, that's nice and code looks pretty simple!'.
Not to mention that, for the last few years, all the emphasis is on advance features for advanced developers, but it can be reasonably argued that it is not the elite few that make a language popular, but the 'unwashed masses' developing the crappy, simple websites (for an example, look at the popularity of WordPress). I'm pretty sure that 99% of all PHP developers are not real programmers (and I say this is a humble fashion: I'm not a real programmer, either - just a Coldfusion hack; my background is Graphic Design).
Now, don't get me wrong: the top coldfusion guys (like you, Ben forta, etc.) will always be necessary because somebody needs to determine the direction of progress, but your work and expertise are entirely wasted if there are no ignorant followers to educate. And that's the problem with Copldfusion these days.
Interesting point on the "advanced features". I'm not sure it's fair to say some features are just for advanced users, but let's go with it. Sure - CF9 added ORM - which you could consider advanced. But it also added cfspreadsheet. I'd definitely not call that advanced. It added caching - which could be advanced - although the API is simple - but it also added sharepoint integration - also simple I'd say. There is a wide range of features in CF and I think there is something to appeal to all levels of developers. Shoot - most of the front end Ajax stuff was built _just_ for folks who don't know Ajax and want a simple way to add em.
Just my two cents :)
What about posting the code *followed* by a visual display of the result (HTML) of having run the code?
We have the most beautiful diamonds in the world, but prospective buyers are going for lesser-quality, more expensive stones around the corner because when they come to take a look at our diamonds, we show them...in the dark!
Why else do you think the user base shows no significant growth in spite of all the nice things that you and I know Coldfusion is capable of?
It's been a bit stalled lately but is still actively looking for help from the community.
But it's got a set of simple demos that you can actually see run as well.
I'll quit now. As always, thank you for your time and expertise. I truly mean it.
@~Angela: Ok - that's a fair point. I could definitely see more of an effort on the core CF home page to make the... "power" (?) more evident to people visiting for the first time. There are some jaw droppingly easy things in CF and they should really be demonstrated.
And thanks to Angela for so efficiently saying what I wanted to say in countless rambling posts! :-)
One thing that I'm concerned about, and I'll make this confession openly: I'm afraid of putting code out into the public for fear of coding something the "wrong" way. For instance, there's umpteen ways of carrying variables around in CF. But I suppose that's the beauty of the Internet - you don't have to have anyone's permission to publish.
Check out cfmZenGarden.com and I'll try to put more examples and explanations up there.
When speaking with non-CF developers, (Rails, PHP, Flex) I find that most are somewhat skeptical to ColdFusion abilities and really have no idea what it is or how it works. I even struggle to describe it at times. After working with several developers who are new to ColdFusion, it's pretty clear that there's a lot of confusion with "Best Practices" and I consistently see these developers making things more complex than they need to be in CF. Some just can't grasp the fact that you can do so much with very little code.
Some pain points for beginers are the most basic things: When to use hash tags on variable names and when not to, when to use Application.cfm or Application.cfc? using components/objects, tags or cfscript? cfquery, cfstoredproc, ORM. procedural or object oriented. frameworks. datatyping? etc etc etc.
The answers to these questions come easily with a little experience, but for beginers, they often think they're doing something wrong. To me, the answer is simple: In ColdFusion, you can use whatever programming methodology that you're comfortable with and can work with effectivly. it's really just a matter of learning the syntax. There are usualy many ways to complete any given task in CF. In fact, what I like about ColdFusion the most is that you don't HAVE TO conform to any specific structure or methodology. This gives you a lot of flexibility and puts the programmer in control of the application.
[Add Comment] [Subscribe to Comments]