On Thursday, Dec. 29th, Joel Spolsky, in a post called “The Perils of JavaSchools,” flashed his “old school” credentials by complaining that kids these days have it too easy, because they are allowed to use Java in learning programming, and therefore he contends that they don’t know nearly as much as they should, because they didn’t have to learn programming the way he did. In particular he said …
Instead what I’d like to claim is that Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers. It may be a fine language to work in, but that’s not today’s topic. I would even go so far as to say that the fact that Java is not hard enough is a feature, not a bug, but it does have this one problem.
If I may be so brash, it has been my humble experience that there are two things traditionally taught in universities as a part of a computer science curriculum which many people just never really fully comprehend: pointers and recursion.
Now I’m not a programmer, nor do I play one on TV, but I do find programming fascinating, and I am awed by the attention to detail that it demands of those who do it. So when I read Joel’s critique of allowing the use of Java in schools, I thought of my new friend, Colm Smyth, who is a former Sun employee and Java programmer. I wrote Colm and asked his opinion of Joel’s critique. Colm has responded with a rebuttal at his site. Colm said, among other things, …
Joel contends that a programming language “can be used to discriminate between great programmers and mediocre programmers”; I believe that kind of discrimination is not the purpose of a language; instead a portfolio of abstract and real-world problems and projects should be used to demonstrate mastery of a language and (more importantly) the computer science concepts that it embodies (object-orientation, concurrency & synchronization, garbage collection, references, protecting state against unintended change, etc.)
Continuing to quote Colm’s rationale, he says …
The root problem in education is not only one of computer science however. A friend of mine who teaches Maths and Physics at secondary level in Germany often bemoans the simplification of the curriculum and the end of year examinations. Parents continue to put pressure on schools to reduce the “stress” of education. Conversely the software industry as a whole wants to hire developers who have a broad and pragmatic deep skill-set, able to solve abstract and concrete problems in a variety of ways and who can “hit the ground running”. This latter quality is a combination of computer science, problem-solving and interpersonal skills, none of which are measured by mastery of a programming language.
In summary, there is nothing wrong with using Java to enable students to practice computer science concepts, but those concepts must still be taught.
Through the years, I’ve spent a lot of time reading books on programming, trying to get a grasp of the terms and concepts. I even bought a used copy of Microsoft’s C programming software, but in the absence of an instructor’s guidance and the demands of a curriculum, I’ve made it no further than a slight familiarity with a few terms and a vague understanding of some concepts. I’ve yet to program my first useful application and I don’t anticipate a career in programming. So, I’m sure I would be one of those that Joel’s strategy would be designed to weed out, but I believe that I am sufficiently intelligent to learn to program some simple applications that perform tasks that I want for my own purposes. I intend to continue to pursue the goal of conquering this challenge this year, just to see if I can do it. Engaging in this kind of mental discipline is one way to ward off the ravages of an aging mind I think. At least it is worth a try.
In keeping with that, I’ve ordered a copy of NetBeans (a Java framework for programming), and we’ll see how this goes. Perhaps on January 1, 2007, I’ll be able to report that I’ve finally succeeded in doing some productive programming, even if I may have taken what Joel Spolsky would contend is the “easy way” out.
Who knows whether the world is better off if we set the bar high to keep out the “mediocre” programmers or whether it is better to make available any and all tools so that even those who aren’t superstars may contribute what they have to offer? I do know that nature opts for abundance and variety and allows natural selection to sort out the wheat from the chaff. Because of that, I believe that there are always going to be differing levels of success that that infinite variety achieves. And in my opinion, that is a good thing and as it should be.