Coding

An unforgiving art

It’s hard to face a compiler with confidence.

Over the years, our consultants have written a number of computer programs in several different languages.  Coding in itself, however, hasn’t been their focus; there has always been a certain calculation to perform, some job to do, and the program has been the tool to do it.  Generally we’ve laid it aside when the task is done.  That’s probably the least efficient way to learn coding, but it’s how we have operated.

Now, however, our tutoring consultant is faced with several students taking Computer Science, and to support them he’s been learning and working with Java, a new language for him.  But getting back to serious coding after some years away means being reminded of things that do not change from language to language.  Very often, the error message has nothing to do with the mistake that has been made; the flag may appear many lines downstream.  A misplaced, missing or extra character will normally scupper the whole effort.  Comments are vital: a piece of code that was quite transparent as to intent and effect when you wrote it last week, can be absolutely unintelligible this week.  And when it all finally works, the feeling can be one of elation or just relief.

The idea of learning computing in a class is still somewhat strange to us.  We all picked up what skill we have by sitting down with a book and writing code, normally with some particular application in mind.  Sometimes there was a nearby wizard to ask, when things just weren’t working, but scientists can be independent sometimes and he or she might work in another language entirely.  (The FORTRAN versus C argument probably still rages somewhere.)  In a class, you have to solve the problems set for you, which (as we’ve noted) is a different way of learning.  It can be easier, since the problems are guaranteed to be solvable with the material at hand, but it can also be less interesting.

Another concern occurs to us.  There are no doubt many jobs out there for good coders, but most people will never write a line of code for work.  They’ll use programs written by someone else, for compatibility and standardization reasons.  And even if many of these Java-speaking High School students do wind up coding, chances are good that they’ll have to do it in a different language.  Why, then, should we teach so many students something they won’t use?

We think there’s a good answer to that question.  We teach geometry to everyone in part to get across the idea of a rigorous proof.  Students who code successfully learn how to operate in a very unforgiving environment, one that follows its own rules rather than theirs.  We think that’s something worth learning.

Share Button