Note: I was tagged by the wonderful Amy Hoy over at Slash7. This is a great meme; it’s interesting and educational seeing how various professionals got into the business. Other responses I know of: Giles Bowkett, Chris Pietschmann, Erik Kastner, Joe O’Brien, Maggie Longshore, Tim Wingfield, Jeff Blankenburg, and (as far as I can tell) the original post by Michael Eaton. There are many more I’m sure; these are just the ones that came up on Google.
As a side note, it’s amazing how many of these stories begin with the Apple ][. But more about that later.
How old were you when you started programming?
I suppose that depends on how you define programming. I was eight when I wrote this little gem in AppleSoft BASIC (the referenced "Sarah" is my older sister):
10 PRINT "SARAH SUCKS"
20 GOTO 10
I'm not sure if you can count that as programming, however. It's more like electronic vandalism. (Watching her figure out how to stop the loop was always fun.) I also liked to make pictures on the Apple ][ monochromatic greenscreen by painstakingly plotting every point; again, this "program" can only dubiously be labeled as such. At the time, I didn't even know how to save my work, so they were all blissfully transient.
BASIC nuisances aside, the first program I wrote that a normal person could actually use without having to shut off their computer to stop it was a calendar application I built in PHP many years later. I was 19.
How did you get started in programming?
It all started with this machine, still in usable condition over twenty years later: the Apple ][.
These pictures were taken only a few months ago in my parents' basement. Depicted is the ineffable Colin Barrett poking through the user's manual and trying to get it to load AppleSoft; unfortunately, the floppy itself had long since gone bad. In an era where most of us get an AppleCare plan on anything and everything, it's pretty amazing to think that this machine has outlived the very media that its operating system is printed on. But I digress.
What's amazing about the Apple ][ (and // and other related models) is that it provides excellent affordance for programming. As soon as you boot it up you are provided with an inviting, blinking cursor, a prompt at which you can type straight-up BASIC and be immediately gratified with a response. The built-in BASIC interpreter was probably the single most influential factor on my technological growth, and judging from the articles others have written I’m not the only one. Think about it; in today’s era a child using a computer has to take several complicated steps to get to an environment in which they can program. Back then, all you had to do was turn on the machine.
What was your first language?
BASIC and Logo. I learned both from a children’s guide to programming (unfortunately I can’t remember the title anymore).
What was the first real program you wrote?
The first “real” program I wrote was a trivia game written in BASIC when I was about ten years old. The user could input their name and then answer a series of multiple-choice questions, mostly about animals or science. Since the whole program operated on GOTO loops (hot tech, I know), getting a question wrong meant only that you would go back to the question and get another opportunity to answer. It was therefore impossible to get to the end with anything but a perfect score. It was, uh… a very forgiving game.
What languages have you used since you started programming?
What was your first professional programming gig?
My first real job in college was working as an assistant webmaster for the school of Mechanical and Industrial Engineering at the University of Illinois. I had been making web pages in my free time for quite a while, but this was my first exposure to web programming. I was mostly hacking on existing ASP code the previous webmaster had written. It was scary, to be sure. I was an English major at that point and considered myself more of a designer than a coder. But reading and debugging this person’s code was actually a great way to learn, and I put myself through college with various HTML/ASP/PHP web development positions.
If there is one thing you learned along the way that you would tell new developers, what would it be?
I want to re-state something that Aaron Hillegass often says in his book Cocoa Programming for Mac OS X. This is hard work. It’s tough thinking and sometimes the problems are hard to solve. But you are not stupid. Repeat that to yourself. You are not stupid. Don’t give up before you’ve even given yourself a chance.
I feel that what keeps most people out of programming is fear. Fear that they will fail, that they’re not smart enough, that they don’t understand what makes the computer go. You need to understand that it’s not a strange new world; it operates by predictable rules in a predictable system. Learn the rules and use your brain. Don’t be afraid to think, and don’t be afraid to take risks.
And finally, don’t bite off more than you can chew. Any learning process is best taken one step at a time. Learn to type before you code.
What’s the most fun you’ve ever had programming?
That would actually be quite recently. As much as I love engineering, computers and problem-solving, I’ve had quite the love-hate relationship with programming over the course of my life. I’m fascinated by the power it gives you, but often appalled by how it is implemented. “This isn’t intuitive at all!” I would exclaim whenever a particular programming language’s syntax confused or frustrated be. Syntax in general has been a large barrier for me, and as a result I’ve often avoided programming whenever I could.
But then, in April of this year, I came across a project at Google that demanded automation. There was simply no other way to do it. I needed to generate over a thousand static HTML files and over four thousand screenshots across 14 languages. It was the largest marketing campaign we’ve ever done. And I needed to do it in just under a week, also accommodating time for QA and bug fixes. Doing it by hand was simply not an option.
I turned to Colin and said, “There’s a way to automate this isn’t there? There has to be. Otherwise it’s just not going to happen.”
He knew of a FireFox extension that could be accessed from the command line to take and save screenshots, so that’s where we started. He showed me some Python; it was my first exposure to the language. But Python is Python, and I was up and running within hours. And much to my surprise, I loved it. I took to it immediately. It was stupid, procedural programming, and certainly didn’t take advantage of Python’s more sophisticated OO features, but it worked. Within a day I had a script that processed the data files out of the spreadsheets they were in. In another day I was running one that would open the URL in all the appropriate languages (command line), take the screenshot (FireFox extension), open the screenshot in Photoshop and run an action on it for cropping/resizing (AppleScript), save the file and scp it to the proper location on the server (command line), and then move on the next one. Python was the glue that held all of these parts together; os.system was my friend.
A few days later I had made HTML templates that represented the static files in the project, and had another script which inserted the proper strings for all the languages and send the generated HTML files to the server.
For perhaps the first time since I was eight and using BASIC to harass my sister, I was really enjoying programming. It was empowering me. I didn’t feel trapped by it; Python is a beautifully intuitive language and quick to learn. And if I got stuck, I could ask Colin or find resources online. I realized what a large support network I have for programming, and how valuable of a resource that is too. It was wonderful.
And it worked. At the end of the day, the campaign launched successfully worldwide, when by any other means it would have been impossible.
Since then, I’ve had a better relationship with programming. I respect it, and I feel like I know how to make it respect me. I also know better how to approach learning it, and understanding it. And I know now that it’s worth it.
Phew. Sorry to ramble so long, but this is actually a subject quite near and dear to my heart. It’s an important part of my history and even my identity. Now then, here are a few people I would like to hear tell their story:
Aaron Hillegass (a pipe dream, I know… but I’m sure he has a good story to tell)