Sunday, July 20, 2008    
Home My Books Blog ColdFusion About Me Back    

Calendar
<< Apr 2008 >>
S M T W T F S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Search

Categories
 • Adobe (63) [RSS]
 • AdobeMAX06 (45) [RSS]
 • AdobeMAX07 (59) [RSS]
 • AdobeMAX08 (12) [RSS]
 • AIR (112) [RSS]
 • Appearances (113) [RSS]
 • Books (67) [RSS]
 • CFEclipse (14) [RSS]
 • ColdFusion (1115) [RSS]
 • Data Services (6) [RSS]
 • Flash (95) [RSS]
 • Flex (341) [RSS]
 • Jobs (88) [RSS]
 • JRun (12) [RSS]
 • Labs (27) [RSS]
 • LiveCycle (16) [RSS]
 • MAX (147) [RSS]
 • Regular Expressions (12) [RSS]
 • SQL (36) [RSS]
 • Stuff (498) [RSS]
 • Tips (CF Studio) (80) [RSS]
 • Tips (CF) (795) [RSS]
 • Tips (Dreamweaver) (91) [RSS]
 • Tips (Flex Builder) (2) [RSS]
 • Using CF (133) [RSS]
 • Wireless (97) [RSS]

Other BLOGs
 • Charlie Arehart
 • Lee Brimelow
 • Ray Camden
 • Christophe Coenraets
 • Sean Corfield
 • Mihai Corlan
 • Cornel Creanga
 • John Dowdell
 • Danny Dura
 • Enrique Duvos
 • Steven Erat
 • Kevin Hoyt
 • Serge Jespers
 • Adam Lehman
 • Duane Nickull
 • Miti Pricope
 • Andrew Shorten
 • Ryan Stewart
 • James Ward
 • Greg Wilson
 • Full As A Goog

RSS Feeds
 • Feed
 • Subscribe

Join my mailing list and find out about new books and other topics of interest.

Thoughts, ideas, tips, musings, and pontifications (not necessarily in that order) by Ben Forta ...
NOTE: This is my personal blog, and the opinions and statements voiced here are my own.

Viewing By Entry / Main
April 24, 2008

Response To A Question From A Returning ColdFusion Developer

Yesterday I received an interesting question from an individual who used ColdFusion extensively in the CF3-CF5 era, but has no experience with ColdFusion MX or later. He is now getting back into ColdFusion development, and wanted to know what it is he needs to know about ColdFusion today. It's an intriguing question, and I decided to blog my response because A) others might be interested in the same thing, and B) others may have different answers, and I'd like to see them myself. So, comment away, and here is my response ...

Hi,

You've asked an important question. ColdFusion went through a significant metamorphosis going from CF5 to CFMX, and while you can still write code exactly as you used to, I strongly believe that you should not be doing so. Despite being able to run the same old CFML, ColdFusion (as of CFMX) is a radically different product from what it was previously, and being able to fully take advantage of it does require learning some new skills. So, here is where I'd like you to concentrate (in no particular order):

  • ColdFusion MX and later (all the way to ColdFusion 8.x today) is all Java internally. While there is actually no need to know Java to be able to successfully use ColdFusion, understanding the ColdFusion Java relationship is very useful. Just knowing what ColdFusion's Java underpinnings make possible ensures that you'll know what your options are in the future, whatever that future may be.
  • ColdFusion Components are the most important change to the CFML language since, well, since we created CFML. While it is entirely possible to build reusable, organized, structured, manageable, and scalable code without CFCs, I'd not advise doing so. ColdFusion Components are clean, simple, and sophisticated, and form the basis of just about any structured ColdFusion development. (They also are they key to working with Web Services, Flash and Flex integration, using gateways, Ajax integration, and more). While CFML is not an object oriented language, ColdFusion Components provide CFML developers with some of the core benefits of objects, without much of the complexity typically associated with OOP development. Simply stated, ColdFusion Components encourage (and even reward) better development practices. And not using CFCs nowadays raises a major red flag for me.
  • Understand frameworks, methodologies, and more. And no, I am not going to get into a Mach-II vs. Fusebox vs. Model-Glue debate, nor am I going to enumerate all of the invaluable community projects and initiatives in this space. The fact of the matter is that I don't care what framework or methodology or data abstraction layer or standards or best practices you use. I just care that you use something. If one of the established projects works for you, great, use it. If not, then roll your own. You may truly need the discipline encouraged by MVC implementations, or you may just need a document that clearly lays out your rules for variable naming and code organization and more, or you may need something in between, or some combination of options. There is no one size fits all, and what works for one project won't necessarily be right for your next project. What you use is far less important then understanding why structure and organization is necessary in the first place. The just-start-writing-code-and-then-figure-it-out-as-you-go mentality of the 90's is thankfully long gone. And nowadays developers understand that the planning and structure that was the norm pre the instant-gratification .com era is still as important and relevant as ever. That's a good thing indeed.
  • Way back in the late 90's I wrote a column entitled "When Not To Use ColdFusion" that argued that the best ColdFusion apps are not pure ColdFusion apps. Rather, they know when to take advantage of other systems and options, be in SQL stored procedures, Java code, and more. And nowadays this is more true than ever. ColdFusion provides an amazing array of integration options, from Java object invocation to web services support to JMS connectivity to all sorts of gateways to new .NET integration and more. ColdFusion is great at lots of things, but is not ever going to be the best at everything. As an example, just about every DBMS can sort, process, group, summarize, and manipulate data far more efficiently than ColdFusion ever will. In addition, lots of what you may need in your apps may already exist elsewhere, and you should be able to leverage the best-of-breed whenever appropriate. This kind of goes back to my first point, it pays to understand what options are available, so that you'll be ready to use them when needed. The best ColdFusion developers I know are skilled in more than just ColdFusion. They may indeed create and deploy projects that are all ColdFusion, and that is often completely appropriate. But they also know when and how to pull all sorts of pieces together to craft the best possible solution to any problem.

The bottom line is that ColdFusion is richer, more powerful, and far more mature than it was back in the 90's. You can do exactly what you did before, and you'll probably be successful. But, that would be kind of like buying the latest top of the line gaming system and using it to play Pong. Ok, maybe not that extreme, but you get the idea.

Welcome back, there has never been a better time to be a ColdFusion developer!

--- Ben

TrackBacks
There are no trackbacks for this entry.

No trackback URL. Trackbacks are only allowed via interactive form.

Comments
LOL - geez Ben - you gotta pimp your book! :)

1) Buy a copy of ColdFusion Web Application Construction Kit (WACK)
1a) Read the book
2) Start using CFC's
3) Start coding websites with MVC in mind (separation of content is good)
4) Build an application or two in all the major frameworks and pick the one you like best
5) Start using OO concepts (patterns, etc)
6) Join a local ColdFusion user group
7) Join several online ColdFusion groups (CFTalk, coldfusioncommunity.org, etc)
8) Sign up to several of the CF RSS aggregators (MXNA, coldfusionbloggers.org, feed-squirrel!)
9) Stir
10) Enjoy!
# Posted By Jim Priest | 4/24/08 11:12 AM
I would definitely say pick up the latest versions of WACK. Having come from other languages, I learned the most from those books in the shortest time frame. I also agree with Jim Priest in that you need to join a bunch of groups, ColdFusion users are very friendly, and willing to share ideas.

I can't comment on frameworks yet, just because I haven't used one for ColdFusion.
# Posted By John | 4/24/08 11:26 AM
Ben, I've got to respectfully disagree with you here.

"ColdFusion is great at lots of things, but is not ever going to be the best at everything."

While that may have been true as of CF 7.0, as of 8.0.1 I think it's pretty clear that ColdFusion is finally the absolute, indisputable best at every single thing there is.
# Posted By David McGuigan | 4/26/08 7:59 AM
David M... you gotta get out more. Step away from the computer... meet a girl... see the world. ;-)
# Posted By ron hiner | 4/26/08 8:41 PM
hey ben, nice post. just wanted to say tia for those who'd find this useful - thanks for sharing.
# Posted By Aaron Neff | 4/28/08 1:16 AM
Every point raised is well thought out. Yes, I was one of these returning long time CF developers as well (last cut, cfmx7ish, I already started to use cfc even back then...), back to this game about eight months ago.

Also, if I may, I'd add the following note, one shouldn't compete on all thing and everything, I picked the UI piece, to me, the business value of improving user/customer web experience is very important, that's where UI controls kick in...
A bit disappointment at CF8's embracement of open source js libraries such as YUI, Ext etc. is that, not sufficient customization for performance gain, for instance, any CFWINDOW would require a minimum of 45k underlying js libraries to be loaded, which slows down loading quite a bit. Yes, one can roll up his sleeves, do it on his own, then, one simply loses the benefit of CF''s new UI tools, catch 22, also, DIY in this case poses Opportunity Cost issue as well...

Thanks.
# Posted By Don | 5/7/08 6:47 PM
Hello Everyone,

I am the original developer who inspired ben to post this page. I appreciate everyones posts. At the time when cfc's and udf's came along I said to myslef great, another new way to do things (sarcasticly). But taking time away from the industry and being able to come back to a more polished Coldfusion is great.

I am going to list a couple of my findings in reference to a CF5.0 Developer Migrating to MX in general :

This page is an old macromedia page that adobe still hosts. It is from the 6.0 MX release and lists migration instructions for a CF5.0 app and just gives general instruction of the general changes on the surface. Considering this is right about where my carreer ended, this was the ideal place for me to start.

http://livedocs.adobe.com/coldfusion/6/Migrating_C...

Coldfusion is built on top of java. At anytime you can dip right into the java layer and use Java functions that may not be available to you in coldfusion. This allows you more ways to approach a problem. This page shows great examples to get you to start thinking out of the box.

http://www.bennadel.com/blog/241-Finding-Values-In...

One of the other things to overcome is all of the new terminology. New acronyms and qute little terms for old stuff. IDE, MVC, SQL Injection, Web 2.0, Ajax, etc. just a few that me going 'huh' when I heard them.

To Don, I dissagree with you. I don't know how you managed to find a job in coldfusion if you concentrated in UI, unless you are talking about flex. I have been on several interviews at high level places and have been put through the ringer as far as having my knowledge tested in all areas of coldfusion. I think you succeeding with your advice might be a rare occourance and bad advice in relevance to this posting.
# Posted By Joel Ferreira | 5/12/08 6:46 PM

  © Copyright 1997-2008 Ben Forta, All Rights Reserved