Wednesday, March 10, 2010

“Whatever Happened to Programming?” ↦

When I was fourteen, I wrote space-invader games in BASIC on a VIC-20. If you were interested in computers back in 1982, I bet you did the same. When I was 18, I wrote multi-user dungeons in C on serial terminals attached to a Sun 3. When I was 22, I worked deep down in the guts of a text database system — still C, now on a Sun 3/80 of my very own, with one of those HUGE bitmapped screens with a million black-or-white pixels. I was in touch with my friends from university: we were going to write compilers and operating systems and cool stuff like that — and to some degree, we did. We sent each other our in-progress code, complained about each other’s programming-language designs, and laughed at how inefficient each others’ completely unnecessary reimplementations of malloc() were. [I remember a friend’s implementation achieving something like 18% occupancy.]

That was then.

Today, I mostly paste libraries together. So do you, most likely, if you work in software. Doesn’t that seem anticlimactic? We did all those courses on LR grammars and concurrent software and referentially transparent functional languages. We messed about with Prolog, Lisp and APL. We studied invariants and formal preconditions and operating system theory. Now how much of that do we use? A huge part of my job these days seems to be impedence-matching between big opaque chunks of library software that sort of do most of what my program is meant to achieve, but don’t quite work right together so I have to, I don’t know, translate USMARC records into Dublin Core or something. Is that programming? Really? Yes, it takes taste and discernment and experience to do well; but it doesn’t require brilliance and it doesn’t excite. It’s not what we dreamed of as fourteen-year-olds and trained for as eighteen-year-olds. It doesn’t get the juices flowing. It’s not making.

Actually, I couldn’t disagree more. Essentially, Mike Taylor is arguing that making lasagna isn’t making lasagna unless the chef in question has made every ingredient from scratch. But where does “from scratch” end? Home-made noodles and sauce wouldn’t be so bad but then those recipes call for ingredients that themselves might not be considered “from scratch”. Must one grow one’s own wheat and tomatoes before one can be said to have made lasagna in Mike Taylor’s mind?