Wednesday, May 27, 2009

(Language) flirtation vs. marriage

I'm getting another hand-me-down project at work, and I peeped at the code this afternoon. Clean and readable stuff, so I really shouldn't complain. But I'm quite sick of classic ASP. I really could use a vacation from it, as well as from "C" and its cousins. One of the hot alternatives right now is Ruby on Rails, of which I know something close to bupkis. RoR's object-oriented, which is promising. Hopefully that means that I won't have to deal with slovenly variants or--the worst of both worlds--PHP's two-facedness with data typing.

But if I'm to invest the time in learning a completely new grammar, it'd be good to know that the designers were more engineers than programmers at heart. Engineers build to last--that's the ethos. With programmers, the mentality can be more ephemeral, as witnessed by Fred Brooks' "Build one to throw away." mantra. (In fairness I should mention that he's since placed heavy caveats on that, if not outright recanted it.)

You can trash Java for its supposed slowness and kitchen sink approach to APIs. But at least it has the decency to give you a polite heads-up and time to get your affairs in order before yanking a variable/function/class--either from the core APIs or altogether. Anything less is plain ol' hubris. Chase the cool factor on your own time, thanks: I have bills to pay. Because as important as it is to hoist the code into production today, it still has to be maintained tomorrow. And the next day. And the day after that. Until one day, you're scrambling to get another project out the chute, and BAM! Your hosting company or parent company or some agent of The Powers That Be upgrades your server and breaks applications that have been humming along for months, if not years. Have fun rewriting code by the seat of your pants while your clients are calling you every fifteen minutes.

So I expect that I'll be putting in a fair amount of time checking out Ruby's (and Rail's) change history as much as any bells and whistles she brings to the table. If it were just a matter of "playing" with another language, it'd be no big deal. But "experimental" code has a habit of escaping into production--either as cut-and-pasted chunks or the proverbial lock-stock-and-barrel. (If you just cringed--maybe even twitched involuntarily--at that, congratulations: I think you can safely count yourself an I/T professional. ;-)