In defense of elite, irrelevant curricula

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.

2 Comments

  1. Here, here. I’m an enormous fan of liberal arts education during undergraduate years. If one has the fortunate opportunity to study at a 4-year university program, one had damn well better spend those years with history, philosophy, underwater basket weaving, and the like, in order to become an intelligent human being with a sense of context. A B.A. is *not* a professional degree. Some of the best finance and technology professionals I know never set foot in a technical course, and I think that’s a causal relationship.

  2. I agree that a university education ought to be concerned with fundamental principles. You said “math, math and more math” but I would even explicitly add logic (or “mathematical logic” if you prefer) and proofs of program correctness.

    But in defense of some of Joel Spolsky’s article, I also think that CS students need to be familiar with using a version control system (just like they need to be familiar with using a compiler). It’s basic to writing software, and for that matter the general principle of version control applies to more than just tracking changes in text files (software transactional memory, RDBMS transactions, etc).

    I think that there’s a good argument to be made for a Capstone project as well. Ultimately, people will always need to be able to sum up their work and present it clearly — even (or especially) if they’re going to be researchers or professors rather than commercial programmers. This is where great programmers (and great schools) can emphasize that what makes them great are their ideas and their work rather than their name.

Leave a Reply

Your email address will not be published. Required fields are marked *