How to get into software engineering, Part 1

I’ve been asked by an undergraduate, who is not taking a computer science course, how he might become a software developer. It’s a complicated field, and there is no simple answer. So, with apologies, I present a two-part posting. The first part describes the environment that led me to take this path, and why I can no longer advise it. The second part suggests how people might take it today.

Born to RUN

10 PRINT “HELLO”
20 GOTO 10

This program taught me three lessons. The first is that any popular home microcomputer of the 1980s can be made to do your bidding as long as your instructions are suitably precise. The second is the beginning of program structure. Line 10 makes the computer do something, but line 20 just makes it jump back to line 10. The program therefore restates the initial greeting on a new line of the screen, and so on until the user demands that it stop. The third lesson is that programming is a peculiar subset of English: the commands have clearly defined meanings that differ from human understanding. While the meaning of ‘print’ is clear if one sees the screen as a print-out, ‘goto’ is less clear until you realise it’s two separate words. Even then, it is an entirely abstract symbol that exists only in the world of computing.

It was 1984, and I was six years old. Every home computer came with some variant of the BASIC programming language in ROM. A world of possibility would begin to unfurl a second or two after the power was switched on. My program worked equally well on any of my friends’ home computers, and on the BBC Micro at school. What more does a six-year-old need to set him on the path towards becoming an engineer?

Usborne, the children’s publisher, produced wonderful books on writing BASIC that an eight-year old could understand. I sat on the floor of the school bookshop and learned everything I could from them, and talked about little else. My parents reluctantly endured this enthusiasm, still hoping to have begat a musician or artist rather than an engineer. After about eighteen months they relented, buying me a second-hand ZX Spectrum as a birthday present.

The best thing about the Spectrum, apart from the absurdly low cost of the computer and software, was the BASIC manual. Written by Steven Vickers (now a professor at the University of Birmingham) it remains one of the finest examples of technical writing I have encountered. Mastering Sinclair BASIC didn’t take long: all I had to do was to wait for my grandfather to teach me the fundamentals of binary notation in the car one afternoon, receive my first algebra and trigonometry lessons at school a couple of years later, and I could write and understand real software.

This path led naturally on to assembly language, which is faster and more versatile than BASIC, but considerably more difficult: it is real engineering. Heaven help me, at the age of eleven I actually took a guide to Z80 assembly language on holiday with me and, with difficulty, began to understand it. It wasn’t written very well.

Meanwhile, programming was everywhere. The BBC and ITV ran magazine shows about home computers. Popular magazines would publish listings that readers would type in and run themselves (often masochistically long). The MIDI musicians from last week’s posting were doing things with computers, synths, drum machines, and very gay make-up, and it was changing the world. When they appeared on Top of the Pops, it was accompanied by vertiginous overproduced neon visuals that could only have come from another computer. Debates raged about the future of computers in mass production and commerce. This was the mid-1980s: Thatcher had set her sights on labour-heavy, unionised industries, and computers were rendering some traditional skills redundant. The London Stock Exchange was computerised overnight in 1986. News International and TV-am were among the first big organisations to be dragged by their owners into a part-political, part-technological maelstrom, and they were never the same again. In a very short space of time, computers actually had taken over the world: culture, finance, and political debate.

As a child in this environment, it was impossible not to be excited: here was a technology only slightly older than I was, uprooting everything in its path. I had already learned that it could be tamed, and the rest was waiting to be understood one piece at a time.

Home computing moves on

There were equally significant commercial forces at work in the home computer industry. In about 1988, I remember laughing with derision at an Amstrad PC at a friend’s house when he explained that he had to load BASIC from a floppy disc. In fact, the device was an expensive paperweight until you supplied it with an operating system – CP/M, GEM, or similar – that had to be purchased separately. It was a proper, big computer, and it broke the chain of consequence for me. How can you write software for it? How did they? Why did their instruction manuals contain no example programs? When I eventually retired my Spectrum and got a better computer in the early Nineties, I chose one of the few that still had BASIC contained on a ROM, a feature that was getting rarer as IBM-compatible PCs took over the home computing market.

At about this time, commercial pressures were changing the British home computer industry. Sinclair had run out of money after two projects that were disastrous for different reasons (his QL business computer and his electric car, the C5) and had sold everything to Amstrad. Alan Sugar, then and still a wide boy with an eye for a fast buck, took the Sinclair legacy, threw away everything innovative, closed down all development and, within two years, Sinclair’s original nosedive completed its trajectory. Acorn had overproduced its latest range of computers, overreached itself and, floundering similarly, sold a majority share of the company to Olivetti. Acorn hung around for another decade, quietly doing glorious things including spinning off ARM Holdings (still shaping the world today), but they never recaptured the market they had once dominated. In 1990, the British home computer industry had faded; by 1998 it was dead.

Ten years after a short era when 16-year-olds made the news by writing games in their bedrooms and out-earning their parents, programming had gone from being something that was an easy and inevitable consequence of childhood to something mysterious that had to be sought out, and could be learned only by handing over large sums of money for extra software and extra books. Children who learned programming in this wilderness would have done so using the dreadful implementations of BASIC provided as supplements to MS-DOS, or by messing around in Microsoft Excel, building up simple functions one line at a time.

I moved on, combining and assimilating my computer skills with the audio engineering I picked up at university. My programming hobby became academic project experience, which then became a graduate job just before the dot-com bust, which then turned into a career. I had been lucky to be born at the right time, when these opportunities were unfolding almost in spite of me.

However, I started noticing very young computer geeks again. Two or three different easily-accessible paths into programming had opened up that I had barely noticed, all of which relied on a Web browser combined with open source software. The web page had become a powerfully-interconnected replacement for the computer desktop. Learning the right language could unleash an updated version of those same magical powers I had discovered at a school computer in 1984.

Open-source software and the Web still provides the most cost-effective, high-impact, and compelling route into programming, but it is not the only route. These possiblities will have to be the subject of my next posting.


The Spectrum’s keyword prompt: once a gateway to a happier world.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: