Railo: What do You Give a Sh*t About?
Stu Halloway made a really interesting comment at a "Languages on the JVM" BoF I attended at No Fluff Just Stuff in Boston the other week. His argument was that when choosing a language you shouldn't look at the language features, libraries or frameworks currently available as those change way too quickly to be meaningful. Rather you should ask "what does this community give a sh*t about" as that is a much better predictor of whether it'll continue to meet your needs over time. The question I want to ask is, what do we give a sh*t about as CFML developers, and is that a sustainable position?
There are many sub-groups within the CFML community - I don't think Chris Scott, the author of ColdSpring cares about the same things as a graphic designer looking for a simple way to put stuff from an Access database onto their website using CFML. But as a whole, I'd argue that CFML developers have always cared about making hard things easy - with elegant, simple tags allowing someone without much of a formal programming background to build fairly complex web applications.
By Comparison . . .
To take a stab at some other popular languages, I'd argue that PHP developers as a whole care about "hacking it together", using pre-built packages and the absolute minimum of spit and bailing wire to get an application that their client will pay the $500 they committed to. That's not to belittle the work of the OO, TDD and best practices communities that have grown up within PHP. There are many excellent PHP developers and many scalable well architected PHP web apps - some of which would put many Java apps to shame. But by sheer volume of developers, I'd argue that PHP is about getting it working more than making it maintainable.
.net language developers? I'd say they care about following the Microsoft road map. Using a full stack of Microsoft tools that'll integrate and work well together and leveraging solutions like sharepoint to provide mid priced offerings to mid sized companies and departments in larger organizations. Personally I like to hang out with the crazies who are trying to figure out how to integrate svn or git with Visual Studio and who are driving Microsoft to take TDD, CI and other best practices from the broader programming community seriously. But they're not representative of what the majority of .net developers care about.
Scala and Clojure developers probably care about concurrency (although they could just like functional programming or lisp specifically or just be into the "flavor of the month" languages). Groovy programmers generally care about writing Java applications using Java libraries, deployment tools and monitoring/instrumentation solutions - but doing so more quickly than they could if they had to write everything in Java. JRuby devs generally care about Ruby (and/or Rails) and want to be able to get it inside the enterprise by being able to deploy their apps as a standard Java WAR file.
Back to CFML . . .
So, back to CFML. I'd argue the community generally focuses on "making hard things easy". This was born in the era of the "amateur web developer" where *nobody* really knew how to build web applications and we were all learning as we went - computer science background or not. Nobody wanted to open and close file streams or database connections and simple tags like cffile and cfquery allowed us to write powerful applications quickly.
However, as I'll argue in my next posting, I believe that the website development world is changing from a place where we want to focus on "making hard things easy" to a world where we want to focus on "making experienced devs more productive" - and that's a slot that ColdFusion now has more competition in.



Yet, your argument for CFML is headed in the direction that what the masses want/need is somehow superseded by what experienced, high-level developers want/need. Is it a majority that want "making experienced devs more productive" or is it a vocal (blogging) minority? Your argument wouldn't break down in this manner if you are saying this is what everyone in CFML *should* care about, but that doesn't appear to be what you are arguing.
Anyway, as always, your posts are thought-provoking even when they have a logical fallacy ;)
I was sold! ColdFusion has a wonderful learning curve. Beginners can easily pick it up, and talented advanced programmers can do things with it that I don't even begin to understand.
I think that's rare to find in any language. Add the great CF community and it's hard to beat!
@radekg, Rails doesn't make hard things easy at all. Ask a graphic designer to build a website in Rails and see what happens. It *does* make experienced developers way more productive, but there's a substantial learning curve for someone with no programming background that getting started with CFML tags simply doesn't have. Even with PEAR, the whole idea of a framework and MVC is a very good idea, but it's not the easiest way for someone who has never coded to get a list of users from a database and display them on the screen.
@Jim I agree. Although unfortunately I don't think being able to do a query quickly is going to be as important as web apps become more mission critical, devs become more experienced and frameworks become more pervasive. Anyone who can master ColdSpring can write a wrapper for the ugliest database syntax and call a method to take care of it.
@Anthony, I think the most important thing for CFML is to continue to make hard things easy and to keep the top developers engaged so they can help to provide frameworks, tools and other resources for CF devs to build more maintainable apps (assuming that it's worth it for a given project).
I think moving forward CFML will have to balance that fine line between being easy for beginners to pickup, and powerful enough for advanced developers. Because if it's not easy to learn then there will be no advanced developers...
Interesting idea... Are you sarcastic?
@radekg, actually, yes I am. But I was also making the point that Rails does not make hard things easy - it makes experienced developers more productive.
"Railo - Making *more* hard things easy!"
:)