Forget quality, man, give me speed

At a recent copasetic conference, I had the pleasure of being a member of a panel discussion moderated by one of our industry’s hippest dudes, Ted Neward, where he posed a question something like this:

Imagine a developer coming up to a manager/CTO/CIO and asking if they could create the next version of the company’s application with Haskell (or some other hip language/tool/framework)– what should the manager say? What should the manager ask or look for when it comes to all these neat-o options?

There are, of course, a few answers to this question; however, my answer to this is simple– speed.

If [insert your buzz word here] can produce working features with an acceptable level of quality (meaning that one can maintain it) faster than [insert establishment tool/framework/language] then the answer is yes. Note, I’ve stressed the notion of quality and thus maintainability, but it’s secondary– speed is everything in a competitive market.

Think about for a second, man. Why has Hibernate essentially dethroned EJB to become the king of Java persistence? Is it because Hibernate is better? Hibernate is arguably “better” than EJB, but the truth is, better rarely wins; plus, better is hard to define. The reason why Hibernate won the battle is because at the time when EJB was the “Enterprise Choice” you could more quickly knock out a working persistence layer with Hibernate. What’s more, Hibernate is easier to test and deploy, making the choice an obvious one. Have you seen the latest EJB spec? Looks a lot like Hibernate, doesn’t it?

Why has Rails obtained so much tripping attention? Is it because Ruby is a better language than Java? If you’ve ever had the pleasure of writing Ruby code, you’ll probably say yes; however, once again, better doesn’t win over crowds– if so, we’d have all been programming in Ruby 10 years ago. The reason why Rails is so hip is because you can knock out a working web site in short order. Try that with Struts. If you’ve ever developed a Struts application (based upon recent polls, that’s just about everyone), frameworks like Rails (and Grails for that matter) are a breath of fresh air. Not only do Rails and Grails enable rapid turn around of features, they do it with tests in mind– every time you generate some artifact in these frameworks, a test skeleton is also generated (it’s up to you to actually fill it in) but a large part of the effort has been taken care of.

Why is Agile hip these days? Is it because Agile is easy to adopt as a process? (If you answered yes to that last question, you’re probably doing something wrong.) Easy isn’t what’s selling Agile– heck, Waterfall is a much easier process to adopt, believe me, man. No, the reason why Agile sells is because Agile methodologies facilitate speedy feature development. And, remember, Agile methodologies absolutely stress quality– TDD and CI, are, for example, the brainchildren of Agilests.

Some will argue that it is a safer choice, to say, develop an application with Struts, Tapestry, etc rather than Rails or Grails because there is a larger base of talent that knows the established “standard”– this is certainly true in the beginning for early adopters, but as we’ve seen time and time again in our industry, the tool that produces working code quickly eventually becomes king. How many people do you know have worked with EJB? How many have worked with Hibernate? I’m willing the bet the answers to those questions can be swapped depending on when you asked them (and how long that person’s been in the industry!). How’s that for an Acid flashback, baby?

Besides, the safe choice is rather short-sighted; in fact, the safe choice may end up costing a lot of money in the distant future– because it’s their bag, COBOL programmers will command high dollars in the near future. The opposite is also true– bet too early on a technology and you’ll pay out the nose as well– bill rates for Rails programmers appears to be quite nice these days. It’ll level off, albeit slowly.

Speed without quality kills, but speed with quality sells, baby. Frame your answer (or for that matter, question, request, etc) around speed and people will listen– frame it around features or worse, quality, and prepare to meet blank stares. Dig it?

Related odds and ends
 

12 Responses to “Forget quality, man, give me speed”

  1. on 17 Oct 2007 at 6:26 pm Andres almiray

    Amen to that brother! I had a similar discussion with my manager about adopting [insert hip dynamic language here] a year ago, unfortunately the conversation went the way of features and not speed, its worth saying that the language did not stick. Live and learn.

  2. on 17 Oct 2007 at 7:01 pm Andy

    Right on, baby! Thanks for story, Andres. Keep on groovin’ with those slick Groovy articles, friend!

  3. on 18 Oct 2007 at 7:47 am Stephan Schmidt

    “… if so, we’d have all been programming in Ruby 10 years ago.”

    I have been programming Ruby 10 years ago - when all documentation was japanese :-) I even wrote a component web framework with convention over configuration back than, because I was amazed by the Ruby meta programming qualities. So much power at your fingertips. So much better than JSPs or Python CGI.

    10 years later I mostly develop Java apps. With some Grails sprinkled in (like in Reposita).

    I wonder what I do in 10 years from now (at least in my spare time, as I do no longer develop for money). My current guess is something much more stringent with more powerfull - but explicit - type checking for the backend and something dynamic for the front. With the explosion of the internet and software development in the 90s the ugly maintenance-legacy-medusa will rise it’s many heads. And already is rising in some Rails projects ;-)

    Peace
    -stephan


    Stephan Schmidt :: stephan@reposita.org
    Reposita Open Source - Monitor your software development
    http://www.reposita.org
    Blog at http://stephan.reposita.org - No signal. No noise.

  4. on 18 Oct 2007 at 8:12 am Andy

    Stephan- you make reference to maintainability issues w/Rails applications– what are you hearing/seeing? Just curious, man.

  5. on 18 Oct 2007 at 12:26 pm Mohammad Tayseer

    Speed of development is the key to quality software, because the faster you develop & change, the faster you achieve quality.

  6. on 18 Oct 2007 at 12:31 pm Andy

    Mohammad- hey, I was in the dark on an IronPython book– thanks for pointing that out on your blog, baby!

  7. on 18 Oct 2007 at 5:53 pm BK

    I would agreed speed is the thing because:

    1. A product released out the door can book revenues. Management ultimately look at revenues, not tech support backlogs.

    2. You can preempt your competitors by claiming “first-to-the market” sales pitch.

    3. Softwares in the 21st century have shorter “in-vague” life. So rake in revenues while you can. (Most supermodels in their prime knows about this fact, don’t they?).

  8. on 18 Oct 2007 at 6:01 pm Andy

    BK- totally, man. Why is Disco king? Yes, it is better music, but the real reason is that disco dancing brings in the women quicker. It’s that simple. And all the supermodel babes from the age of Disco are still smokin’.

  9. on 18 Oct 2007 at 7:37 pm staticnullvoid

    It was a good weekend. I learn a lot from Ted. HAR.

  10. on 18 Oct 2007 at 9:24 pm Andy

    staticnullvoid- indeed, a disco weekend– great crowd in MN. Lot’s of smart people!

  11. on 20 Oct 2007 at 6:47 am JavaDev

    It’s like it was just yesterday……

    or…ok it was just this weekend…so, i’m a little nostagic already…sue me…btw, it was “swag-a-lious”.

    Andrew Glover : Forget quality, man, give me speed [ link ] [ trackback ]

    other nfjs tc reports found on internetz:
    NFJS Con…


  12. [...] read more here [...]

Trackback this Post | Feed on comments to this Post

Leave a Reply