Giles Bowkett tagged me to write these answers up. Read his first since it's probably more interesting.
How old were you when you started programming?
On my 9th birthday my grandmother gave me a Commodore 64C. At that point I had no idea what a computer was or what they were for. I had played with my brother on an Atari 2600 so I figured it was for gaming. Luckily, it came with some big manuals about setting it up, using it, and even a basic programming book. My dad helped me get started and after that I started exploring. I remember the whole thing seemed magical. What could it do? What could I make it do? I had the feeling that it opened up an entire world of unknown possibility.
How did you get started programming?
Like Giles, I had a long break after that initial rush. I played around with basic on the 64C until around the time I was 11 when I became more interested in skateboarding and skiing. I picked it up again for fun when I was 18, but only managed to teach myself enough C to get frustrated. Since I didn't have money to go to college, my immediate concern was trying to eek out a living. So I got into PC Tech work and worked my way up the ranks.
I moved into some Windows NT 4.0 administration and even picked up the now mocked and reviled MCSE (Microsoft Certified Systems Engineer). However, it enabled me to go to Redmond and work as a tester on the Windows 2000 team, which is where I got my first real exposure to programming. I wrote VBScript to automate the loading of test environments. I studied with other testers reading books on Pascal, C, and C++. However, I wouldn't call this a programming job. I was merely trying to expand into that area while doing more traditional Q.A.
After Windows 2000 shipped I went to work as a consultant migrating NT 4.0 installations. I shelved programming again for a few years with the hope that I could eventually move back into it. Yet, I moved further away from programming by picking up work as a network engineer playing with Cisco gear and frame relay connections. The move into network engineering is what eventually led me back to programming for good.
One night I had to perform an upgrade of two routers critical to a cable company's business. The pay-per-view traffic for a 100 site cable network came through these two routers. I had to upgrade the software on them and move them from one service provider to another. They were housed in one of those secure server rooms that's kept at a cool 60 degrees. I was led into the room and started the upgrade in the middle of the night. Unfortunately, during the upgrade something went wrong and the routers just wouldn't come back up! Now pay-per-view was out for every customer! After an hour of sweating bullets, and a few frantic phone calls waking people up in the middle of the night, I got things going.
On my drive home I promised myself that I would go back to school and also strive to get into programming professionally. I never wanted to deal with that situation again. None of the people I called could help me and I realized that I didn't have any real understanding of how these systems worked. To this day I have no idea what it was that fixed the problem (despite the fact that it was something that I did).
What was your first language?
Basic on the Commodore 64C was my first. C was the next thing I tried to learn, but real understanding didn't come until much later. Delphi was the first language that I ended up writing as a full time programmer.
What was the first real program you wrote?
The first thing that I felt was real was a web application for performing security assessments and compliance audits. The product actually never saw any decent customer usage (which is why the startup failed) so I'm not sure you can call it a "real" program. However, we had multiple releases and a few customers.
I've written a bunch since then, but I'm still striving to produce something that I'm impressed by. That's really what my work on Tahiti is all about.
What was your first professional programming gig?
That was in 2001 for the previously mentioned startup. At first it was a regular client application written in Delphi. We then worked on a web application written in VB.NET. The application itself was pretty mundane, but I was excited about the job because I was working in a startup with friends and it was my first job as a programmer. We ended up working a bunch of 80 hour work weeks and I learned a ton. I learned about programming, startups, how selling software in 2001-2003 is nothing like selling software in 1999, and how you're never more alive at work than when you're working on something new with a small team.
If there is one thing you learned along the way that you would tell new developers, what would it be?
You aren't and never will be the best programmer in the world, but it doesn't mean you shouldn't try. Corollary: Let Ryan Davis and Zed Shaw fight for the title of the biggest badass programmer, don't be too intimidated and keep expanding your skill set.
What's the most fun you've ever had programming?
Any time I sit down to work on Tahiti. Working on your own project and vision is by far the most fun you can have.
Who's up next?
Trotter Cashion
Zed Shaw
Josh Knowles
Ryan Davis
Geoffrey Grosenbach
Bryan Helmkamp
Obie Fernandez
Josh Susser