I'm only a year and a half out of college, which I feel makes it only moderately boneheaded for me to read people's advice for computer science college students and feel like it might still apply to me.
I love Joel on Software. I would read the back of a Lysol can if Joel Spolsky wrote it. But I'm just not feeling this essay. It's hard for me to relate to his story of how he dropped his Dynamic Logic course in college because it made no sense to him to waste time studying something that was so difficult and yet so irrelevant to actual software development. I mean, he's right that a good computer science curriculum is not the same thing as a good software development curriculum, and vice versa. He's dead right about that. But he then goes on to assume that if you're in school for computer science, then you must love programming, so take lots of programming-intensive courses and just try to tolerate those useless "courses in lambda calculus or linear algebra where you never touch a computer" as best you can.
See, I really, really liked those useless theory courses. I did. I liked programming too, but I think that might have been mostly because I liked being around programmers -- they're some of the wittiest, funniest, most thought-provoking people around, and the best way to immerse myself in that was to be one. The theory stuff, though -- I liked it purely for its own sake. I loved linear. I loved combos and Automata. I thought lambda calculus was really interesting (well, sort of). If I hadn't figured so late that I was interested in that stuff, I might have gotten to take a course like Joel's Dynamic Logic. It might have kicked my ass and been irrelevant, but that would have been okay. I don't like that stuff because it is or isn't applicable to anything. I like it because it helps me be a better thinker, which is applicable to everything.
Before I graduated, I asked Mr. Stone if he thought I was good enough at this stuff to go to grad school for it, and he said yes. Then I asked him if I was good enough at this stuff to go to grad school for it and have a band, and he said no. So I decided that I was going to at least try to do one of the two, but instead, I didn't do either and now I find myself drifting into software development. I like software development -- I think. But it might just be that I like the jokes and the folklore and the witty people and the macho little games we play, and now I'm wondering if it's what I'm really supposed to be doing.
So I'm trying to have a band now, but I'm also thinking about school again. Paul Graham writes, "In principle, grad school is professional training in research, and you shouldn't go unless you want to do research as a career. And yet half the people who get PhDs in CS don't go into research. I didn't go to grad school to become a professor. I went because I wanted to learn more." Yeah. See, that's the thing. I don't know if I want to be a professor or a researcher; how is anyone supposed to know a thing like that at age 23? What I really want to do is just keep learning -- so what's the best way to do that?
That's it for tonight; I'm late for a party at my friend's place. He's a developer.