So, I’ve been tagged by John with the Software Development meme.
How old were you when you started programming?
I was eleven years old when my parents purchased my first computer - a Sinclair Research ZX81. If I remember correctly, the ZX81 machines were on special because the successor, the ZX Spectrum, had made it to New Zealand’s distant shores.
The base configuration of the ZX81 was 1KiB of memory - a whole 1024 bytes - though I was fortunate enough to have a 16KiB memory expansion pack that gave me much more room to play.
How did you get started in programming?
While I didn’t appreciate it at the time, I got my start in programming because my parents were wise enough to not purchase me any games for my new computer.
Like most any 11 year old boy, I really wanted to play games - and was most disappointed that I didn’t have any to play. Instead of ignoring the computer, though, I approached the issue with typical stubbornness and decided to write my own. Of course, it was some time before I had the sophistication to do this - and by then, I was hooked on programming.
What was your first language?
The ZX81 came with a version of the BASIC language built in, and my parents had splurged on the purchase by also getting the ZX81 Learning Lab, a tutorial course on learning to program. The language was very simple - but the computer had a simple graphics capability (with the stunning resolution of 64x48 pixels) that enabled me to write simple programs with immediate feedback.
What was the first real program you wrote?
Remembering back over 20 years isn’t the easiest - one of the earliest real programs that I remember was a simple slalom style game: You were a centipede racing down a mountain and needed to avoid crashing into any rocks or bushes. Initial versions didn’t have any collision detection, but that and other features were added as my programming skills improved.
What languages have you used since you stared programming?
A whole bunch.
Various forms of Basic - the ZX81 and Spectrum versions of Sinclair Basic. Amstrad Basic (on an Amstrad CPC 6128) and Apple Basic (on Apple ][ and //e computers at school). Frustrations with the limitations of Basic led me into writing things in assembly language - first on the Z80a processors of my ZX81 and Spectrum, then on the 6502 processors of the Apple //’s at school. I never did quite get my head around the LEA (load effective address) instruction on the 65C816 of the Apple //gs.
My first introduction to Pascal was UCSD Pascal on the Apple computers at work, though I also used Turbo Pascal 2 for CP/M at home. Later, I used various editions of Turbo Pascal for DOS on my first PC, as well as Mac Pascal in my first year at Canterbury University.
While still at high school, night class at the local Polytechnic introduced me to C, though I found dBase III and Clipper S87 more to my liking because they made it easier to store and recall information between uses of my applications.
Most of my Computer Science degree course work was done on Sun Microsystems hardware, exposing me to the wide weird world of unix, including all the little languages that make unix so powerful. Tools like sed, awk, perl, lex and yacc were all useful (though I’d need to go back to their manuals now!).
Post university, I dabbled in some AppleScript before buying the latest Borland product - Delphi 1, the logical successor to Borland Pascal for Windows (itself the successor to Turbo Pascal for DOS). I spent many years using various Delphi incarnations before making the leap to C# and .NET.
Recently, I’ve been looking into F# and Haskell, though I’ve not done as much as I’d have liked - have been spending more time on the latest goodies introduced in C# 3.0.
What was your first professional programming gig?
My high school ran an extensive program of community education classes - mostly on weekday evenings - and was getting buried under the necessary paperwork. I spend the summer holidays one year writing an application - using dBase IV - to help them keep track of the classes and enrolments. One key feature of the application was to generate the information they needed to complete a demographics return required by the Ministry of Education.
If you knew then what you know now, would you have started programming.
If there is one thing you learned along the way that you would tell new developers, what would it be?
It doesn’t matter how clever your program is, your users don’t want to use it. No, Really.
Your users want to get their jobs done as quickly and easily as they can, so they can go do other things - like play with their kids, drive a boat, make a cake or read a book.
If you can write your programs to allow your users to get more done in less time, with less fussing around - if you can make your program fade into the background so well that people forget they’re using it - then you’ll have a success.
The other thing - talent counts. If you don’t have a talent for problem solving, if you don’t enjoy the challenge of learning new things and applying those skills, then get out fast, before you burn out.
What’s the most fun you’ve ever had … programming?
That’s a toughie.
One of my early successes was a replacement floppy disk driver for Amstrad CP/M+ - this 1K Z80 assembly language program replaced the standard FDD driver with an enhanced one that supported most of the custom disc formats used by the Amstrad computers. (It seems that on the Internet, nothing ever dies - here is the announcement email that a friend posted about this driver, and a few other projects.)
My Mandelbrot screensaver is another fun project - over the years, I’ve rewritten it several times for new environments, each time rediscovering the detail and wonder of the Mandelbrot fractal.
Overall, though, I’d say the most fun I’ve had has been the ongoing journey of discovery that underlies professional software development - there always seems to be something new to learn, a better way to do things, a more effective way to contribute value.
Stephen, over to you.