posted on Friday, November 24, 2006 3:13 AM
by
Endie
Parallel Industries - Cars and Computers and Biotech
Following a link from Raph Koster's site, I recently read an article on Salon that sci-fi author David Brin wrote back in September (needs you to click on an unobtrusive "sponsor" link to get to the article).
Brin is concerned with how difficult it is for a kid today to get experience of line-programming languages, particularly in Basic. He makes the point - rightly in my opinion - that this is the most fundamental and easily-understood primer for more advanced coding. I simply do not know a good programmer who didn't start on a home computer such as a Sinclair Spectrum or ZX81, a Commodore 64 or a BBC Micro (my own first love).
The ability to create even a short program is a great thing for a kid: you can see the results of your work happening before your eyes, but beyond the usual circle of your control (which in early teens barely extends even to the limits of your own skin). You are making something happen through the commands you enter. At a time when it seems everyone tells you what to do, you are making something else obey you, and if you do it right, the machine obeys unquestioningly and without delay. You see that you can manipulate the world.
The growth of home computing manifested in ways that would be pretty unthinkable in most schools today. Programming, or at least sitting around toying with computers after school or at lunchtimes, became an acceptable social activity, very different from some sort of "Math Club" in US terms. There were often queues to get at the 7 or 8 Apple IIs and BBC Micros and one ZX81 that were available, and this in a school whose headmaster (my dad) had been committed to computer studies in schools since at least the late 70's (thus my first experience with a Commodore Pet).
As a schools' inspectorate document on computer studies says (here, at point A3): "The rapid growth of home computing at this time stimulated the interest of many pupils in acquiring a better understanding of the concepts and principles behind computer systems."
Brin makes a comparison I have often talked about with others: that between computers and the cars of the middle 20th century. Within a generation, kids moved from tinkering with automobiles to tinkering with code. My grandfather spent many of his evenings after work up in his little garage at the top of the council estate, trying to make his Vauxhall Viva (if I remember rightly) run a little smoother. Both he and my father could tell the problem with a car - and fix it - in a kind of instinctive way.
I, on the other hand, have only the most theoretical knowledge of how my car runs. It is a closed book to me, largely because BMW designed it to be so. The AA mechanic is no more able to tweak it than I am: it is a series of black boxes that require a visit to a BMW garage for work on anything to do with the engine or electronics. As a result, if I were to break down in an area with no phone coverage, all I could do is start walking.
With PCs, however, I had a basic grounding in how they work, thanks to those early years oftaking them apart, and of coding them at the line-programming level. I am comfortable with just about any computer, and can fix problems without ever really knowing everything about the problem: it's an instiinctive thing. I doubt if someone who learned to program in windows, starting with something like Visual Basic, would ever develop that same easy relationship to the computer as a whole, from hardware through opsys to language and aplication. The effects of code upon machine are obfuscated and removed a step.
As Raph says, "we have traded computer literacy for computer use literacy, a very different thing." A kid of ten today feels relaxed and comfortable with a computer. But they can probably only ever hope to work within the limits set by others, even if they become a coder.
This might not be a terrible thing. I don't want to have to adjust the timing on my car. Nor do I want to become a motor mechanic. I would be very cautious, today, about encouraging a kid to enter my field, as it is clearly going to become similarly commoditised in the future, first through the growing eastern outsourcing markets, then (later) through abstraction of the development process. Just as mechanics are now poorly paid, and cars only need a few highly-paid designers, so there will be a call for fewer programmers of real skill, but more and cheaper technicians. People like myself, with decades of learning and a willingness to stay at the edge, will tend to win out over people starting out and lacking experience. This happens already: in a marketplace flooded with graduates who entered programming thinking that the boom of 1999 was a permanent feature, a great many never used their degrees and left the field while those of us with big cvs never missed a step.
I was lucky: I grew up at a time when almost no-one already knew the things that I could learn. My knowledge gave me a competitive advantage, and the means to start gaining that knowledge at the fundamental level of the command line, of BASIC and of assembler (and Comal, Forth et al), and of changing a variable resistor to retard the timing on the hard drive starter motor. Today's kids start learning at many levels removed from that, and I think that those who will ever become great programmers will have to go back and fill those gaps in. But unlike Brin, I think that for most, it is nothing more than a shame (in Platonic terms) that their knowledge will be shallower. For most western kids of 10 or 11, the boat has sailed on this career as a fast way to get wealthy. There will be another valuable, rare knowledge-based skill along in a while. From the interactions I have in my work, my guess is tomorrow's hacker will work in the biotech and pharms sector.