On Scheme and Saleability

The most common criticism of teaching introductory programming using Scheme, rather than (say) Java or C++, is that it's not saleable: there aren't lots of want ads calling for experienced Scheme programmers, so learning Scheme won't help students get a job.

I have several responses to this criticism:

  1. The forty-year history of high-level computer languages tells us that the "hot" programming language changes every 5-10 years anyway. While an employer may want someone who can "hit the ground running" for a short-term project, a more important qualification for long-term employees is the ability to adapt to new techniques and languages.

    Whatever language I teach to a college freshman (not to mention a high school student) will be at least partially obsolete by the time that student is graduated. Accordingly, the student's job prospects are better served by learning to learn a new language quickly and by a solid understanding of fundamental concepts of programming that hold across languages, than by spending years mastering the details of one language that was "hot" at the beginning of those years.

  2. A student who's taken one year of programming classes shouldn't be writing substantial programs professionally, any more than a second-year medical student should be diagnosing and treating patients. So if learning Scheme prevents first-year programming students from getting a programming job, that's perhaps a good thing. (Do you want to ride on the airplane whose navigational system was programmed by a college student with a year's experience?)

These arguments are even stronger when applied to high school programming courses, because high school students are (presumably) another year or two farther from the job market. If a high school or beginning college student has the choice between learning C++ syntax and studying algebra, the latter may more effectively advance the student's career in computer science: while most computer programming is no longer about numbers, being comfortable with algebraic concepts (e.g. "variable", "operation", "function") correlates strongly with success in computer science.

See also the comments by an electrical-engineering professional on what students should learn about programming in order to apply for jobs.


Last modified: Mon Jan 24 18:38:17 EST 2005
Stephen Bloch / sbloch@adelphi.edu