This started off as an exercise in counting all the programming languages I have used but ended up being more of a professional autobiography. I've tried to highlight the people and books I learned from on the way.
I got into programming courtesy of my Physics teacher, Brian Smith who thought it would be interesting to use these new computers to control things.
6502 Assembler (Microtan 65). Writing your program out as assembly then translating it to hex to enter onto a hex keypad to program the thing.
Forth (Jupiter Ace, a Sinclair ZX80 derivative). Uff, no idea why we thought this was a good idea, apart from it having the virtue of existence. None of us had even a vague idea what it could do.
Commodore PET Basic. The PETs were kept in a 'computer room' along with a teletype connected to the computers at Bradford Uni. Can't remember doing anything in PET Basic as we were too busy playing Star Trek, Rhino or Night Driver.
ZX81 Basic, Zilog Z80 Assembler. Thanks, Rodnay Zaks! Yours was the first programming book I bought. Really got into this, inspired by the range of games available which I tried to emulate, with mixed success.
There were some BBC computers floating around but I never got a look in as they were reserved for Computer Studies O-level students.
- BBC Basic. I wasn't on a computer course, but wrote some programs to control cognitive psychology experiments. Decent lab, fitted with Model Bs with interface cards of some sort you could use to sense inputs and flash lights, and access to a 10Mb shared hard drive which was bolted to a table which was bolted to the floor.
The World Of Work Part 1 - Up North
Having decided that biology and psychology wasn't going to offer a good career at my level, I got onto a government-sponsored C programming course run by a rather fly-by-night operation called Scope Technologies that specialised in placing people into work-training placements. The teacher, Saïd, was an Iraqi refugee, a skilled mechanical engineer but only a couple of chapters ahead of us in the famous 'The C programming language' by Kernighan and Ritchie. I loved that book.
Microsoft C. The job was working at Binary Design for Andy Hieke, in Manchester town centre. While BD was a games studio whos primary business was doing home computer conversations of popular arcade games, they had ambitions to do business software and I was employed to write a program that you could put on a floppy disk and take round your PCs to analyse what was on them. As well as the voluminous Microsoft C 5.0 documentation, I made a lot of use of The Peter Norton Programmer's Guide to the IBM PC. Programming was on a rather ropey PC clone with an 80286 processor. The monitor blew up rather spectacularly once when I switched it on. I learned a lot about the role of the operating system as well as what interrupts were for. Binary went bust in 1990, but I quickly got a job with a firm in Stockport courtesy of Roger Fenton one of the other attendees on the C programming course.
AutoLISP, Unnamed Lotus 1-2-3 programming language. Micad in Stockport produced a customised version of AutoCAD for office space design. The recently introduced AutoLISP was a great language for manipulating the bill-of-materials that made up an AutoCAD drawing. At the same time, we got into the programming language for Lotus 1-2-3, rather than the macros. The most striking thing I remember here was that you could return two values from a function at the same time which was a real eye-opener.
Smalltalk-80. At about the same time, I decided that I ought to get some maths and computing qualifications so signed up with the Open University to do a programming course. This used Smalltalk as the teaching language. I really enjoyed this and the exposure to object-oriented programming in a structured manner really broadened my mind.
SQL. At about the same time I did another module on databases. Can't remember much about this apart from there was a cool PC program that allowed you to write SQL DDL and DML commands and queries.
UCSD-Pascal, Microsoft C 5.1, 6.0, Turbo Pascal, Turbo C, Paradox Application Language. I left the office CAD firm to join a firm specialising in customs software. This was my first exposure to real customers doing serious amounts of business with the software I wrote. Also the first exposure I had to a software development approach that was broken. There were a couple of developers who had been hired straight out of college who believed that they were all the programmers needed. The rest of us had to try and work around them as best we could. Perhaps a quick anecdote might help. One morning I came in to find one of the pair at his desk with a paperback in hand (they would never start work before 9am). Spying a rare opportunity to strike up a conversation I asked him what he was reading. 'A book' he replied, without looking up. That was the total of all the non-work conversations I had with either of them in the months I worked there. We called them 'the thin twisted pair', which was a bit cruel but accurate. Phran Ryder (link, anyone?) wrote https://wiki.c2.com/?VelvetUnderground about his experience there - I was one of his colleagues. Leaving the company name off this one to protect the guilty. Tech-wise my exposure to Turbo Pascal was the thing that set my subsequent technical direction. A functional development environment and debugger in a single package was a major thing.
World of Work part 2 - That London
Paradox Application Language, dBase, FoxPro. Having had enough of the streets not being paved with gold I moved to Brixton and joined a small IT Services firm run by the very charming Adam Afriyie. My job was to build database-oriented systems for the small businesses that the firm sold hardware and software for. This firm isn't listed on Adams wikipedia page. Fair to say, he learned a lot about how to run a business and who to run it with, as did I. At about that time, I bought my first PC. I remember paying £200 for a 200MB hard drive. I loved doing desktop Rapid Application Development at the time. Just sit down with a business person and build what they ask for.
ObjectPAL, Object Pascal, Delphi, Sybase SQL. MAID Systems. After the above firm imploded, I got my first contract, building applications for a news aggregator. My first exposure to Delphi was on the back of seeing a demo at a Borland User Group meet and blagging a copy of the beta from the UK product rep. I saw my first web browser, and wasn't impressed - it looked like a rubbish version of what Compuserve was offering at the time. After that, I contracted for another firm doing Delphi development doing billing systems for Cherise Emerson who was CIO for a telco based in central London, serving the city by selling them transatlantic fibre connections. I turned down my first and only bribe when some salespeople jumped ship to a competitor. After that, it was a couple of stints at the BBC with Slobodan Damjanovic building budgeting systems for independent producers to report how they were spending your license money.
Delphi, Oracle. Staying on the Delf them, I did some work for the UK Atomic Energy Authority (AEAT), building software to simulate running portions of the UK rail network. I loved the work here - teaching a bunch of very smart engineers how to build object-oriented systems. We spent a lot of time thinking about how we built the software, and quickly settled on Extreme Programming, though we didn't share too much about this with the managers, although this was the first multi-site, multidisciplinary project I'd worked on, with proper Project Managers and everything that entails. At about this time, I started to write for .EXE Magazine, focussing on object orientation and design patterns, under the guidance of Dave Mery.
Twenty-one languages so far, ignoring stuff like DOS batch files and Make files. No HTML or other webby stuff as yet.
During my time at the AEAT I'd gotten interested in collaboration within and between teams, knowledge management and process. When the makeup of teams changes, it seemed to me that so does the knowledge, culture and working patterns involved. I'd not yet realised how that would influence my next direction, coming in part 2.