Wednesday, January 09, 2008

On JavaSchools

Joel Spolsky is at it again. He's commented on so-called JavaSchools. He says that the transition to Java as a language for teaching programming is producing worse software engineers. Boo hoo!

He points to these other guys that do work on Ada, who are interested in finding coders that do systems programming and security programming, and wouldn't you know, they don't have the right skills to be hired for this rather specific kind of programming. And like parents who complain schools don't do a good job of teaching, but feel no inclination to do any teaching themselves, these companies whine that the graduates being produced aren't up to snuff, but aren't particularly interested in making up the difference.

Now I like Joel. I've met him, and he seems like a nice guy. He doesn't seem full of himself. I understand where he's coming from. He sees the programming world a bit like the NBA. In the NBA, only the very best survive. Many people can't cut it, and they do rather badly, scraping by, making a living playing in minor basketball leagues in the US, or perhaps playing in Europe. He knows that the best software is written by the best of the best, and lucky for him, he doesn't have to pay NBA salaries to get this quality.

I'm sure he's never had to teach an intro course, where he's responsible for getting the students to learn as much as they can, given that some lack the intellect, the drive, the tenacity to be great programmers, where, given this situation, he must still try to get these kids to be the best they can be, even if this is far, far removed from what he wants.

Would he scream to the heavens "Don't you understand you're incompetent? You can't slam dunk. You can't hit a reverse layup. You can't leap from the free throw line to make a dunk. You can't do a no look pass. You have no coordination at all" or the equivalent of this for programmers.

The fact of the matter is that programming is tough, and that teachers of programming want to believe this isn't the case. I've taught classes where students are frustrated learning about pointers and memory management and recursion and design of classes and linked lists and trees. It is so difficult, so challenging. And they spend so much time trying to track down bugs. It's as if they were learning to drive a car, but the car had all these kinds of issues that force you to actually look under the hood and do all sorts of adjustments, all sorts of repairs, instead of sitting down and enjoying the ride.

Say it, Joel! Go in front of those students at Cornell, at MIT, at Duke, and tell them that half of them (at the very least) aren't worth your time. Tell them to find a new major. Tell them they should not be programming.

Oh, perhaps this isn't the case. Maybe he is sympathetic to the programmers that aren't at the top of the heap. That they want to make a living too, even if they aren't brilliant. Maybe he feels they can have a job, just not at his company. But now the JavaSchools, as he points out, don't have the experience he wants, and now, darn it, he can't identify them.

So what to do? What to do? If the schools won't teach them programming, then he has to. Ah, but only one man! How can he possibly teach, because he might need hundreds, thousands to be taught, before he finds the few he cares about. Clearly a waste of time.

Well here's the news. There are enough professors, enough teachers, who saw the amount of time students wasted trying to deal with memory leaks, trying to deal with complex data types, trying to find errors that Java made literally trivial, so they could finally get on to actually programming something meaningful instead of dealing with arcane issues of a language that wasn't so friendly, that I'm afraid they aren't going to go back to C++.

Java, whatever its flaws, has managed to allow students to program something meaningful, and were it super efficient, maybe Joel would be using it too.

At least he's not clamoring for people to code in assembly. Remember when people wanted students to do that too? Students don't understand the machine! They need to code in assembly! What a travesty that they are so far removed from the machine! The horror!

Joel can lament as much as he want, but his solution is going to have to come from somewhere else because teachers aren't teaching to the best, but to the average student, and the average student is going to do more in terms of something rewarding in Java than in C++.

No comments: