Why I'm Moving to Ruby On Rails
Well, this is a hard post to write. After months of investigating, soul-searching, and examining, I've decided to move future application development to Ruby On Rails.
This was not an easy decision--at all. I know ColdFusion pretty well and have a lot invested in it. There's a great sense of loyalty to ColdFusion -- and the many CFers I've grown to be friends with and respect. I know many of you will want to know what the reasons for the decision are.
1. RoR is the fastest way I've found to develop applications. The framework is incredibly well thought-out and handles a great deal of the grunt work for me. That means I get to capture the time savings and apply it to concentrating on what I want to accomplish, especially the user interface experience.
2. RoR's ActiveRecord pattern. Boy, did I HATE this at first. I "railed" against it, but the incredible ease of persisting objects finally wore me down and won me over. Even complex relationships between objects are easily handled.
3. Ruby itself. Much has been written about how Ruby brings "joy" back to programming. When I first read this, I thought, "Oh, please...This is a language, not a religion." And, no, it's not a religion, but it's a really well thought-out language that just is so nice to work with. If you've used jQuery and are a fan of that (as I most certainly am), RoR seems like jQuery for the server.
4. RoR's way of dealing with databases. RoR has a notion of "migrations" -- Ruby code that creates and maintains databases. Each time you want to make a change, a separate migration is created. Each migration has an "up" and a "down" method. "Up" makes the changes; "down" rolls them back. The database is, in large part, abstracted away.
5. Plugins. Need to do something tricky? Chances are someone has already done it -- and made it available as a Rails plugin. And Gems is a terrific way of installing/maintaining plugins effortlessly.
6. The myriad of "little things". Helpers that eliminate cross-scripting attacks, easy form validation, closures, the ease of responding to different formats: HTML, XML, web service, etc., nested RESTful resources, built-in testing, fixtures for populating databases -- I could go on and on. As I said, this is a really well thought-out framework.
But this was a hard switch for me to make. Really hard. I didn't "get" RoR at all at first. My friend, John Quarto vonTivadar, coached me through a lot of this and had to put up with me railing against Rails for a long time. At one point, completely frustrated, I told John I was going to write a book: David Heinnemeir Hansen Must Die".
"DHH", as the Railies call him, is the author of Rails. In the beginning of my journey with Rails, I decided he must die because Rails is just so freaking big and does so much, making it -- for me -- hard to learn. I kept fighting Rails. "Why is it like this?" I found that resisting the urge to evaluate BEFORE I had fully learned the framework helped me. (John can attest to just how long this realization took to occur.) By the time I'd grown to really appreciate Rails, John asked me, "So does DHH still have to die?"
"Yes -- because he's so damned much smarter than the rest of us!"
There are some things I like and don't like, also. The Rails community is incredibly excited, active -- but that has, at times, overflowed into a "We're better than you!" mentality. But I think that's just natural excess and I see no signs of that from the thought leaders in the Rails community (people like DHH or Yehuda Katz).
Having read 4-5 books on RoR, I'm still waiting for one REALLY good one that doesn't start with "Let's create a Rails app in x minutes and don't worry about all the magic code in there." I don't much like magic code: I want to know what's going on and it's really NOT necessary for me to "get an app running". I know what running apps are like. And I know that an app done in x minutes is one I'm not going to be creating very often -- so don't skip over things so easily.
So, I'm leaving ColdFusion with greatly mixed feelings. I really cherish all of those of you I've gotten to know over the years. I have great respect for CFers who, to an inspiring degree, are in the business of delivering great applications -- often without getting the respect they deserve. I'll probably be posting from time to time on RoR but don't have any plans for teaching it: I just want to immerse myself in it and, like you, create great applications.
And let me take this opportunity to thank all of you. The CF community has been incredibly warm and welcoming to me. There are some really great people who do an enormous amount for the community. Knowing that I will leave out so many worthy of recognition, let me say a personal "thank you" to Ray Camden, Joe Rinehart, Matt Woodward, Michael and Judith Dinowitz, Ben Nadel, Clark Valberg, Liz Fredericks -- ah, there are too many to mention. I may be leaving, but the CF community continues to thrive and I wish only the very, very best for you all.
With sincerest warm wishes,
Hal


We're sorry to see you "go" but I don't think I'll ever stop learning from you. All the best.
My main question is... is RoR completely versatile or do you feel like you have to conform to it's box of methodologies?
In fact it would be interesting to hear your thoughts on how Rails does things 'better' or 'different' (?) than CF since you will have experience in both.
And you will still be facing the same problems - it will be interesting to read how you look at solving them now from a different angle, with a different language.
Jim
In fact CFHour.com were just asking for someone with experience of RoR and CF! It would be really cool if you could speak on their show them help explain some of your reasons in more detail to us all.
I personally cannot comment on RoR as I don't have any experience but I do understand how hard it is to make such a switch as I came from a ASP background before CF but I am glad I did, I wish the same for you or that you return soon! ;-)
Anyway, I'm more than confident that there's still a lot to be learned from your Tweets and blog posts, even though I'm somewhat sad that this creative output will not be about CF anymore :)
Any bets on when we may expect a "Why I'm ruefully returning to CF" blog post?
I am with you on the books part, please share your thoughts if you find any good book that does not teach app building story.
@Markus: LOL. Hey, anything's possible! I'm a firm believer that intellectual honesty requires us to be willing to make fools of ourselves.
Best of luck with the RoR - it's definitely a lot of fun. I almost switched to Grails (Groovy isn't quite as nice as Ruby and Grails isn't quite as mature as Rails, but access to the power of the Java frameworks and support for WAR deployments onto existing Java infrastructure won me over when comparing Rails and Grails).
In the end I've stayed in the ColdFusion camp (mainly because of Railo), but I think it's always good for us to learn from other languages, frameworks and communities, so I'm looking forward to your future postings on what you're loving (and not loving!) about app dev using RoR.
And most people deploy to Apache + Passenger or NGinx these days, mongrel is used for local dev. Oh and let's not forget JRuby if you want to deploy on Java...and IronRuby if you want to deploy on .Net and MacRuby if you want to write desktop apps for OSX...the choice is yours!
We understand that there are different languages for building applications, but isn't it for all of the other reasons, than you list here, that we have supported Adobe and built on the ColdFusion Engine? I still think the addition of simple calls for PDFs, and now Excel, search, etc. etc. Are the reasons for using the CF platform as opposed to any other. Not really to debate your choice... but rather to highlight the reasons we do continue to enjoy working in this technology.
I wish you all the best and monumental success.
Unfortunately there are no CF jobs anymore and I suspect many others will follow.
How did we get here and how (can) we get out?
I want to particularly thank you for bringing me on board with Mach-II. It's a project I continue to enjoy working on to this day, and as you might imagine we're looking at frameworks like Rails and Grails for as we continue to push Mach-II forward.
As many others have said it's not like you're really "going" anywhere, so please keep up with the blogging, especially on the "soft skills" topics because you're a very wise man in those areas. I enjoy reading the thoughts of great thinkers like yourself regardless of their technology of choice, and I'm sure you'll continue to have words of wisdom for us all from the "other side" (if there even is such a divide).
I myself am starting to do more Grails these days, and if nothing else I hope your post opens the eyes of the CF community and makes us all a little more curious as to what's going on outside our walls.
Thanks again Hal. I wouldn't be doing what I'm doing today, and certainly not as well as I hope I'm doing it, without your help over the years.
How ever, everyone needs to explore the world. Go with my blessing. It won't be long though, before you miss the power and flexibility that comes with a full-stack Adobe solution. RIA applications on RoR are still a generation behind. Integration with PDF and Office documents lag even further. The great minds that build leading-edge frameworks like FW/1, datafaucet, and Lightfront go missing in the RoR world.
Soon, I predict, you will return to the CF community, and we will welcome you with open arms (and open legs--haha that's a who song).
Brock Baxter
Are you breaking up with me?
Love,
Coldfusion
Best of luck bud, see you in about 6 months when you come back to CF in tears of joy.
Why you need totally to abandon one language, to work with new one? However, I wish you all the best with RoR and related projects.
Hat off
We can make a case for each of them and argue for days.
Personally, I do almost all of my personal project in Drupal+PHP+jQuery while I still love to do ColdFusion + Flex. Drupal is WAY faster that RoR for almost any project.
I'm checking out Django/Python next. It's FUN to learn and develop with new languages.
And if you really want to develop web apps quickly, why bother programming at all? http://theresamoduleforthat.com/
Like so many others, I too will miss you. You have brought so much to the CF community. Your OO contributions to CF, Mach-II, and articles did so much to propel CFers ahead. It really made the language so much more than a scripting language... it had power.
I understand your move, but please know you will be missed. May I suggest that you write some articles on switching from CF to RoR? Your insights would be hugely valuable to both communities.
Respectfully,
Ray K. Ragan
However, I suppose I should mourn for you as an alcoholic might for a sober person who joined him. Ever since I've used ruby, programming in many other languages has begun to hurt so much more (C#, Java, PHP, R, LUA to name a few). It's been 8 years since I last programmed in ColdFusion, so I don't know what it's like right now.
At any rate, Ruby is a very enjoyable language that I still love using after 4 years. And Matz is a really nice Japanese guy. And Sushi can be quite delicious.
Tim
I'm actually a fan of Rails, but in the same way that die-hard Michael Jordan enthusiasts were fans of Scottie Pippen. It's neat that he's there to help the web development industry, but most of the time it should hand the rock over to MJ so he can do it mo betta.
Daily i say, f*ck Id be done if this was a rails project...
Sorry to see you make the switch, not for you, but for the loss to the CF community. I wish you well.
To the others posting who are "watching the jobs disappear," I've hired 15+ CF programmers in the last 18 months, and I'm still adding more. That has been the nature of the CF market in general in my area.
While I do understand that the market can seem to be shrinking in some geographic locations, it's exploding in others, like mine. I don't claim to know the overall balance-sheet of CF developer loss/gain, I'd venture to guess it's a lot closer to a zero-sum-game than many would expect. The loss, IMO, is in the brain-trust of those, like Hal, who leave CF. I trust Hal's not whitewashing his blog and removing his CF contributions to the community anytime soon, though.
Right on. I see new CF job postings all the time. You just have to know where to look. Usually when I see "there are no CF job postings anymore" the evidence is anecdotal, at best.
I'd love to connect about the CF opportunities you mentioned. I've got 12 years experience as a CF programmer, but here in the Seattle area, CF jobs are becoming pretty scarce and I'm available immediately. :) rebecca [at] electrum93 [dot] com
Say hi to John for me next time you talk to him.
Stay in touch!