Tuesday, June 24, 2008

How I Got Started Programming

Tagged by Jim Weirich.

How old were you when you started programming?

I was 11. My dad, a gadget freak, bought the first computer on the block. He used it to do spreadsheets for his business. It was an Apple II.

I had a lot of fun with this, so my dad took me to a programming class. I learned BASIC on a TRS-80 with a tape drive.

How did you get started in programming?

The programming thing went dormant for years. When I was 19, I dropped out of college. I got an insurance settlement for a car accident when I'd been sixteen. My parents told me to use the money for college. I swore I would, and instead moved to a dangerous neighborhood in Chicago where the rent was low. My money lasted me there for quite some time, but eventually I had to get a job. Prior to getting a job, I spent months if not years writing bad screenplays and making pretty good music. (I no longer have copies of either.)

When I eventually had to start working again, I didn't want to get a real job. I was too hooked on my freedom. I also had no faith that I actually could - all my friends were finishing up college, and I had no degree. My parents are English, and in England exceptionally smart people go to great schools for free. People in America told them, oh yeah, we have that here, and probably believed it, so my parents hadn't saved the requisite gazillions of dollars for an American college education, and consequently I was hosed.

(In my parents' defense, they swear that Rice offered me a full scholarship, but I said I didn't want to go to Texas. This might be true. I don't know. I have no memory of it, but to be honest, it sounds like the kind of thing that I would do.)

So I did a bunch of office temping, and it sucked, but it worked really well in terms of giving me long stretches where I could write and make music without having to go to work. The cool thing about office temping is it seems like big money when you're really young and your rent is pretty cheap. Eventually it wasn't enough money, though, so I started doing Photoshop and Illustrator temping, and on one of those jobs, somebody asked me if I knew HTML.

And I did, because I was an internet junkie by that point. It was 1994 or thereabouts, and the internet was this amazing strange thing nobody had ever heard of. I was reading bOING bOING, the original paper zine, I had written tiny snippets for Wired and Schwa, and I had started doing HTML. I had a weird, dorky web site, my posts on alt.adjective.noun.verb.verb.verb were showing up on alt.best.of.internet, I was into it.

I didn't have any experience, though, so to fix that I convinced the great graphic designer Carlos Segura to let me build a web site for his font foundry [T-26], but my follow-through was utter fail. I didn't have the software to do any real design, or the money to obtain it, or the friends to "borrow" it from, or the hacker skills to steal it. Also at the time I didn't really have the art skills to do anything with the software if I'd gotten it.

Anyway, stumbles aside, HTML freelancing worked well, so I got a book on Perl and learned Perl, and got a book on Java but totally failed to get it at all. My internet friends told me San Francisco was the place to be for HTML and Perl work, so I moved there in 1997. I got more work than I could handle, quickly graduated to just Perl, and within a very short space of time made a bunch of money as a tech contractor.

I was still doing temping, essentially, but for a much higher rate.

What was your first language?

Either BASIC, or Pascal, or Perl. In between Perl and BASIC, I learned Pascal. I took a boring summer job as a teenager, assisting union guys who really didn't work very hard or need assistants. The guy I was assisting took long naps of several hours per day, during which I was supposed to just chill and do nothing. This drove me crazy with boredom, but the job paid really well by teenage standards, so I borrowed a friend's book on Pascal and read it. I even wrote "programs" in a little notebook I brought with me, solving the programming problems at the end of each chapter.

I never found out if any of that code actually ran. The reason I did it is my big hobby at the time was reading Ancient Greek, and reading Ancient Greek requires at least three books and a notebook - the notebook for your translation, the book you're reading, the Liddell-Scott lexicon, and a verbs dictionary which also provided the dialect-oriented info that Liddell-Scott always left out. Yes, my big hobby as a teenager. Not exactly a party animal.

I couldn't take these with me to work, because the Liddell-Scott lexicon is the size of an ottoman, and people would have noticed it in my backpack. I figured a paperback on a programming language was close enough.

What was the first real program you wrote?


The runner-up would be a publishing system I built for E*Trade. I came on to keep a system alive and rewrote it from the ground up, learning OO along the way. The system solved an office politics problem; this was intentional. If you're in your early 20s and you tell CEOs they fucked up their org chart, you'll never get anywhere, but if you just build a tool which requires a certain structure of social interaction, you can fix the problem the CEO caused without anyone ever seeing you do it. Designing social software is as much about social engineering as anything else.

What languages have you used since you started programming?

Perl, JavaScript, Java, Python, Ruby, PHP, HTML, CSS, Common Lisp, Scheme, Erlang, Haskell, Squeak/Smalltalk, Processing, Supercollider, ActionScript, and BASIC. I'm only skilled in a small subset of these. There are probably more I've played with, though.

What was your first professional programming gig?

I don't remember. My resume says I've worked for over 30 companies, but that's actually not counting my career before I moved to San Francisco. When I was doing first office temping and then freelance Photoshop, HTML, and Perl in Chicago, that probably adds another 20 or more into the mix.

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

Programming can do anything. You've got to pay the bills, but don't let the world tell you where programming happens. Programming is a how, not a what. In 2008 anything can be automated. You can have a machine running Ruby built into your car.


Make no little plans. They have no magic to stir men’s blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing insistency. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be order and your beacon beauty. Think big.

Daniel Burnham, Chicago architect. (1864-1912)

What’s the most fun you’ve ever had… programming?


The runner-up would be discovering Rails.

Who’s up next?

Paul Dix.
Ramon Leon.
Amy Hoy.
Pat Maddox.
Ben Bleything.
Eric Trebuchet.