An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

What it takes to be easy

June 15, 2007 ·

Many of us have seen the (infamous) Ruby on Rails "Blog in 15 minutes" video and probably also Joe Rinehart's "Blog in 9 minutes" Model-Glue: Unity video. It makes it all look so easy. Wow! We should all use Ruby on Rails (or Model-Glue: Unity) because it will clearly make us so much more productive! Of course, as those folks who've struggled with Model-Glue: Unity (or Rails or any other framework) know only too well, it's not quite that simple! So why do some people struggle when others find these frameworks so easy and so productive? The answer is blindlingly obvious, unfortunately, but it isn't an answer most people want to hear. Sammy Larbi asks "is Rails easy?" and points to Venkat's blog entry "Can your cat code my Rails App?". The answer to both of these might seem obvious. The answer to the second question is clearly "no". The answer to the first question is, unfortunately, "it depends". As Venkat says:
I asked why she thought developing with Ruby/Rails is so darn simple. She said she had seen a demo of a fully working app being created within minutes without much effort or code.
The videos are, of course, somewhat misleading because they show what someone can do once they already know the framework really well. It's the same reason that experienced OO developers find OO so liberating and productive: they already know OO really well! Venkat compares C++ and Java, saying the latter is more productive with the following caveat: "I doubt anyone would say that Java makes an ignorant programmer more productive. You did have to take the time to learn the details of the language, the platform, and the API." The point behind all this is that there really is no silver bullet. Using a framework doesn't automatically make you more productive from day one. You have to learn how to really use your tools and sometimes that learning process is non-trivial to the point of seeming endless (and being a lot of hard work!). I post this because I got into a somewhat heated discussion at CFUNITED a few years back with someone who thought OO was dumb because they'd tried to use it and it made a mess of their application. I said that it takes time and effort to learn OO in order to be able to apply it properly. They got offended, thinking I was telling them they were too stupid to learn OO. I've repeatedly said: this stuff is hard. I started doing OO in January 1992 and I'm still learning. OO has mostly become second nature to me now but that doesn't preclude me from learning new techniques - often from people with less OO experience - that help make me more productive. So don't think that Rails is going to turn everyone into super-productive programmers overnight - most people coming to Rails already have a fair bit of Java and OO experience so pick up the concepts easily and, once they've learned the Ruby and Rails specifics, they can be more productive than they were in Java. It's the same principle that applies when you learn a new framework in ColdFusion. It may seem strange at first and may look like extra work but once you understand most of the specifics, you can be much more productive. Just be prepared for a learning curve.

Tags: architecture · coldfusion · programming

12 responses

  • 1 Rich Kroll // Jun 15, 2007 at 1:13 PM

    Great post! I can say from (a somewhat frustrating) experience that what you are pointing out here is extremely true.

    One of my favorite analogies to point this out is that of a professional golfer - they make golf look easy. Anyone who has ever tried to play gold knows how truly hard it really is. The more effort we put into something, the more effortless it becomes.
  • 2 Ken Sykora // Jun 15, 2007 at 1:22 PM

    You've got it right, Sean. It's real important for us as developers and educators to understand that paradigm shifts often have steep learning curves. It's especially important for developers to not learn to "settle down" with a specific style of programming because this industry changes so quickly.
  • 3 Mark Lapasa // Jun 15, 2007 at 1:23 PM

    If I ran into that guy who thought OO was dumb because it made a mess out of their app, I would recommend to them to skim through Responsibility Driven Design (Wirfs-Brock). That book makes OO dumb that anybody can do it.
  • 4 Jim Priest // Jun 15, 2007 at 1:37 PM

    I never associate using a framework with 'fast' or 'easy'... To me it's much more about maintenance.

  • 5 charlie arehart // Jun 15, 2007 at 1:44 PM

    Very good observations, Sean. I concur. Thanks for putting it out there. Indeed, I made a similar plea for better resources to help developers learn about OO (in transitioning to J2EE from non-OO platforms, like CF), in a Sep 2001 Java Dev Journal article, at Sadly, the state of things never really improved.
  • 6 Nathan Dintenfass // Jun 15, 2007 at 1:54 PM

    And on top of that the "N minute" demos gloss over the fact that you have only rudimentary functionality -- as everyone here knows, software ends up coming down to a lot of details to be successful, not the "basic" functionality. Yes, such frameworks can be huge time-savers once you know how to use them, but getting the details right never stops being a necessary part of building great software, and that is rarely, if ever, measured in "minutes".
  • 7 nylarch // Jun 15, 2007 at 1:56 PM

    I think the "what they don't tell you" is that if your domain is similar to the "blog" type project - i.e. building something relatively straightforward from scratch - it can be a great fit. Even something like Basecamp is a really straighforward app - in fact that's really its strength.

    In the world where I think most of us make our money - especially corporate - our projects are generally not nearly so clean and often have to tie together legacy code, systems, DB schema, etc. etc. There are quite often things not really under your control in that kind of environment. I think ColdFusion can be a better fit than Rails for these types of apps in that its really really flexible.
  • 8 Sammy Larbi // Jun 15, 2007 at 7:30 PM

    Sean - Excellent post. You just about said everything I wished I could have thought of when I wrote that I didn't think my cat could do it. =)

    As for the N-minute videos - I see them designed as marketing and "here is the strength," so I don't deem them offensive in that regard. But, if/when I do one again, I'm going to try to remember to point to this post as a caveat.

    Again, just a great post.
  • 9 John Farrar // Jun 16, 2007 at 10:37 AM

    Good point. The guys who attended my session at Frameworks last year (and don't tell me that just because you had a session at the same time as me that was a good excuse for not attending! LOL) heard me bring up a simular illustration.

    Years ago when the Amiga computer was in it's day I was an Amiga enthusiast. There was a live debate over the old compuserve chat system between two of the lead compuserve gurus. It came down to closing arguments. The IBM/PC guy said that if the Amiga was a serious computer there would be classes offered for it. The Amiga guy said if the PC was a decent computer you wouldn't need classes to run it. (Time proved him right as the PC went stronly into the windows environment also.)

    The historic problem I have with things like RoR, Flash Forms in CF and many things is that if you need to take it to the next step beyond the demo... how much of a jump is the next step? Here is an area where dotNet developers suffer. It gets them in with a pretty interface and site creation wizards. But if the shoe doesn't fit most developers are up the creek without a paddle.

    ColdFusion in general is (noting anyone can abuse the power of simplicity with spagetti code, etc) at it's core the best platform for moving a new developer up the line to more technical apps a step at a time. IMO, again... IMO RoR and dotNet require much larger technical leaps when the wizards can't do the job for you. :)
  • 10 William Fisk // Jun 16, 2007 at 11:33 AM

    I would also agree that neither ColdFusion nor Rails are easy. After all, they both require a certain level of understanding of programming and web technologies.

    They can however make you more productive once you know what you are doing.

    What would be "easy", would be the web equivalent of Visual Basic. A tool that would allow me to design all my interface visually and then just write some simple basic code behind the button clicks. I don't know about your cat, but certainly a tool which would allow my Mum or my dentist to create a web application (all due respect to mums and dentists).

    Where is that development tool?

    What would be an easy tool would be the web equivalent
  • 11 Sean Corfield // Jun 16, 2007 at 11:55 AM

    @William, that development tool would probably be Contribute. I've had a lot of success setting up a site with Dreamweaver for completely non-technical users to then maintain with Contribute.
  • 12 William Fisk // Jun 16, 2007 at 12:45 PM

    We do use Contribue at my work, although I do not use it, but I think that its mainly for creating static content and not for creating even a simple application. I know that end-users would love a tool that they could just knock a few forms together , the data would be saved "somewhere".

    Your post covered three interesting points for me:

    - The myth that Rails is easy. And its just not from the watching the videos. I learned it from Curt Hibbs original articles, and followed along. I thought to myself: "this is very easy." It was only a bit later that I realised that it was not easy (actually when I realised all that I had to learn in order to do the easy stuff). Fun, yes. Productive, yes (if you do it all the time), but I couldn't say it was easy. Simply because there is a lot you have to know (and I mean HTML, CSS, some javascript, Ruby (language and idioms), MVC, even some theory about REST now). Its all good stuff but it takes time to learn it.

    - How to convince someone that OO is the right way to go? I feel personally that you cannot. Either they're interested and they'll find it themselves or they're not and they won't - just my opinion. I find that I have to remind myself why OO is the right approach - and the answer to that is always: "to manage complexity".

    - And finally one of the differences between ColdFusion and Rails (and by the way I use them both - they're my favorite two web tools). Rails is of course a framework. You cannot do a Rails application without using a OO-based MVC framework simply because that's what Rails is. ColdFusion on the other hand does not force or even encourage you to use a framework. This makes it initially more approachable but harder then to convince others to use one of the ColdFusion frameworks.