By Peter Bell

Railo: What do You Give a Sh*t About?

Part of an ongoing series explaining why I decided to head up Railo US starting this month . . .

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.

Comments
Here's the issue with that argument though... In each of the examples you have given (i.e. .Net, PHP, etc.) you discuss briefly how there is a disconnect between what high level developers want/need and what the masses want/need. You seem to make the argument that what the masses want/need dictates what a language gives a sh*t about and not what a minority of high level developers want/need.

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 ;)
# Posted By Brian Rinaldi | 4/6/09 11:28 AM
So you argue PHP, .NET, Ruby devs don't focus on "making hard things easy"? So why is PEAR for PHP, Rails for Ruby, ASP.NET, LINQ or Visual Studio for .NET? Since Bolt is not officially released yet I'd argue all of these technologies have better tooling than is available for CFML and the tool is actually what makes more productive. I really like ActiveRecord or DLINQ more than CFQuery. No opening/closing connections and much better flexibility than CFQuery.
# Posted By radekg | 4/6/09 12:27 PM
For me CFML has always (and still is) about "easy". I can remember back when I was evaluating scripting languages and I was looking at CF and ASP. I can remember looking at the code required to generate a query. CF was 4 lines, ASP was 20.

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!
# Posted By Jim Priest | 4/6/09 12:29 PM
I think that Railo has the potential for changing the way that the CF community is viewed. Unfortunately it may not be good. If Railo makes it easier for more people to develop in CFML (cause it's free) wouldn't the percentage of CF developers hacking it together also increase? I really think that the price point for CF was helping keep CF developers honest. My thought process is that if I paid thousands of dollars for some software, I better learn how to use it correctly. If I wanted to mess around and hack something together, I would probably go with the free way of messing around.
# Posted By anthony | 4/6/09 1:10 PM
@Brian, No logical fallacy (at least to me). I don't think it is impossible for a CFML engine to focus on making hard things easy for everyone while still making experienced developers productive, and at Railo we've got a team that is committed to both. For me it is the only way that CFML will retain it's best developers (which help everyone in the community) and the only way CFML will be taken seriously outside of its current user base.

@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).
# Posted By Peter Bell | 4/6/09 1:54 PM
How dare you say hat initial 'easy' query is unimportant?!?! Without it I may have grown up to be a .net developer! ACK! :)

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...
# Posted By Jim Priest | 4/6/09 2:11 PM
@Peter: "Ask a graphic designer to build a website in Rails"
Interesting idea... Are you sarcastic?
# Posted By radekg | 4/6/09 4:57 PM
@Jim, I should make this very clear lest there be any element of doubt. CFML is about making hard things easy and should continue to do so. I still have use for my trusty cfmail and cfquery and love how easy it is. One of my goals with Railo is to make *more* hard things easy. I just want to make sure there's a progression so if a developer chooses to enhance their skills they have no need to leave CFML for their web applications.

@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.
# Posted By Peter Bell | 4/6/09 5:05 PM
Email me for my address and I'll tell you where you can send the Railo t-shirt... with the following slogan...

"Railo - Making *more* hard things easy!"

:)
# Posted By Jim Priest | 4/6/09 5:27 PM
did you mean Stuart Halloway?
# Posted By Kevin Roche | 4/7/09 11:24 AM
@Kevin, Ooops - yes - fixed - sorry Stu :-(
# Posted By Peter Bell | 4/9/09 5:01 AM
@Kevin, Ooops - yes - fixed - sorry Stu :-(
# Posted By Peter Bell | 4/9/09 5:01 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.005.