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?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.)
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.
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?
Archived Comments
Haha! You said frack. Great list btw.
I moved to ror in the last year and I think CF is way faster doing most things than standard ruby, and for the money it' not expensive at all considering php/ruby you will want commercial services like analytics and monitoring ( could be argued that there is OSS versions ).
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.
Before ASP too (1996).
I kinda agree with Justin, except in my case it has paid off in the opposite way. I don't live near the folks that pay me to work in their ColdFusion systems so I am forced to work in my beautiful home office and stare at my beautiful kids all day. The competition is very sparse because of all of the people that have done what Justin has done.
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! ;)
Maybe mention the open source ColdFusion engines in the "If they say it is expensive" paragraph.
And for those that may have open source *requirements*, there are two very nice OSS implementations of CFML available. ;)
Does anyone know (approx) how many CF sites are out there? What percent of fortune 500 companies use some CF (they tend to use many technologies). What % of US sites are CF? Some hard numbers would also be usefull.
@rich
You can see a list of some of them here: http://www.forta.com/cf/using/
I'm pretty much the only CF developer in my company as my client is the only one still using it. Everything else we do is either Java or MS solutions. So, having said that, the argument I hear from management is we have no work in CF and we have no (other) developers who know CF. Also there are not a lot of resources who know CF that can be hired to maintain the system.
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. :-(
A recent tweet from @ballenterprise ("for a php guy, I must admit, I am amazed. Go #coldfusion!!") reminded me of the launch procedure for the Apollo missions.
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!
@ Rich - i work for a large travel management company with a proprietary online booking tool (think expedia for business) developed using ColdFusion and visual basic.
We're not fortune 500 (or even close), but the rapid development far outweighs the cost of ColdFusion server.
@All: Lots of good comments. Keep it up.
@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.
The #1 question / push back I get is "Really? People still use ColdFusion?" and the answer to that is Evans Data Corp numbers showing a massive increase in the CF developer base - as well as the very active community (did you know Charlie Arehart's online CF meetup has about 2,500 subscribers?).
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!).
Sean said:
"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. :)
Oh, you should see all the draft responses that I _don't_ send... :)
$1500 or so for a pro license disappears pretty quickly with more built in functionality and better productivity in my experience.
Hey Ray, thanks for the kind words. I started writing a response, but it became a blog post of it's own: http://www.terrenceryan.com...
You wrote, "In that case, blame the code, not the coder." Don't you mean, "Blame the coder not the code."? Or better still, "In that case blame the coder not ColdFusion!"
@Angela - Oops. Fixing...
My ex-manager told me that CF is getting slow and cannot handle large amount data. At that time, I was speechless and nothing to complaint him (Because I have lack of CF experience at that time). Now I feel I've a lot of CF experiences from CF Geeks and ready to complaint him that "blame the coder, not the code (CF)."
I think we're kinda missing the point -- these aren't usually the actual objections people have. In my fairly broad experience talking with people about ColdFusion since 1995 I find that overwhelmingly people just think CF is "lame" -- not even for any particular reason, necessarily, just that they perceive it as such.
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.
The only response in book is a four letter word followed by "you"
Nathan, I think a lot of what you say /was-ish/ true, more than *is-ish* true.
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
I have heard that Coldfusion is not SEO friendly.So how to over come to it.
@jay saying that "Coldfusion is not SEO friendly" makes no sense. A website is SEO friendly or not, and you make it SEO friendly with a programming language, wether it is PHP, .NET or CFML. E.g. the MVC framework Coldbox has SEO built in
Hi All,
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...
Hi all,
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.
"If they say it is expensive" show them Railo.
I found this post so good that I translated it to Spanish http://auge.ec/post.cfm/un-...
I just stumbled on this website. I'am still recovering...
http://www.planetmagpie.com...
Inge - wow, is that page for real?
Nathan, I think you have a lot of valid points.
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.
Nice post - check out my page on handling non techy objections to CF
http://www.aspevents.net/Co...
Cheers!
Arran, why is a CF design firm named ASPEvents?
@Marlon: Is an ORM shipped with PHP? .Net? Last I checked there were projects for it. CF has also had ORM projects, _and_ has worked with HIbernate if you knew a bit of Java. CF9 just baked it in and made it but easier. So I don't buy that argument.
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.
I wish O'Reilly would be open to publishing more CF books. Several years ago I had a bit of a back-and-forth with Tim O'Reilly about why they no longer published CF books. Apparently they took quite a bath when the CF book they published was outdated almost immediately. That said, I do see that "ColdFusion MX" is now available as an ebook.
@Ray - I remember working with Reactor, Transfer, I think a couple of others. The ORM environment was very fragmented for a while and I don't remember any of them being particularly easy with lots of xml files and such. Don't get me started with CF's love of xml. I'm glad that phase is over. Also, I never got the whole "well, if you want to, you can do this in Java"...as a CF programmer, I hated coding in java...still do as a matter of fact. It always felt like a step backwards when working in CF.
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 :)
@Marlon:
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. :>
For anyone who believes CF can't handle the traffic, I can personally say I've seen it run superbowl traffic (no metaphor, literal superbowl traffic) multiple times over on the New England Patriots website, with a very reasonable infrastructure that I wouldn't have expected from any application server, let alone CF. I've worked with several other high traffic clients as well, but saying that usually shuts someone down on that argument because it simply doesn't make sense.
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.
@Marlon
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.
@Ray, how many projects on RIAForge actually use git? XML was abused by the CF Frameworks a few years back. Wasn't there some framework where you wired all the controllers, events and models together with it? Never made much sense to me. It wasn't any more readable or accessible than CF, but it was "cool" to do it that way I guess. Sure small config files XML make sense. Using it as a programming language? Not so much. That's why I have a built in aversion to the CF and xml combo. Still, there's even more readable formats available.
@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.
@Marlon: RIAForge offers SVN, but doesn't force you to use it. So I couldn't tell you offhand how many are using Git. The point is - if you want to use it, we support it.
@Ray, that's great, but now the bigger task is to change CF developers attitudes towards git. Get some high profile projects up there. Look at FW1 on github...it looks like there's only been 3 other contributers aside form Sean. There should be a lot more than that. Same with ColdBox. These are essentially 1 man projects still even though they're on github.
Marlon - What are you talking about? You basically just said,
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
@Marlon: I just do not agree with you. I like Git. I'm slowly moving to it. But I don't see how getting people off SVN helps CF. I _do_ see how more exposure on Github is a good thing. If a person isn't using source control now then I'd definitely push them to Github. But if they have an existing repo using SVN and it's working fine for them I do not see much point in disturbing that.
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. ;)
@Matt, sorry if it came across that way, but my point is that there needs to be more community collaboration. GitHub is one way of getting more developers working together on a project. It's not the only way, but it is very high profile. Granted, I don't do any CF dev anymore, but last I checked, there was a lot of talk about ColdBox and FW 1. I may be wrong in that development on those two projects doesn't happen on github, but if it does, there is not much community effort going on.
I don't know where exactly ColdBox is hosted, but FW/1 is definitely hosted on GitHub, as is CFWheels.
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 . . .
Being on github doesn't guarantee more committers. =)
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. :)
@Ray, you're missing my point. I never contributed back to any projects using SVN even though I used SVN exclusively while doing CF. I have contributed back to github based projects. Why is that? It wasn't because I didn't like SVN. It was because the entry barrier was so much less for github projects. If I fork a project on github, I can commit my changes back without asking anyone permission. It effectively becomes my personal project. If I think the changes are good enough for others. I click a "pull request" button. There done. That's what builds up community involvement. That's what I think CF could use a LOT more of. If you can do the same thing using SVN, then use SVN...if not, find another way...
Deviating a little from the topic:
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!
Adobe is know for Acrobat, Flash and Photoshop, which are all made for designers. And because CF is so easy to start with, my bet is that developers see ColdFusion as a product for designers who want to do basic web stuff.
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.
If you need more ammunition for the fight, consider this...
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.
Just recently I started work at a new firm as a CF developer my background is in PHP. MY god what was i thinking. I should have started using CF ages ago. it make things so much simpler and life so much easy. Simple things such as uploading a file is a huge hassle in PHP and I don't plan on ever going back to PHP. CF is so simple and easy to use.
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
Coming a little late to this entry, but I will tell you that Coldfusion's poor and UNDESERVED reputation is entirely Adobe's fault.
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.
@Irv: Have you looked at the ColdFusion docs though? The reference is full of examples.
@Ray: I use the online doc's quite extensively, but I find that in a lot of cases, the examples included are very basic and don't always cover what I am really looking for. But I do have to say that is where Google and blogs like yours come in handy as they usually lead to more complex examples that help get me where I need to go.
Well I think that's part of the issue. Documentation can't cover everything, and can't contain "full" docs otherwise you get lost in all the code. Blogs are a great way to cover "one offs" (how do I make cowbell with CDPDF) but also aren't so good at full examples. Open source projects can be good too.
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.
Ray, I was talking about actual examples that a total beginner will (literally) 'see' by visiting a page. Not code examples.
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.
But - how would they run a server side app and comment on the code? This is not like jQuery Mobile where you can run the app and view source to see how things are done.
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.
Can you really call those features advanced? Coming from PHP all the "Advanced" features are really easy to use. Try doing it in PHP. Even simple stuff such as moving or resizing images its very tiresome and time consuming with php. I Fell the CF community should start building more open source apps Esp with Railo being working so flawless ( that i've seen so far) With a large enough push i could see coldfusion pushing php out of the way.
Just my two cents :)
"But - how would they run a server side app and comment on the code? This is not like jQuery Mobile where you can run the app and view source to see how things are done"
What about posting the code *followed* by a visual display of the result (HTML) of having run the code?
@Irv: As soon as you start doing that - and having any "significant" app - it gets pretty cumbersome. Most of my demos here for example are just 1-2 pages. If you want a "real" app than you need to look to the community of CF open source I'd say. Adobe _does_ ship example apps though. You get them in your CF install. Have you checked them out?
One more point: the problem is not with Coldfusion per se. The language is beautiful and the features are there (simple and advanced). The problem is that the people who can keep Coldfusion alive and even make it flourish are the (total beginners) ones that don't have an easy way of appreciating all Coldfusion has to offer because...the examples are not out there!
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!
What sort of examples are you looking for? I've been able to find examples for everything ive needed.
Irv - maybe we will have to agree to disagree here. I've pointed out multiple places folks can see example code. I'd actually argue that a -virgin- beginner would want the simpler examples as provided in the reference versus full application. Certainly a day 1 kind of guy. Don't forget you've got nearly 6K pages of documentation from Adobe. That's a lot of explanation. You've also got sample code out the ying yang - but official and community provided. I'm just not seeing the lack here - but that's my opinion. :)
My apologies to everyone if I can't make my point clearly. At the risk of appearing argumentative, I will reiterate that the problem is not with people like me. I'm a convert and I know where to look for things (the proof is that I'm here!). The problem is with newcomers to the language. They need an easy way to look at the most basic stuff that can be done with Coldfusion (it is the basics that the overwhelming majority of people using Coldfusion, PHP or .Newt actually need). Adobe neeeds to 'sell' Coldfusion - and it is not doing it.
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?
@Irv: It's ok. You aren't being rude. So - to your point. Have you checked out Tour de ColdFusion? http://tourdecf.adobe.com/
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.
Ray, I don't want to antagonize anyone, so I'll stop now. Please, notice you keep talking about a "full application", but I never even used the word "application" in my post. I was talking about very basic examples of things to do with Coldfusion, like running a query or manipulating an image, uploading a file, etc. Things that would require no more than 30 lines of code. Not a hint of an 'application' there.
I'll quit now. As always, thank you for your time and expertise. I truly mean it.
Ray, I think perhaps what people may be trying to say is that when you go to Adobe's site as an interested potential new ColdFusion customer wanting to learn what ColdFusion can do, there's a lack of marketing material showing off ColdFusion's features like you'd see if you were for example going to Apple's site to learn about what the iPad can do. (Wow, that's one long run-on sentence...)
@irv - Honest - I don't think you are doing anything wrong here - I think discussion is good. :) Check out the Tour de CF. It's like the reference but "live".
@~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.
Thank you, Ray. I'll check the Tour de CF.
And thanks to Angela for so efficiently saying what I wanted to say in countless rambling posts! :-)
@irv - I feel your pain! A few years ago, I took out the domain name cfmZenGarden.com and started posting a lot of proof-of-concepts there. It had cflayout, cfpdf, cfpresentation, etc. After a while it stopped looking coherent and starting looking like a junk pile. So I recently decided to start reworking it - organizing it differently. Other people in my user group have contributed to it as well. There was a mySQL variant, a Flex Zen Garden, a Spry Zen Garden, a jQuery Zen Garden, a Blueprint css Zen Garden. Heck just last night I started putting together an HTML5ZenGarden with localStorage proof-of-concepts.
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.
I've been developing in ColdFusion for about 5 years and have used online resources as my primary source of learning. There are plenty of great resources and people like Ray who are willing to help if/when you get stuck. If you can't find those resources, it's probobly your own fault.
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.
As a developer that worked in Coldfusion, then Java, then back to Cold fusion, You should know that coldfusion is built on top of Java. Because of this relationship, all of the ColdFusion data types (String, Query, Struct, Array, etc.) are really just custom Java classes that are built on top of things like strings, record sets, hash tables, collections, etc.. While this is an undocumented feature, this structure gives our beloved ColdFusion objects dot-style invocable methods that hook directly into the underlying Java objects.
Lets look at custom tags in Java... creating and extending tags that can be used in web applications can simplify web development and maintenance...
I like to think of cold fusion as a hugh standard and custom tag library, where almost anything you might want to do in a web application is nicely packaged in the form of cold fusion tags. (A programmers dream come true!) What is there to hate?? Instead of spending my time creating and extending tags in Java, I have a smorgasbord of tags from which to choose from in Cold fusion.
I just came across this post while doing a little searching for coldfusion "how to's" so I thought I would throw my two cents into the mix.
Several years ago, I worked for a very large company in central Arkansas. When hired, I asked them if I could use coldfusion and they graciously agree. I had a production server and a development server in-house. I spent the next several months developing a sophisticated intranet site.
After being there a couple of years (the best job I ever had), I got a call for help. Seems a non-programmer had been given the task of creating a website for her team in two days time. She asked around, and someone in a class she was taking told her she needed to call me. She did. After getting permission to help, I walked over to her building and within two days we had a site up and running for her team! She was a hero!
Later, I was asked to create an intranet site for a team that my team was closely related to. In two weeks, I had a site up and running for them. I actually received a $1000 bonus for my work on the project. Coldfusion was a winner for me.
I'm currently on disability due to cancer, so I work from home developing website for 8 customers and a few more for myself. I haven't spend a dime on purchasing Coldfusion. I simply opted to go to a company (www.hostek.com) for my CF hosting. It costs me $4.80 per domain. Not bad at all! That, I would say, is pretty inexpensive.
Regards!
Interesting post. I'm not a ColdFusion hater, just a frustrated user who was forced to learn this for school. My frustration was twofold:
1. Extremely unhelpful error messages. For instance I hadn't encapsulated a query variable in quotes and got a database forwarding error which made it extremely difficult to find such a simple mistake. I've run into many of these instances where, being a CF beginner, I make a simple mistake and am confronted with a cryptic error message.
2. My second problem is common to any language with a small user base and therefore is not intrinsic to CF itself: a lack of doc. Although the adobe documentation is thorough and a few independent website add to it, the fact that there is a small user base only compounds the frustration of running into cryptic error messages.
All in all my experience with ColdFusion was short and frustrating and while it does have some interesting features, I chose to revert to DBcoding in PHP and Mysqli.
@Nathanael
Hey, thanks for haring your thoughts.
1) Error messages can be tricky some times. You (being the language creator) have to walk a line between how much additional 'massaging' you do to exceptions. I've encountered this myself with CF's ORM feature. I hear ya though.
2) I'm not quite sure I get your point here. The docs are rather intensive. Perfect? Of course not - but pretty darn intensive.
In my experience, community drive 'docs' from something like StackOverflow were a lot more helpful than docs written by the company. A lot of times you get a strange error message. Usually, when you google the error message, you'll see some stack overflow results from people with similar scenarios. Not so much with the Adobe docs. I think that's what @Nathanael is alluding to.
If you search Coldfusion on StackOverflow, you get around 9k results. If you search php, you get 500k results. Then again...maybe php causes more issues ;)
Very Good article
Easy to learn, powerful if daunting command set. But small dev community and complex, difficult-to-debug stacks. Lack of ability to hire folks with strong coldfusion skills has cost my org a lot of person-hours -- and that's the thing we have the least of to spare.
ColdFusion is as far as I can see great for spinning up bespoke application on the quick. But bespoke applications are another thing that cost my organization person-hours, because when you're an organization short on time, those tend to get built with poor documentation. Add to that the lack of ColdFusion skills, and one of the platform's strengths becomes, to us, a de facto weakness.
It's not a question of "ColdFusion vs. [PHP / Ruby / Python / etc.]". It's the frameworks or applications you use to deliver solutions and whether you're likely to continue to be able to get people who understand them. And right now, that's not looking good for ColdFusion. We can easily find people with PHP, Ruby or Python skills. Not so CF.