| jackwilliambell ( @ 2005-12-29 11:43:00 |
| Entry tags: | art, humancondition, joelspolsky, programming |
Joel Spolsky is wrong
Joel Spolsky has a new essay up on the perils of teaching Java in Computer Science schools. His point boils down to "Java is not hard enough, so the marginal students aren't dropping out."
I say Joel is wrong. Or, rather, he is so right that he is wrong.
Let's start with where Joel is right: Forcing students to learn pointers and functional programming is a good way to weed out the kids who don't have the natural talent to be great programmers. If you are focused on creating stars (or, as Joel is, on recognizing and recruiting stars as employees) you need some way to separate the sheep from the goats, and sheep who have problems understanding recursion are never going to understand doubly de-referenced pointers or continuations.
Let me stop here for a moment and point out that I believe star programmers have a natural talent, something that cannot be taught. And, in the case of stars, the only thing a difficult CompSci program is doing is helpfully mark them as such. Because they have this natural talent they will pick up whatever they need as they go even if they never see the inside of a CompSci classroom!
What Joel wants is for the schools to mark the stars for him. He wants to be able to select from incoming resumes by looking for the appropriate degree, even if it means he is going to miss out on the stars who, for whatever reason, didn't have a chance to go to a fancy school with a LISP programming requirement. (If you read his essay linked above you will note the irony: he expends considerable wordage castigating HR departments who GREP for Java in the resumes.) This is the first reason Joel is wrong.
The second reason is more subtle; the world needs more than the few star programmers we have can give. Yes, if you are hiring Software Architects, Programmer Leads, Systems Programmers, or Tool Developers you need stars. But the world has changed in a fundamental way in the last generation; we are so dependent on software in business and government that, without it, things would collapse. The amount of code that needs to be written exceeds the capability of the stars. (This despite the fact that a star is considerably more effective individually.) You need programmers in the trenches who will never be stars but, given clear specifications and a good software architecture as a framework (created by stars), can fill in the gaps for you.
In fact, I believe just about everyone can learn to program — and should. Let me give you an example based on singing; pretty much everyone can sing and, with a little training, most people can sing fairly well. Certainly some people have a natural talent for singing and will eclipse the rest, but if the world needed singers in every bar and church chorus you couldn't get enough stars to do it. You would need to train mediocre singers and have them sing songs written and made famous by the stars. Furthermore, if you wanted people singing in every business you would probably want some of your sales clerks, dock workers, and wait-persons to be able to sing as part of their job. In fact you would probably want singing taught to everyone in public schools, partially so that most people could sing and partially so that you could identify the future stars early, and encourage them.
Programming should be the same way. To some extent the ability to write small programs and understand how programs work is an essential ability that nearly everyone should have. Yet Joel is right when he says 'dumbing down CompSci' is a bad thing. But he is missing the real point: Everyone should learn some programming and as many people as possible should learn programming to the Java/C#/Visual Basic level. What we truly need (and what Joel is really asking for) is a Juilliard of computer programming.
But, before that can happen, we need to acknowledge that programming stars are born, not made. And, like all divas, programming stars tend to be more difficult personally. This a shift the business world seems to have trouble with. Witness the focus of so many businesses (including Joel's) on CompSci degrees (even dubious ones) over accomplishments in the real world.
And, yes, I am bitter about that for a reason.