Ugh. Memes. How I Got Started In Software Development.

Thanks to Colin (Stuff that’s in my head) and Barry (idunno.org) for tagging me in this meme.  I’m only promoting it because it gives me a chance to document a little bit of my past…

How old were you when you started programming?
I suppose I was about 12, probably tinkering with a TRS-80 (in Tandy/RadioShack), an Acorn Electron, a ZX-81 and an Oric 1.

However it wasn’t until I was 14 when a BBC Micro (Model B) arrived complete with it’s User Guide.  Those where the days when user guides were real user guides and …  The User Guide itself was over an inch thick and was ring bound.  The ring binding was perfect, you could lay it flat on a table and it would stay open, great for typing whilst reading.  This is in complete contrast to the RISC OS 3 Programmer’s Reference Manuals that accompanied the Acorn Archimedes (more about this shortly).  I learned everything there was to learn about the BBC, in some cases this meant getting very intimate with SHIELA, JIM and FRED – sometimes all at the same time (user guide page 421)!

Those were also the days of cassette-based storage.  How slow were they?  Very slow.  Indeed, when I finally got a 5.25” disk drive, I spent a lot of time moving tape-based programs on to disk.  Of course, some tape-based programs where fussy and insisted that they load and run from “PAGE &0E00”, whereas the disk control moved the base page to &1900.  So I spent more time working out how to load programs into a different PAGE then magically move it to where it expected to be where it could then be executed from.  The process of moving tape-based programs onto disk was something I became pretty good at.

How did you get started in programming?
I guess that I have my father to thank for this!  When we were in Libya, he brought home fan-fold listing paper for me to use as scrap paper.  Whilst a lot of it was ‘address listings’ and other such program output, some of it contained COBOL listings. 

What was your first language?
That would be BBC Basic.  I can’t remember how long it took me to master it.  BBC Basic had the advantage of a built in assembler – anything that was a little bit slow in interpreted Basic could be hand-cranked using 6502 Assembler.  They were the days – it was possible to learn how to understand the entire computer: it’s architecture, it’s hardware, it’s interfaces, you name it.

What was the first real program that you wrote?
I don’t know if I can remember the very first program that I wrote.  I can remember writing a number of programs whilst at school.  There was a network broadcast program that I called Channel 5 – obviously long before the TV station came along.  Then there was my A-Level project, a program that created graphs – it had to manage data, graph plotting and printing: a tall order in those days.

Part of the graphing program involved sorting data.  After the graph data had been loaded from file, I was using arrays to hold the data in memory.  My sort routine involved looking at the first element of the array, then comparing its value with the second element – if the first was less than the second, I’d use a temporary variable to allow me to swap the array elements.  I was, as you might imagine, very pleased with myself – this was a really cool sorting method!   Of course, like many/all first-time programmers, I believed that I was the first person to “invent” this sorting technique.  Oh how much I had to learn – it didn’t take long for the bubble [sic] to burst!

What languages have you used since you started programming?
ARM Assembly Language, Turbo C, Turbo C++, Turbo Pascal, ML, Perl, COBOL, Borland Pascal, Delphi, Visual Basic 6, Classic ASP (VB), PHP, Visual Basic (.net), C#.

What Was Your First Programming Gig?
Gig? I suppose by this it means where I was actually paid to write code.  That would have been in 1990 when I spent a year working for IBM in Hursley, near Winchester.  At the time I was an avid Turbo Pascal fan – my first boss was a Modula-2 dev-head, he loved it.  I inherited a C language parser written in Modula-2.  It was fun working on the parser…until I discovered that the recursive nature of the parsing process wasn’t controlled using local variables as it should be, but was controlled using global variables.  I think this was close to my first “OMG, I don’t believe it” moments (I’ve had plenty more of those since then!)

If you knew then what you know now would you have started programming?
I think the short answer to this question would be yes, yes I would have started programming.  However would I have chosen to learn assembler language?  In today’s abstract world, with class libraries getting evermore feature rich, it seems that fewer folks truly understand today’s processors at an instruction set level.  I wonder if there will be a shortage of assembly language developers in years to come? 

If there is one thing you learned along the way that you would tell new developers what would that be?
Keep it clean, keep your code clean.  It’s difficult to teach “feeling” – when I’m writing code I often know very early on that I’m probably writing code that will be difficult to maintain – it’s at that point I stop and think about better (read: simpler) ways of achieving the same thing.  In the same thought, I’d also recommend that you shouldn’t try and write perfect code the first time.  Don’t be afraid to write code with refactoring in mind – there are plenty of good tools that will help get there!

What’s the most fun you’ve ever had … programming?
You might think I’m weird (or may be wired) however this is an honest answer!  Back in about 1994 I was working in Newcastle as part of an Acorn Archimedes library development team.  One of the application developers was about to go on holiday, he had been frantically getting his CD-ROM based application ready for production.  Disaster struck, somehow he managed to delete his source directory (yes, backups, yada yada, I know…)  Rather than let him cancel his holiday, I hauled his Acorn A5000 into my office space (thus I had two A5000s) and proceeded to recover as much of the source code as I could.  I couldn’t get it all back, so in the two weeks that he was away, I filled in the blanks.

References
http://en.wikipedia.org/wiki/ARM_architecture

http://acorn.chriswhy.co.uk/Computers/A300.html

Tag, you’re next: Richard Peat, David Christiansen, Ian Smith, Scott Lovegrove, Danny Thorpe