Craig tagged me for this ages ago, so I guess I’d probably best put in my answers!
How old were you when you started programming?
I think I probably started aged around ten or eleven, with the arrival of a Sinclair Spectrum at home and a BBC Model B at school.
How did you get started in programming?
I’m not really sure of this one, but I guess it was just the interest in how the respective computers worked, and the challenge of getting them to do things.
What was your first language?
Definitely Spectrum Basic. Until I was actually doing a proper Computer Science course at school – something that seems to have fallen by the wayside for generic ICT classes now – most of the software development was at home, thanks in part to the listings that the computer magazines produced. Indeed back then there was even an entire magazine devoted to listings, Sincliar Programs, which I used to read and copy in the listings from.
What was the first real program that you wrote?
I’m not really sure, probably the old classic “Hello World” in Spectrum Basic. In terms of a real serious project, that was probably the programming project for my A-Level in Computer Science.
What languages have you used since you started programming?
Basic – Spectrum/BBC/VB6/VB.Net, C, C++, Modula-2, 68000 assembler, Pop-11, Occam, COBOL, SQLWindows, Java, C#.
What Was Your First Programming Gig?
This was a summer job as a result of a work experience week, working for the British Holstein Friesian Cattle Society in Rickmansworth. Their business was keeping pedigree records for several different breeds of cattle and sheep, and on request producing the lineage of an animal, usually when the animal was being bought or sold. I spent the summer there during a key period from the point of view of their computers as they were moving from an old system written in COBOL running on an ageing ICL ME-29, over to a system written in C on a UNIX box. The COBOL was probably the experience that left the biggest impression, as in COBOL the indentation of the lines of code is important, and the editor only went forwards through the file, and only allowed you to edit the line at the bottom of the screen!
If you knew then what you know now, would you have started programming?
Definitely yes, not least because if I hadn’t have gone into programming professionally I would have probably become one of the worryingly large group of amateur programmers I’ve come across hacking together key business applications, all of whom would much rather be doing a programming job than the one they ended up in.
If there is one thing you learned along the way that you would tell new developers what would that be?
One of the main tips I’d give is to give yourself a broad and general base – having done a couple of crash courses in VB doesn’t make you a programmer. Most of the best ones I’ve come across over the years have been flexible and adaptable, and usuall spent several years doing a broad based course – generally a degree of some sort – where they have been given the broad basis that allows them to cross-train quickly as technologies change. They’ve also got the broad IT knowledge to understand what else is going on around their job – you might not ever program professionally in assembly, or do any deep level AI research, but it is surprising how much of that sort of stuff is useful in ‘normal’ programming. Don’t get me wrong, I’ve met quite a few people who have learnt programming on-the-job and can cope, but equally I’ve met a lot of others who aren’t adaptable and end up stuck. For example one contractor we’ve had at work is self-taught and writes great ASP code – unfortunately he was hired to write ASP.Net, and he really doesn’t get the differences. With our entire suite of software being rewritten in a multi-tier C# design, using an object-oriented design – because he’d been taught how to write ASP pages in VB, rather than being taught software engineering he was effectively unable to do what we needed.
Along those lines, I’d also advise anybody to keep your skills current, and be especially wary of companies that don’t keep up to date, or program in something that isn’t mainstream. The biggest problem to get into is ending up in a very small niche programming market as I did with SQLWindows. Luckily I found a new employer who was happy to cross-train me into VB. You’re never going to totally escape from maintaining the creaky old VB6 systems, but make sure you’re in a company where you get a balance.
What’s the most fun you’ve ever had… programming?
I’ve had times when I’ve enjoyed programming professionally, but still one of the most fun bits of programming I’ve had was on the LPMud we had running at university. The game was all running in a variation of C, and one you reached wizard level you got to add to the game by writing code – indeed the wizards got programming level access to the guts of the game so you could actually manipulate the game environment on the fly. Programming for that there wasn’t really any pressure, and in terms of the game there weren’t really any limitations on what you could produce. Professional programming, the majority of the time you are working to a spec, and for a customer, and you don’t get nearly so much freedom in what you do.