Julie Lerman called me out to participate in this set of questions about how folks got started programming, and it is fun to hear about those kinds of things. So here are my answers and at the bottom a few more people I’ll add to the process.
How old were you when you first started programming? I think my first experiments with programming happened when I was 9 or 10 on the TRS-80 Model 1 or Model 3 of some friends at school, but I really began programming when I was given my first computer, an Apple ][+, at age 11.
How did you get started in programming? I remember staying up late on Christmas day writing a program that experimented with getting input from the user, for loops and adding attributes to things to make them flash and such. From that very first day with my own computer I was hooked. For a long time, though, I thought computers would just be a side-line for me and that I would focus on some other field—probably my most common answer to the “what do you want to be when you grow up” question was that I wanted to double major in mechanical and electrical engineering and focus on robotics. As I got older, though, I realized that programming was really the thing that got me excited.
What was your first language? I programmed initially in applesoft basic (both programs of my own and ones that I typed in from the back of magazines or books), but it didn’t take me long to start experimenting with 6502 assembler, and it was really cool when I got the “Microsoft language card” for my apple (which was really just a 16k ram card taking the machine up from 48k to 64k) because then I could start programming in Pascal. On a side note, this Pascal implementation was actually a very early version of something like managed code because the compiler output p-code which was interpreted at runtime (something like IL or java bytecodes).
What was the first real program you wrote? What I remember of the very first program I wrote (mentioned above) is something about a count down and an explosion which was the whole screen in flashing type. After that I know there were many other programs but the next significant thing I remember was being paid some trivial amount by an older student at my school who wanted a program which would simulate large D&D battles involving many players without him having to roll the dice by hand. Later I remember really pushing the envelope of my apple by writing programs that did animation of a 3-d wireframe model of the space shuttle with hidden lines removed.
What languages have you used since you started programming? I went through a phase in college where I was fascinated by the idea of exploring every programming language I could get my hands on, and I dabbled with many things from forth to prolog to modula-2, etc., but I never wrote enough code in any of those to really claim that I’ve used them. A more realistic list would look something like this: basic (*several* flavors), pascal, 6502, 80X86 and 68000 assembler, informix-4gl, clipper, c, c++, scheme, elisp, perl, tcl, vb, c#.
What was your first professional programming gig? Toward the end of my senior year in high school I took a job working for a local title company doing some computer training and other miscellaneous tasks. Somehow I talked my way into turning it (for a while at least) into a programming job creating a computer-assisted learning program. Since programming wasn’t really the original intent of that job, though, I probably have to point to my second computer gig as the first real job where programming was part of what was expected. I was working at a small computer store doing a combination of sales and service/technical support. My first real programming job was something that one of the owners volunteered us for: creating a database system using Informix to help a charitable organization which was creating a park with a fountain and for a donation you could purchase a brick, have it inscribed and then they would place it in the park. The system I wrote tracked the inscriptions and created files which were sent to the engraving company.
If you knew then what you know now, would you have started programming? Absolutely! The joy of creating software, working with teams of exceedingly smart people, constantly learning and doing things that can really change the way people work, live and play is something I’m very thankful for.
If there is one thing you learned along the way that you would tell new developers, what would it be? Building great software is so much more than just getting the computer to run—don’t forget that at its heart this endeavor is all about people, so make sure you focus not just on the technical stuff but also on what we sometimes call the “soft skills” especially all forms of communication.
What's the most fun you've ever had ... programming? The most fun I’ve had programming has always been working on a project with one or two really smart people when the ideas are flying and we’re pushing the envelope of what we think are brains are capable of. There’s nothing quite like that mindbender where you come across a concept that completely challenges the way you think which leads to a whole series of “Ah ha!” moments as you capture parts of it—often only to discover that there are more depths than you realized so you know you’ll need another “Ah ha!” before you are done. I shared some of the best of these moments with my good friend and partner in crime from high school, Mike. These days I most often get to share the feeling vicariously with my son, Keith, who is just about to turn 13 and is rapidly becoming a much more sophisticated programmer than I ever was at that age.
Well, I don’t know if we’ll be able to coax them all into responding or not, but I’m always up for an opportunity to learn more about the folks I work with. So I’ll add 5 of my colleagues to the list.