After being professionally employed writing ColdFusion for the past two years, here's my moderately informed opinion.

ColdFusion is the single best web-scripting language choice for an uneducated user with a small task at hand (that is, if you don't mind shelling out several hundred bucks to complete this small task). CFML is terribly easy to learn, and handles all the everyday tasks you'd expect from a web-scripting language. This allows you to get yourself in trouble very quickly. Why?

  1. ColdFusion is slow. How slow? Like, Short bus slow. Slow enough that you need to be wary of loops that iterate more than 1,000 times. That's pretty fucking slow for 2001. This doesn't even mention query times, which leads us on to:

  2. A typical ColdFusion corporate setup is to have CF as the web-scripting language and MS SQL Server as the database. How do these two communicate, you ask? ODBC. Which is really fucking slow. Like, Cousin no one in your family ever talks about slow.

  3. A marketing department was obviously heavily involved in ColdFusion's development. How do I know? Simple things like for loops are sort-of implemented, but in what someone obviously thought was a "user-friendly" way. Here's a typical for loop:

for(int i = 0; i < 10; i++)
{
   foo++;
}


Now here's the ColdFusion version:

<cfloop index=i from="0" to="9">
   <cfset foo = #foo# + 1>
</cfloop>


ColdFusion does this sort of thing a lot, basically trumping typical programming language conventions. What this means for you: If you're new to the world of programming, all the assumptions you'll learn from ColdFusion are subtly, annoyingly wrong.

  4. ColdFusion offers very little to help you, the programmer, manage complexity. At this time ColdFusion has reached release 5.0, and just now got around to giving users the ability to write functions. This lack of structure is where third parties come in, with products like the Fusebox method, but rote technique means little if your medium is crap.

If you're attempting to build a medium-large application with ColdFusion, you're looking at a minefield. You could, very easily, hire a bunch of schmoes from the local community college to learn CFML and write your application. Things would progress very rapidly, in the beginning. Given a bit of time and a few minor revisions, you'd be left with a grinding, slow application that was a nightmare to maintain. This is where you'd hire someone like me (at a mildly exorbitant rate) to come in, and essentially re-write your app from the ground up, in ColdFusion. Alternately, you could just hire me right away, but then what's the point of using ColdFusion?

Or you could just do it right, hire some programmers who know what they're doing, and build the thing with PHP. Which is what I'd have told you to do in the first place.