The Perils of JavaSchools, by Joel Spolsky

Maurice Naftalin and Peter Buneman both sent me pointers to this blog entry on the same day. (Peter claims to be the faculty member described in the entry as having almost killed the writer.)

My favorite quote:

I have never met anyone who can do Scheme, Haskell, and C pointers who can't pick up Java in two days, and create better Java code than people with five years of experience in Java, but try explaining that to the average HR drone.

And another favorite quote:

Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable. The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet, the world's largest massively parallel supercomputer.

There are two arguments in this piece. The first is the explicit one about teaching recursion and pointers. The second is the implicit one that teaching is about weeding out the weak students.

Regarding the first argument, I agree that a CS course should include recursion, pointers, etc. But the second argument is bogus. I believe that the job of teachers is to make students understand, not to select the group of students who can survive their poor teaching. A drop-out rate of 30-60% is an admittance of incompetence on the part of the teacher.


I don't know if the way the Spolsky article is flagged here really helps promote the cause of 'alternate' programming paradigms to the boring old commercial ones. I do agree that a good CS education is a foundation for software engineering, and that if you reduce the curriculum that education will suffer.

However, a common thread of discussion within the Java world is that the learning curve for 'fat' Java is now quite steep - admittedly for reasons of breadth and crustiness (read bad/ugly APIs) rather than depth or elegance.

A competent software engineer will pick up a new language quickly whatever their origin, but will they be productive in a team? CS graduates, like all of us, have a lot to learn when entering the workplace.

Anyway - I don't think this is all about language, style or even CS education. Isn't Spolsky just complaininng about how hard it is to recruit when anybody can check boxes in a recruiters database or email you directly with another bland CV? He's always writing about recruitment - it's part of their way of getting interns and recruiting.

On the other hand, how many commercial software houses offer more than either a) decanting data from DB to web and back or b) assembling applications from off-the-shelf components?
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?