I’m a big fan of Joel Spolsky’s writing, but I take issue with his latest posting. Universities shouldn’t be focused on teaching students the technologies and practices of the day. Anything you can learn by leafing through Getting Things Done, Agile Software Development with Scrum, and Expert One-on-One J2EE Development without EJB does not belong in a university curriculum. Rather, they should be teaching elite, irrelevant subjects like language, history, philosophy, math, math, and more math. (Although what takes the wind out of my sails is that the perfect rebuttal has already been written by Joel Spolsky himself.)
I don’t disagree with the argument that students ought to learn time management and teamwork, and I don’t recall universities doing a particularly good job of teaching those. (It’s been a long time since I’ve attended university, but since they are apparently trapped in the 1980s, my personal experience and memories of my time there are still relevant.) And maybe they don’t teach students about version control, estimating, and many other aspects of being a productive software developer. But here’s why I disagree with Joel’s premise:
1. Universities are supposed to fill the niche in the education system in which we train people to lead institutions and invent the future. I don’t want computer science students studying Spring and Scrum (neither of which will be relevant in ten years). I want them inventing new programming languages, I/O devices, and non-Von Neumann CPUs. I want them studying history so that when they are elected to Congress, they won’t act like idiots. I want them studying language, so that when they make speeches, they won’t sound like they’re illiterate. Let the red-brick universities and multi-compass-point institutions teach Scrum and Spring. Universities should be teaching foundational skills that will be relevant for fifty years, and that can’t be easily learned on one’s own.
2. Once upon a time, the implied contract between employers and employees included on-the-job training. Staff were hired on the basis of personality, brains, and initiative, and the specific requirements of the job would be learned on company time. Today every employer wants their staff to be highly trained, but on someone else’s nickel. Why must it be up to the universities? Even if young employees are perfectly launched, they still need to keep current or they will be obsolete in 5-10 years anyway. Universities should equip people with the underlying skills to keep current – a passion for learning, an ability to focus, and a love of reading. Keeping current is an ongoing activity in any case.
3. Current graduates don’t seem to be able to read, write or do math anyway. (Here’s where I stop defending universities.) Seriously, how can anyone get through 16+ years of education and not be able to write? It’s gotten to the point where if I see a business document with no major grammar errors, I say to myself “how refreshing”. That’s very sad. Same for math; a basic knowledge of statistics is helpful in almost any area of business – but try to find someone who knows the difference between mean and median. My point is that if universities are going to do any refocusing at all, it should be on core skills.
So I urge Ivy League schools to go ahead and teach linear algebra and theory of computation and Haskell programming (which I bet we’re all using in five years anyway – seriously- but that’s another blog entry). And make the kids read Shakespeare and Faulkner. When they’re in charge of everything, we’ll be glad of it.