Wednesday, January 07, 2009

What part of computer science is easiest?

Some of computer science is pure math. I took a masters level operating systems course from a prominent professor. He'd done some great theoretical work involving page replacement, and gained a great reputation. But it wasn't at all obvious that he'd ever written anything, much less an operating system. The course was a disaster. But my point is that there are many things that are sort of part of computer science that have little to do with computers, and you can make a living at the highest levels of computer science without knowing a heck of a lot about computers.

I'd say of the bits of computer science i've done for a living, like building computers from parts, hardware troubleshooting, programming, requirements gathering, estimating, software architecture, software maintenance, testing, documentation, systems administration, teaching, database administration, network administration, web server administration, posting web content, and software repository administration that building computers from parts is easiest. Software maintenance is probably hardest, especially if you didn't write it.

I'm often asked what i do for a living. I answer "something with computers". I get blank stares. I like to be understood, and don't care for blank stares. But sometimes, i get the followup question: "What, specifically, do you do?". And i answer "Something. Anything. I do whatever they want me to do." If they continue again, i spit out a dozen unrelated industry keywords and ask if they know what they mean. If the answer is "yes", then i say that i do those things. My motto seems to be that my job is so secret, not even i know what i'm doing.