I've been a professional web developer for just about a full year now, before that I was heavy into web consulting. I spent the last 5 years as a consultant, I got my start just before college. I love learning new technologies and playing with new tools, at my job my tool is Coldfusion. Here's why I love it.
It's not like other languages
Java and PHP have their roots in C, from their syntax to how they look and behave, a C programmer wouldn't have much problem adapting to a language like java, nor would Java developers if they could understand pointers. There are many languages built that reflect the early days of programming with C such as operators like --, += ++ etc..
Coldfusion is unique, it's modeled after HTML. Coldfusion is simple yet complex, it's tag structure is familiar and powerful. It *feels* like HTML but its much more powerful. It's easy to learn and get started
Database integration is easy
It's really easy in Coldfusion to create a database query, all I need to do is call <cfquery> tell it what database to access, and give the query tag a name. Something like <cfquery datasource="myDatabase" name="MyQuery"> . Within the cfquery I can use regular SQL statements such as select, insert, update and delete. To access this datasource I just give my Coldfusion server access by using the admin tool and putting in the information.
The really nice thing Coldfusion comes with is methods defined with the cfquery. For example if you wanted to return the size of the record set, just do myQueryName.RecordCount which returns the number of listings. Also, CFquery's have built in caching, just specify the time and Coldfusion will cache it for that amount of time, from 1 second to 1 year (or more!). This is a great feature if you need it.
Queries are implicitly returned as a structure
This is the one thing I love about Coldfusion, it chooses the best way to store the data for you then it provides a really easy interface to access the data. So as in above, you do a cfquery with a name, then to iterate over that set, you just declare <cfloop query="myQuery">. From there just call a column defined in the cfquery. If you did a select * from a table with the column fullName you would simply call #fullName#.
Cross Site Scripting is a thing of the past
HTML is great, it's a wonderful tool, if used wisely. But HTML can become a dangerous tool to trick the user if used wisely, Cross Site Scripting is easily prevented by taking a variable and passing it into HTMLeditFormat() first. This escapes all HTML and makes it useless crap.
Database security is easy
There are two wonderful things about Coldfusion and database security: CfqueryParam and CFC's. Let's start with CFC's. A CFC is a Coldfusion Component, I won't go into much detail (As it's noted in the next section) but they're designed to be an separation of data, business logic and presentation. CFC's are secure because you cannot access them in your browser, you can't even call them directly. But more on this later. CFqueryParam is the best thing since sliced bread. It makes SQL injection attacks a thing of the past and makes database security stupidly easy.
A <cfqueryparam> takes two arguments, a type and a value. The type specifics what type of data is it expecting: an int, float, string, nvarchar, numeric etc.. the value is the variable. This makes it very secure, because before the server executes the query it validates the data, checking for things like blah' or '1=1' to protect from SQL injection. Easy, fast and simple.
CFCs
Just after CFqueryParams in my list of amazing sliced bread awesomeness is the CFC. CFC's can contain everything from HTML to methods to queries… on and on. CFC's are best used for two things: separation of logic and OOP.
Separation of logic is very important, not only as a security concept but as a concept of working with programmers. A CFC can insulate your cfquery's from the outside world. CFC's have methods (Called: Cffunction) with access modifiers.
You can setup instance variables, create methods to query a database, process a file, upload a file, to send email-- Coldfusion can do it all.
OOP. This concept is very sparse and not well defined in Coldfusion. But you can call a CFC, create an instance of that CFC and map specific pieces of data to that object. The Object only lives for as long as that page is used, once the page is gone, the Object is gone.
Coldfusion has the best books I've ever read
I hate reading dull books, by dull authors. I hate examples provided by most tech books to the point I've adopted the habit of just reading the manual and Googling a few questions I have. Coldfusion is different, the material online isn't there, however; Adobe has up it's sleeves: Ben Forta.
He is the best author I've ever read, imagine reading a tech book and wanting to go on. It's almost like he's telling a story and you're part of that story. I've learned more about good software design in the first two books of the series: Adobe Coldfusion 8 Web Application Development then I've ever learned reading online or in another book.
I've bought at least 3 "great/amazing" books on PHP, viewed many for Ruby and Java, I own a few of those too. No book or resource I have found has even come close to the quality of the information and ability to just go out and do cool stuff. Just try it for yourself, break, play have fun! It's a great read and a wonderful reference manual.
It's not the end
While I loved Coldfusion and what it offers, I'm not sold on everything. Soon,x I'm going to document things I dislike and hate about Coldfusion and why it may not be the right tool for your job.