A programmer's story
How I became a programmer
I’m writing a book. It covers more general programming topics than any of my previous books, so the audience will (hopefully) be larger than the Perl community who mostly know who I am. So I felt that I needed to explain a little about who I am and why I’m qualified to write the book. That explanation expanded into the following essay which forms part of the introduction to the book.
My name is Dave Cross and I'm very old. I've been working in the IT industry since 1988. For most of that time (since 1995) I've largely worked as a freelancer. I'm old enough that when I was at school, there was no computing included on the syllabus - even though I stayed on in the sixth form and did two maths A levels. There was an option to study for computer studies A level, but that involved travelling once a week to a different school fifteen miles away and it didn't seem that important at the time.
After leaving school, I did the first year of a physics degree at a university in London. Surprisingly, there was no computing included on that course either - although I'm told that had I stayed on for the second year of the course, I would have learned some FORTRAN. But I dropped out after the first year and spent some time considering my options.
I stayed in London, but on visits to my parents, I found that they had bought a Sinclair Spectrum for my younger brother. He wasn't particularly interested, but I was drawn to the concept of programming. I bought a copy of Donald Alcock's Illustrating BASIC and slowly taught myself the basics of programming. I soon realised that I found programming interesting and started to wonder if I could build a career doing it. Unlike many of my peers (who were coding from an early age), I was twenty-one before I wrote my first code.
Back in London, I looked for a degree that would teach me more about programming. I was offered interviews at two or three polytechnics and the first I attended was at South Bank Polytechnic. At that interview, the course director told me that the course was aimed at people who would spend their careers writing COBOL in the data processing departments of large companies. It was 1984 and neither of us had an inkling of how computing would change in the very near future.
I was accepted onto the course and studied there for four years (including an industrial placement year). The syllabus had us learning Pascal and COBOL and practising what we learned on DEC VAX computers running VMS (except one that had some version of Unix installed). AI was represented by Prolog and expert systems and databases were dBase at one end of the spectrum or CODASYL monstrosities at the other. I recall writing an extended essay on the Japanese "5th Generation Computing Project". I wonder what became of that.
There was useful stuff too. We learned C in our final year and I became well-acquainted with Unix. SQL was introduced as a new tool that was intended to allow end-users to query databases. And during my industrial training year, I worked at IBM and used a new markup language called SGML. Embarrassingly, my final-year thesis dismissed the newly-emerging window- and mouse-driven computer interfaces in favour of a text-based menu system. To be fair to me, if you'd used Windows versions 1 or 2 you would probably have dismissed them as well.
I graduated with a first-class honours degree and got a job with a company that did consultancy on software design. This was 1988, so the design method they advocated was their own adaptation of SSADM (Structured Systems Analysis and Design Method - a UK government designed method which was the very antithesis of today's agile approaches). The company had a CASE (Computer-Aided Software Engineering) tool and I joined the team that was writing the logical data modelling part of the product.
The new version of the product that I was working on was going to run on Windows. This was a brave decision for the company to make in 1988 as Windows was far from ubiquitous at that point. It was also challenging for the developers as no one really knew how to write Windows code at that time. But I spent four years there and got pretty good at writing for Windows. My C and SQL both improved dramatically over that time too.
I left there in 1992 and got a job working for a communications company. Back then "communications" meant things like fax and telex. But I got to learn a lot about networking and I moved from C to C++. I remember getting my first real email address while I worked at that company - it was from Compuserve. I talked to some senior people at the company about including email in their products but they didn't seem that keen. I could see that they weren't very forward-looking, so I left after only six months.
My next job was with Walt Disney. Or, more accurately, with their home video subsidiary - Buena Vista Home Video. At the time, they were just starting to release a lot of their films on VHS. All of the video production and distribution was handled by third parties in each European country and they wanted a system that could aggregate all of this sales data and report back to people in Burbank. So that's what my team was building. I got the job on the basis of my C and SQL knowledge and, in return, I learned a lot more about Unix and my SQL knowledge became more specialised towards Sybase.
After a couple of years with Disney, I started to get calls from recruitment agents looking for contractors to work in the City of London. It seems that by using C and Sybase on Unix, Disney had chosen exactly the set of technologies that made their developers very popular in investment banks. Over a period of about six months, most of my team (including me) became contractors in the City.
Over the next five or six years, I worked for a number of banks in the City. I started off using my C/Unix/Sybase skills, but I soon picked up a few new technologies. Perl was very useful to me for a long time. It was largely used to build dynamic web sites and that led me to the web. Remember I mentioned using SGML at IBM? Well, SGML was the forerunner of XML which was the forerunner of HTML. So my SGML knowledge (which I had assumed I would never need again) gave me a bit of a head start on the world wide web.
For a while, a lot of my work involved using Perl to put web front-ends onto various types of database. To be honest, a lot of City jobs aren't particularly exciting, but my web work opened up a few more possibilities. I did stints at a few internet start-ups along with more established media companies. All the time I was able to use existing skills to get a contract and then pick up other, newer, more useful skills while I was there.
I smile now when I think of the course director interviewing me for a place on his degree course. I really don't think I would have been happy in one of the data processing centres he was talking about. But I've successfully managed to avoid that and have a successful and interesting career.
I estimate that I've only ever used 25% of the topics I learned on my degree. A lot of the rest of it was out of date before I even finished the degree. Keeping up to date with industry will always be a problem for the education system - particularly in an industry that changes as quickly as ours does. I'm sure that it's still possible to have a long and lucrative career if you're just using skills that were current when you started in the industry. But I'm also sure that you'll enjoy yourself more if you take the time to keep up to date and move with the industry.