Original URL: http://www.theregister.co.uk/2013/11/06/why_your_kids_cant_program_part_1/

Your kids' chances of becoming programmers? ZERO

We had it all in the 1980s. Here's what went wrong...

By Dominic Connor

Posted in Jobs, 6th November 2013 10:05 GMT

Part One Almost overnight in the early 1980s, hordes of British kids embraced programming, as did many adults, delivering the most IT-literate workforce in the world. It was a big reason why the nosediving economy of the '70s and '80s didn’t crash and burn. Well, that or Thatcherism, you choose.

Why BASIC?

In the early 1970s and early 1980s, few business apps were written in Basic. Indeed it had started off life as a way of teaching doctors how to do Fortran – which, along with Cobol, dominated commercial coding.

But Grace Hopper’s bastard child Cobol was absurdly expensive to buy and run, Fortran was little better and they were both *compiled* languages whereas Basic was usually interpreted. This meant you could poke at it (obsolete pun) interactively and if (and when) you got the syntax wrong or fell into an infinite loop, you could quickly work out where you went wrong.

By the late 1970s, Apple PCs were beginning to appear - until 1979, the term PC had nothing to do with IBM. But because of their price-gouging in the UK, the up-to-three-times-as-expensive Apple never caught on in British schools. They didn't even hold the "we don't care what it costs or whether it works as long as we get an 'educational discount'" market which Research Machines seized and holds to this day.

In the 1970s being able to do anything to a computer at all was impressive. If you were believed. My parents, like most of their generation, hadn’t even seen one on TV.

It was more credible that their spotty 13-year-old had somehow upgraded the T-10 Chipmunk the Air Training Corps was teaching me to fly to a Harrier. At least they’d seen pictures of them, and given that the PDP-10 at Hatfield Poly cost about the same that wasn’t *so* silly.

That made us feel pretty smug and it was becoming clear that this was a good career option, which for me and a lot of others was a way up the food chain and off the council estate.

Of course going to a working class school meant I was supposed to be learning to use a lathe, though my clumsiness meant that working in a shop had also been suggested. We got our terminal because the middle-class arts graduates at the Department of Trade sent it to the wrong school. I was at Bishop’s Stortford Boys High but it was supposed to go to Bishop’s Stortford Boys College, a rather posh public school. They also sent one to the local girls grammar school, which ignored it in the hope it would go away. The tech has changed, the lack of interest from teenage girls in programming does not appear to have done.

Things they don't tell you ... It was LOUD

We used the ASR-33, the noisiest programming system in the history of the world. The keys required a good hard bash, which drove a typewriter head to smash onto paper. Often this was accompanied by the mechanical punch tape driver, which poked holes in paper noisily accompanied by the sweet melody of a modem establishing a connection. Just in case you got any peace, each new line made a bell ring and the typewriter head crash back to the start of the line. We loved it.

As a reaction to the horrors of Cobol, the nimbler C and Pascal were emerging as minimalist languages which could be compiled on relatively small machines, and for a while UCSD Pascal was the language of choice for the Apple II. I hated it on sight, but put up with its patronising tone since the code executed much faster than BASIC. I didn’t do C until I went to Queen Mary College, which had the first Unix system in the country.

The problem with ultra-pricey Apples and behemoth computers accessed by terminals was that they were a "one per school" level asset, so many schools stuck with batch processing, punch cards and filling in sheets that were typed in by data entry clerks.

This meant it could be a week or two between writing your code and getting back a printout informing you that one syntax error had stopped the program from being run. No I’m not making this up, that was how it was done.

The lipstick on that pig was painted by teachers as having made you "thoughtful" about your code rather than just banging it in and seeing what happened. We’re alone here, so you can nod silently and admit to me that’s how you code, isn’t it?

One thing that encouraged the 8-bit generation was that the crappy little programs we wrote weren’t all that much worse than what we saw and occasionally better. The “grown-ups’” machines were less interactive. We were the New Wave.

Playing the games

Since business education at schools was as thin then as now, we couldn't write business apps because we knew nothing about business (but a lot about Tudors) and since (again like now) a lot of school "IT clubs" were in effect run by the kids, games were the only thing we could write that made any sense to us.

Of course this is a for a given value of “sense”, since my code insulted other kids, generated weird patterns (just using text) and allowed you to experience in plain 7 bit flat ASCII text form the nihilistic wars between Klingons and Wombats at 115 bits per second - less than a millionth the bandwidth my nVidia GPU boasts.

Even if you were at one of the vanishingly small number of '70s/'80s schools who had a teacher who had done any useful programming in his degree, he was as much in a position to talk about accounts, stock control, or HR management as a priest is to lecture on personal integrity.

Still, not being an official subject freed us from the dross that 21st century ICT students endure. We did stuff that either we or even our teacher found interesting, which was both good and bad. The good meant only teenagers who were interested were involved and we had the level of motivation that the average teacher of a pointless subject like French could only dream of.

The bad is that if something seemed too hard or wasn’t interesting, we didn’t do it. Often we missed things simply because there was no one to point out to us that data structures more complex than arrays or divide-and-conquer algorithms would be useful.

There were almost no books on programming, I worked out most of the syntax of DEC BASIC from the error messages. Although there are now thousands of books on BASIC, there are still very few on programming itself. There's lots of help on syntax and how to use features, little to guide the nascent programmer on loop invariants, data abstraction and other vital, but non-language specific issues.

The 'stupidly expensive' RM (Research Machines) 380Z

Z80 crew vs BBC Micro goody-goodies: This means war

A flipside of our passion was identifying ourselves with the tech we used and there was no love lost between the Z80 gang centred around the ZX80, ZX81 and ZX Spectrum and our sworn enemies the 6502 BBC Micro goody-goodies (and later the Oric) and for the rich kids, the Apple II.

We were clearly winning; the numbers spoke for themselves. The higher cost of the Beeb put it out of the reach of most of us and since we were trying to think of things we could sell, the market was clearly better. Of course that success was causing problems as the wave of Spectrum games both made it more popular and drew many away from even pretending to code.

So the BASIC reason we wrote code was that we couldn’t buy it and even stealing programs was really very hard. So ironically the utter uselessness of the BBC, Sinclair, Dragon, Oric et al meant that for years we were driven to coding to make the damned computer actually do something, anything. At Campus London last month that nice Mr Osbourne informed me that he was a fellow ZX81 veteran at his rather posher school computer club – which he presumably upgraded to the VBA macros with which he runs the UK economy. No education is ever wasted is it?

Chaos in Computer Clubs

So then like now, real programming was done outside lessons in computer clubs of variable legitimacy. In my school, like most others, the teachers had neither the time nor the expertise to supervise these. So long as the complaints about our activities stayed within certain bounds, we were left to get on with it.

The current ICT syllabus is designed on the basis of inclusiveness, dumbed down so that any child can learn it and so that ICT can be taught by someone with no qualification in the subject. That was not the way my computer club – or most of the others that people have told me about – worked. Like many '80s geeks, I got a real kick out of explaining the mysteries to lesser kids, but if they failed to understand, then they either drifted off, or had the piss taken out of them until they got the message.

In retrospect that wasn’t ideal, nor was the fact that the pushing and shoving to get time on the terminal or the stupidly expensive Research Machines system (RM 380Z) was just a bit too Darwinian. However it did mean that only those who had some sort of talent pursued it further, again in contrast with today.

I have spoken with profs at Russell group universities (the top 11 in the UK) and they share that in 2013 some kids turn up not only having never programmed, but under the bizarre delusion that they don’t need to.

As you read this, first-year CompSci grads at Cambridge – which is believed by some to be a good uni – are starting to be taught with the assumption that they know no programming: an assumption that ought not to have lasted long after my cohort in 1981.

Hack or Die

Back then a kilobyte was a huge resource, forcing us to develop all sorts of hacks to get the most out of memory. We had to use ingenuity mixed with bloody-mindedness, using video memory to store program state; single byte offsets rather than 16-bit pointers; writing over memory that had stored program code that was no longer needed; string folding; and, for the more adventurous, machine code. In many BASICs, long variable names consumed too much memory and few of us paid that much attention to comments or structure.

To code anything interesting, we had to know our machines from top to bottom. Personal Computer World as well a sudden horde of computer mags in the 1980s published “how to” pieces that went right down to the metal. For us there was no concept of hardware abstraction or portability. We felt pretty smug when it worked on the box in front of us and since the 8-bit micros were so different, especially in their BASICs, only generic machine code for things like moving blocks of memory or for doing calculations had any chance of working on multiple systems.

Listings from PCW.

This has led to a fallacy of programming management that making the developers use underpowered machines makes them write tighter code, when in fact we both know that just means we take longer to turn out the same junk. Was the Spectrum better than Visual Studio? The VB environment I use on my kids wasn’t even sci-fi back then, having vast arrays of functionality, syntax assistance and – despite the best efforts of the one part-timer who works in MS documentation – the online help is still useful.

VB.NET, Java, C++, Delphi etc are all big languages with big libraries, making it a waste of time to write your own string-handling or graphics routines. Knowing the name of the right function has become more important than understanding how it works. Own up, could you code DDI or Bresenham’s algorithm without looking them up? How many algos do you actually know? Is that even relevant to your work?

BASIC is still with us. When IBM launched the PC, there was no question that it might not have BASIC in ROM built into the computer itself. And it is still the best way to macro program Microsoft apps – except of course on the wretched Surface RT. It is not a coincidence that the MS platform that has performed the most poorly is the one that denied corporates the use of VBA in order to make them buy one of the eight actually useful apps in its app store.

IBM's PC came with Mortgage.BAS, a badly written demo app in awful BASIC. By the time I was working on OS/2 at the end of the 1980s, this had been consigned to the dustbin of history. Which was a big mistake, as it turned out that some banks were using it in real life and all sorts of kludges had to be made. Visual Basic was also part of the reason MS beat IBM in the O/S wars. We BASIC hackers were too many to be resisted.

So by the mid-1980s, programming in schools was surging, parents raised money to buy kit for their schools, Research Machines weren’t yet in a position to stop kids writing code and CompSci grads like me were coming out of university in enough numbers that properly qualified teachers should no longer be a rarity.

That’s not the world we observe now, though, is it?

In part 2, I will explain why. ®