Friday, December 19, 2008

I programmed today and it was glorious: Musings on a road not taken

I had some data work on my medical malpractice project that needed to be done today. I probably should have delegated the work. The guy from our statistics office even offered to do this. But I have learned that delegation often takes more work than doing it yourself, due to transaction costs (moral hazard, sticky information, delays). It was about 2 hours of repetitive manual data manipulation and I decided to write a perl program to do it myself: it was glorious.

I haven’t written any code in years. I had forgotten how satisfying it was. It made me consider the road not traveled. I could have been a programmer. I really love it. And I used to be damn good. Which sounds awful to say, but there’s that 10,000 hour theory, that it takes 10,000 hours to get really good at something. And my mom started me programming when I was 5. So sure, it was mostly print statements and for loops and copying programs out of the back of Boy’s Life magazine for years, but by 9th grade I was taking college level classes, and by college, I was getting commendations and breezing through graduate classes almost as an afterthought. I had gotten three calls from google over the years for interviews each of which I turned down.

In the end, writing the program took two and a half hours, but I have no regrets. It was far more fun than repetitive data manipulation and I am left with more capital that can be used in the future (a working computer program and programming human capital). And even if I had gone the programmer route, it probably wouldn’t have lasted. It seems like most programmers spend much of their career resisting the pull into management, a battle that inevitably they lose. So no regrets. But just fun to ponder.

(I also wonder if I would start my kids on programming at age 5. In some ways, the ability almost seems antiquated like buggy whip making. Though so is geometry and we still teach that.)


James Lin said...

Yeah, you have a Perl program at the end to show for it, but how useful will it be? It's Perl. Will you be able to remember how to use it or be able to modify it when you need to apply it to something else?

I also disagree about most programmers having to resist the pull into management (and inevitably losing). I think that's an issue only if you let it become one; most of the people I know are not being pressured into management. I'm certainly not (of course, I think people know I'd be a lousy manager too). And most of the engineers I know who did make the jump to management eventually jumped back.

Also, as far as teaching your kids programming goes, even if they're not going to be programmers, I think the introduction to logical and algorithmic thinking is generally useful.

HoBs said...

blah blah. about Perl. ok, maybe I'll look into Python. (weird use of white space. eh, like i said, it would probably take me an afternoon to learn it, but that's probably more programming than i'll do over the next ten years, so not worth it. i have considered learning php.)

i agree that you can stay an engineer for a long time. but once you get promoted to Engineer IV (or whatever), you get stuck, so if you want to advance (higher salary etc), you have to switch. you can last a while. part of my thinking on this comes from seeing my aunts and uncles and parents of high school friends many of whom were programmers and many still are, but by the time you're in your 40's and 50's, the pull becomes even stronger.

my mom jumped to management pretty early on actually.

i'd be tempted to teach my kids to program. not sure if R- would agree. but yeah, why not. better way to use time than WoW probably.

yeah, like i said, it's like learning geometry. which we still require purely to teach logical thinking. it really has no useful application otherwise.

but still. i wonder how long my programming experience becomes hopelessly antiquated. i guess much of what i learned is theory, and theory seems pretty stable (a lot of it dates back to alan turing). so maybe it is useful.

though i can still see a time in the near future where programming is so specialized and foreign to what i've learned.