Software development meme

I've been tagged by Isaac, my personal go-to guru.

How old were you when you first started programming?

When I was 11 (1992) my parents sent me to computer camp. Living in the third world, it was also the first time I'd seen a PC, and only the third computer of any kind I'd ever seen: I'd previously bumped into a Commodore 64 and an Apple II, but nobody around at the time had any idea how to do anything with them other than turn them on. At computer camp we were building toys in GWBASIC, and I was immediately drawn to the ability to draw shapes and colours on the screen.

What was your first language?

I guess GWBASIC, then a little bit of QBASIC and some PASCAL at school. The first programming language I built anything for myself in was HTML -- or, if you don't consider that a programming language, then PHP.

What was the first real program you wrote?

It depends what you consider a program. I have been a web guy right from the very start. The first real website I built was called H.O.AM (short for Home of OverAmbition), a pure vanity site only distinguishable from my current site in that the current one has more SEO and is very, very fractionally less blue.

If you insist on conditionals and loops to consider something a program, then the first non school-assignment program I wrote was another website in PHP called TnTYellow. It was supposed to be an online Yellow Pages for Trinidad and Tobago -- something it lacked at the time. It never launched -- I didn't even really know how to launch a proper website at the time -- but it came in useful anyway; see later.

What languages have you used since you started programming?

Extensively:

  • PHP
  • Java
  • JavaScript
  • SQL (if you don't think SQL is a programming language, you just don't know it well enough)

Casually/Experimentally:

  • Python, and liked it a lot.
  • C
  • Ruby, only for rails, and didn't like it.
  • Bash but it's evil
  • QBasic
  • Pascal
  • Erlang
  • SML

What was your first professional programming gig?

A little startup called EasyArt. It's still around, and still pretty small as far as I can tell. My interview was in a nearby Starbucks, and consisted of opening up my laptop and demonstrating the running version of TnTYellow. Yes, the first proper program I ever wrote also got me my first job -- it was 2000, and frankly they would have hired any monkey with a laptop. It worked out well though; I had a great time, blew through a lot of their money, and my boss turned out to be the best boss I've ever had, possibly that anyone in the world has ever had. He patiently taught me good coding practices, forced me to learn things I thought were too difficult, protected me from the random whims of management, and was endlessly understanding and funny. He even provided fatherly advice during the brief period following my coming-out in which my father and I were not speaking.

I have judged all subsequent bosses relative to him and few have lived up to that standard, which is probably a little unfair, since the circumstances are never going to repeat themselves.

If you knew then what you know now, would you have started programming?

Absolutely. I'd have started a lot earlier, and paid more attention to fundamentals. Hell, if I'd known then what I'd known now, I'd have started Facebook in 1998 and been a billionaire by now. I'd also have warned a bunch of people to avoid New York around September 2001. I always think questions like this are a little silly.

If there is one thing you learned along the way that you would tell new developers, what would it be?

The best way to learn how to program well is to program badly for a very long time, so start now. The second-best way is to read other people's code, but really you need to have been burned by your own mistakes a few hundred times before you can really understand why it is they do what they do.

I was reminded of this by a friend of mine who is pretty new to programming and said she doesn't bother documenting her code because "it turns out I can remember why I did stuff pretty well". The point of documentation, of course, is to explain to other people why you did stuff. There will always be other people eventually. Write at least one line of documentation for every 10 lines of code, preferably more.

What's the most fun you've ever had... programming?

I love web development like other people love sunlight and music. I have a hard time thinking of a time when I've been programming that's not been fun; most of the bad times stemmed from environmental or administrative problems that prevented me from programming. That said, I think hacking on Seldo.Com 2.0 back in 2002 was exceptionally fun: I had 6 weeks of Easter vacation with nothing to do other than build a website whose only designer and customer was myself. It was pure free-form, randomized invention.

Who's next?

I think I'm gonna tag Ed, a desktop software guy who will probably have a very different perspective on these things.

P.S. I also wrote quite a lot of code in perl. It was so awful that I repressed the memory.