Teaching

Yesterday I spent a couple hours helping one of the students. (I think he's a grad student now, so maybe it's not kosher to still call him a student.) He was trying to compile an add-on for CHARMM, and was running into lots of problems. Some were because of poor instructions from the add-on, and some were due to the (ahem) Byzantine build process that CHARMM uses. (In the words of Bryan Cantrill: "Oh, there are things I'm NOT saying! Believe me, I'm holding back!")

I ended up talking to him for close to two hours -- not just solving his problems, but trying to explain to him what I was doing and why. This happened to be compilation problems, so we covered object files, dynamic versus static libraries, compiling and linking -- but also patching and why you should script things whenever possible. Odds are he'll have more questions today when he comes across something else.

I'm happy to spend this time with him. He's interested (or at least doing a damned good impression of being interested), and I want him to understand what's going on. It'll serve him well to have the background information needed to (say) understand what a compiler error looks like and how to find out how to fix it. He's in bioinformatics (or rather, he's doing computer simulations of protein folding, so if he's not in bioinformatics precisely, he might as well be) and odds are, he'll need to do this sort of thing himself someday.

Not everyone's interested in this level of detail, of course. But even in my small department, there are usually one or two people each year that want to learn. Sometimes it's the obvious geeks; sometimes it's people I never would have guessed would care, or have such an aptitude. There are a few that I think would make good sysadmins, and I make a point of mentioning this to them.

This is one of the most enjoyable parts of my job. I love seeing the light dawn in people's eyes when they realize what Unix is capable of, or how packets flow from here to there, or how to write 50 lines in Perl that save them 500 in C++. I've had compliments on my teaching ability before, and my wife has suggested more than once that I consider doing it formally, so I'm cautiously optimistic that, while I'm probably ignorant of the huge amount of work it'd be, I wouldn't entirely suck.

I've got friends (Hi Andy! Hi Victor!) who teach at universities -- system administration, programming -- and at some point I'd like to follow in their footsteps. (And this is the point where my inner Limoncelli says, "Great! Now write down the steps needed so it'll get done!")

Inna meantime, it's informal: no marks, no tests, no structure...just, "Hey, lookit this. Isn't that neat?"