Saturday, June 07, 2008

Well, Michael Eaton posted a blog question to everyone regarding how you got started in programming. My blog is up right now, so I thought I would answer the questions.



How old were you when you started programming?

That's kind of a tough question. I don't really remember a time in my life without a computer. Although I dabbled here and there with small alterations with source code, I would have to say that I started really understanding it in my pre-teens. I took a computer course in 8th grade and already had at least a rudimentary understanding of programming; I obviously had spent a lot of time, because I remember clocking around 60wpm with hunt-and-peck typing. I guess I don't really remember not having at least a rudimentary grasp of code. I do remember a lot of copying of code from magazines and books.

How did you get started in programming?

My father was a programmer when I was a kid, so computers were around me. I remember dialing in to his work on an old acoustic coupler modem and playing silly games. Somewhere along the line, I started learning about source listings and taking a look at how the games that I was playing were written.
Now, knowing that my entire memory is filled with at least a basic understanding of programming, there is a distinct point when I consider myself starting actual programming. I started calling up BBS's when I was probably 11-12, and I remember meeting a guy named Fred McClain (who I recently contacted again after all these years). Now, I had already written little things in BASIC, probably starting on the TRS-80, then moving to a PC, but Fred (and others on the bulletin boards) showed me C. My father was a fortran programmer, and I didn't really have a grasp of that. I guess I never really thought about what he actually did as a day job. For me, computers were a hobby and not something I even thought of as a career; hell, I wanted to be a theoretical cosmologist (yeah, even at around 13, I knew what I wanted to be). Fred recommended that I get the K&R and the TurboC Bible, plus, of course, TurboC. So, that's what I did. Holy Shit! It was like a whole new world. I couldn't get enough of it. I remember waking up on Saturday, turning on my hand-me-down Tandy 1000 (when my dad got his 286), then realizing that my mother was calling me down for dinner. I have a bit of strange memory for years, as I thought I got TurboC++ 1.0 (now with MDI support, sweetness!) in 1989, but wikipedia says it was released in 1991. Oh well, you never know (okay, maybe they do know, and I don't). In any case, I remember that all I wanted for christmas was TurboC++ 1.0, and, for sure, it was sitting under the tree (I wonder if it was TurboC that I got for christmas, which would explain the timing difference in my mind). In any case, I loved that app with all my heart. I still remember how wonderful it was to work with; keyboard support for everything, MDI support (editing multiple files at once, wowsers), etc.
Somewhere along being a teenager, I wrote a small calendaring application that I sold to my sister's work. It was a very simple application that allowed you to schedule events. When you turned on your computer, a small application in your autoexec.bat would check to see if there was anything scheduled for that day. If so, it would alert you. Super sweet! Yeah, it was a small database, and I had figured out a rudimentary indexing mechanism using two flat files. It was pretty cool to actually write something and sell it. I think I got $15, or something, which is a lot when you are young.
I also remember writing a fairly complex 'install program' for a game that my friend, Mike Denton, and I were giving to a friend. The kicker was that the 'install' would actually put some other stuff on his machine. The point was to stick a small application in his autoexec.bat that would pop up porn every few boots. The app was sensitive as to whether it was being run on boot, or not, so it spit something like 'microsoft time tracker' or something silly if it was being run from the command-line. The porn was spread out all over his machine, so it was going to be a bitch to track down and remove, if he ever figured out what was causing it. In the end, we didn't deploy it, but it sure was fun.
When I was 19, I moved to Berkeley, CA, for a 9-month stint in the Department of Energy's Science and Engineering Research Semester. I worked in the astronomy department in a team that was searching for supernovae to try to measure whether the universe was going to collapse or keep expanding. I had a solid grasp of programming by then, as I definitely did some programming for them. I remember writing a budget tracking application in Excel 4 using macros. I wrote a small interface in C++ that would integrate with a specific telescope motion controller and draw off the data into Excel to be analyzed (we needed to make sure that this specific motion controller could support the tolerances we needed for a 5-minute exposure). I also worked on interfacing with a clock that synchronized over the air with the national atomic clock. It didn't have any documentation, so I was left sending commands over the RS-232 and trying to figure out what came back. I figured out how to get the data back, but I don't think I ever actually got the time coming back. Somewhere along the lines there I built a null-modem and a rudimentary terminal program between a PC and a dummy terminal. The experience in Berkeley was amazing and life-changing for me, and I met some great people.

What was your first language?

Well, it was most assuredly some form of BASIC, probably GW-BASIC. My first language that I REALLY worked with was C on MS-DOS.

What was the first real program you wrote?

As outlined above, my first real program was a calendaring application. That was super cool and led to some great understandings. I also wrote an application for a citadel-based BBS that simulated a griffin-racing game, so you could win credits on City of Edgekeep (Scot Ranney's BBS).
Scot Ranney and I also learned C++ together by writing a port of the old Atari 2600 combat game.
My first major application was a language school management application that I wrote in Hungary for the school I was working at. I figured I could write it in Excel, since I had experience with the macros. This was in 1995, I believe, and Excel 5 had come out with VBA. Wow! I ended up writing the application in VBA. Unfortunately, I only had the help files to learn from, and, to top it all, they were in Hungarian. Needless to say, the application was ugly, but it worked. One side note is that I ended up writing a fairly robust relational database system in Excel, including referential integrity and cascading deletes. It was super sweet! Of course, I could have done it in Access, but I had never heard of it. :) I actually got paid for writing that application, so I was pretty excited. It wasn't a lot of money, but it definitely helped my living expenses there.
Based on my database system in Excel, I wrote a super cool little quiz application, as well. I originally used it as a way to practice Hungarian, putting in words and having the system ask me what they meant. I ended up selling this to a few of my students, as well. It had a few different quiz types that you could use, as well as allowing you to invert the language. It supported exporting lists into a file that another user could import into their own copy. This allowed students to share the burden of typing in the lists.

What languages have you used since you started programming?

In the beginning: C/C++, GW-Basic, MS-Dos batch

For various amounts of pay: Visual Basic for Applications, Visual Basic (4-6), C#, VB.Net, Java, VBScript, Javascript, Ruby, XSLT

For fun and learning (this means varying levels of actual writing code/familiarity): Lisp, F#, Python

What was your first professional programming gig?

Well, if by 'gig', I mean 'actual job' then it would be in 1996 at the Hungarian company, Elender. I worked as the web developer there from fall of 1996 to fall of 1997. I ended up running the web studio there, which was when I learned that I shouldn't be a manager: I am horrible at it. Would I be better now, based on my experience? Sure, I would. I don't want to, though, so I just keep telling everyone that I'm a horrible manager.

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

Absolutely! It is an amazing hobby and career.

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

This has been repeated many times by people answering these questions, but I'll repeat it: Programming is a social activity. Do not let yourself get stuck in a heads-down, cube-farm job. Get involved in the community. Make connections, build your network. The best way to get ahead is to do with with support from other people.

My own contribution is that you are responsible for your own career. A company is responsible for your job, but you must actively take steps to further your own career. Don't complain that your company isn't sending you to that conference: pay for it yourself and go, even if you have to take time off. Read, write, talk, program!

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

Wow! What a crazy thing to answer. I have had so many fantastic experiences programming, I don't know which to choose. Here's a couple examples:

  • Writing code with Scot Ranney as a teenager. How awesome is was to program as a hobby; we would just sit down and start writing code. What do we want it to do? Let's write it. Doesn't work? Change it and try again.
  • Working on the first version of FUnit with Mike Kerkel. I remember my first real experience with getting into the pair-programming groove: we worked for something like 8 hours straight together and just cranked out an amazing amount of code.
  • Pairing at agile conferences. 2004 XP Universe: when I stumbled into the coding room and met David Chelimsky. Late night drunken programming at Agile 2007.
  • Definitely neither last nor least, I am loving my job at within3. We are a small team of really passionate people working on something that could potentially save lives. Am I working my tail off? Yes. Am I having more fun than I've had in a long time? Absolutely!
Saturday, June 07, 2008 2:12:12 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]