How I Got Started Programming
I got passed the baton by Giles Bowkett. In my flattery, I’ve decided to return the favor by aping his style. He also pinged a bunch of people, and thus far only Paul Dix and I have responded.
How old were you when you started programming?
I was six or seven when I began to look at the family computer, an Apple //c, in a different way.
Before that moment—which I don’t exactly recall—I had spent countless hours playing some Sesame Street coloring game, some dolphin spelling game, Dazzle Draw, Short Circuit, Impossible Mission, Joust and Dig Dug.
I should say that this would have been 1990 or 1991. That Apple was ancient by that point. I’ve got a retro tech sensibility for my age, cutting my teeth on computers that were a decade old by the time I got to them.
How did you get started in programming?
I wish I could spin a millionaire’s-memoir-quality yarn here about the miraculous paradigm shift that occurred when I realized that I could play on the computer, OR I could play with the computer.
Unfortunately, it’s lost to the fog of memory. I don’t remember how it happened. I just remember that it did. (My personal theory is that I found old school BASIC programming books in the library, as they still had them, and as I crawled all over that library and inspected every shelf.)
Once it had happened, I was obsessed. The very fact that I could hit some keys and make things appear on the screen was not that new to me—I could also draw and color and then type on my creations to print, after all. That was merely playing in a sandbox of someone else’s devising.
But the idea of making the machine dance to my tune… that was endlessly fascinating. I was drawn to its bizarre mix of complete and utter logic and, to my 6-year-old brain, the equal unfathomability of it. It was too much to hold in my head at once—I didn’t know how computers worked, after all—but the tiny bits that I could understand thrilled me. It was a classic case of “reach extending beyond [one’s] grasp.” I found a peephole into another world.
I remember at one point having problems with the computer and trying vainly every combination of boot floppy and magic keyboard command that I knew to get that Applesoft BASIC environment running so I could code. (Maybe I was trying to do something with two floppies at once? I had the immense luxury of two 5.25″ disk drives!) I don’t remember the outcome, I just remember a child’s perverse and unflinching determination, feeling that there was some voodoo magic incantation that I would find if I just kept randomizing.
What was your first language?
Applesoft BASIC. A language that, when we replaced the Apple //c with a Mac IIsi, I would try vainly to return to with various BASIC interpreters that never worked, for reasons unbeknownst to 9-year-old me. (Interpreters like Chipmunk BASIC. I even remember the name, 15 years later. How about that? The software was completely inexplicable.)
You could argue that it wasn’t really my first real language because I never got a complete grasp on it, although I did things with variables and inputs and so on, learned about order of operations and procedural execution (although not in those terms), and typed in lots of programs from other books. I didn’t really get serious about programming “real stuff” on my own until much later. I suppose that’s not surprising, since I was 6 years old.
What was the first real program you wrote?
I stared at this question for a while. I was thinking about which early web app I could possibly claim to be my first “real” program. But then I remembered Murgatroyd.
I played around a lot with Hypercard, and later HyperStudio, but never really programmed anything with them. But what really did get me programming was an infatuation with interactive fiction (aka text) games.
We had a copy of the Infocom Treasury[1] that appeared around the time of our first Mac—and I have no idea why or how, because I don’t remember asking for it but I was the one who installed and played it.
But I was completely taken with them… I played Infidel, and Ballyhoo, Zork I thru III, the haunted mansion one, and lots and lots of Hitchhiker’s Guide to the Galaxy. In fact, the game is what introduced 9-year-old me to the HHGTTG book series.
Like most kids, when I’d become totally into some masterful thing, I wanted to make my own, regardless of a total lack of skill or knowledge. Thus I found World Builder, which was a little development environment exactly for just that very thing.
I learned a bit of the World Builder script using the documentation and built two applications: one, an alien named Murgatroyd with a lot of antennae that told jokes (complete with mouse-drawn pictures that changed based on the joke—World Builder was pretty sweet); and two, a game based in a school, although I only ended up building a couple of rooms.
Alas they are lost to time.
After that, and before I got into web development, the only other thing I completed was a bot on a MOO. A squirrel that would steal other people’s items, among other things. I suppose that was my first brush with object oriented programming (although I didn’t know it at the time).
What languages have you used since you started programming?
When I was 10, I ended up reading a book on HTML. I made tons of web pages. As that got boring, I wanted to write a script to generate web pages, so I asked around on Usenet and ended up buying the famous camel book on PERL.
Taking my understanding of inputs and outputs from BASIC, World Builder and the MOO scripting—plus a few pages of the venerable camel—I wrote a little script, but could never get it to run on my web host. I again asked on Usenet, but nobody could figure out what was wrong. Being unable to find any help or make any progress at all, I gave up.
Later on the cycle repeated itself with C and C++. The books were terrible, incomprehensible, and I had no one who could help me. My brother broke my first “real” C program (a guess-the-numbers game) by entering a 0 instead of a number from 1 to 9 and thus threw it into an infinite loop. I’d been impatient and clever and discovered recursion on my own, but didn’t know how to solve the infinite loop problem, or even what it was called.
Around 16 or 17, I finally mastered a language: PHP. (Along with database design and SQL.) Since then, I’ve also become expert level in JavaScript and pretty good with Ruby as well.
What was your first professional programming gig?
Don’t remember!
I know it must sound like I’ve done a lot of unmentionable pharmaceuticals to cause so many lapses in memory, but I really just don’t put that most emphasis on firsts, I guess. Only if they’re important. And I’m pretty sure it wasn’t. I’m pretty sure there was a lot of stumbling involved.
The first big one that I remember was for as a subcontractor for a client in California. I must have been 17, maybe 18 on the outside.
They had me build something like a trouble ticket system. A ticket could be infinitely passed up and down the chain of command based on people who were in certain groups or specific roles. People had to accept the ticket, bounce it up or bounce it down, and the business logic was frighteningly complex. I had never heard of ACLs by that point, but I managed to invent one that looked pretty much textbook.
The logic of the ticket bouncing around stretched me—even while I thought it was a terrible idea—and I don’t think I’ll forget that project in a hurry.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Two things:
1. Just about everything in life is more important than programming.
Arguing about technology or programming languages is a complete and utter waste of human capacity. (And that includes defending them from “idiots,” as well.) The moment you feel superior because of the technology you use, or the language you write in, god kills a kitten.
It’s a means, not the way itself.
2. Prerequisites are a load of crap.
Some people seem to think they need to master college-level math before learning to program. Worse yet, some people seem to feel the desire to inflict this idea on the rest of the world.
Math is a tool and a skill, and a way of thinking about the world. Programming is a tool and a skill, and a way of thinking about the world. You can come to one by the other, but the order doesn’t matter.
What little programming I did do before the age of 12 helped me very much as a 7th grader in Algebra. I was the only one in the class who got the idea of variables and formulas. I thought, “Hey, that’s like programming!” Ditto with Geometry in 9th grade. “Hey, truth is binary and truth tables are like lookup tables, and proofs are like if()/then()!” And so on.
So I will continue to call bullshit on the idea. Anything that puts barriers between people and programming is wrong.
What’s the most fun you’ve ever had… programming?
I can’t think of a single particular thing. In general:
- Kicking the ass of something that was beating me.
- Learning something that made my brain hurt.
- Doing more with less.
- Gaining complete control over simple machines. (I don’t think programming on these “infinite” multi-purpose computers is nearly a fun. The web, to me, is metaphorically a return to the simplicity of a computer I can hold completely in my head and control, like the Apple //c or TI-83 calculator. A limited, knowable universe.)
[1] Turns out this is actually called The Lost Treasures of Infocom I. I have been thinking of it as Infocom Treasury for the past 15 years though, so I’m not about to change. Sorry, reality.
Next up…
I pass the baton to:
<i>He also pinged a bunch of people, and thus far only Paul Dix and I have responded.</i>
Snubbed!
I had actually been tagged for a month before I noticed, so I’ll just be patient.
Some of this sounds terribly familiar! 🙂
I did the Applesoft BASIC stage aged 6 or 7, too. My trouble was, by the time I got to age 13, HTML was still a year away from being invented, and "computing" suddenly meant "use Microsoft Word on the Mac". Sometimes I wish I was born a few years later!
I was waiting and hoping that someone would ping me on this. I’m not cool enough to sit on it for months so I stayed up and wrote my answers: http://metaatem.net/2008/06/30/how-i-got-started-in-programming
What a great idea this is. I’m amazed at how many of these stories start with the Apple ][. Thanks for sharing! (And my humble answers can be found at http://www.randomnonsequitur.com/post/32)
I have to say my career started with the commodore 64 and BBC micro B. How much fun was it finding out such things as… more than half the school I grew up going to blamed me for turning the auto-floppy-boot loader off and apparently "breaking" the machine… when I was making special programs to display things for my "girlfriends"… now I code in way too many languages.
"My brother broke my first "real" C program (a guess-the-numbers game) by entering a 0 instead of a number from 1 to 9 and thus threw it into an infinite loop."
Said brother replies: Nyah nyah! Zeros rule and always will!
I have started programming when I was 9
I was twelve when I got a Sinclair ZX81 computer (1982). I wanted a Atari game console for Christmas but my parents told me to program my games by myself… This Sinclair device had 1 KB of memory, so my games were not really funny 🙂
I had the same experience with "graduating" from BASIC to C/C++: the books were uniformly horrible, and the effort required to do even simple GUI things on System 7-era Macs nearly killed my programming career in its infancy.
Now that I think about it, I’ve never really forgiven C for that.
What’s with the C64 screenshot for the part about Applesoft BASIC? 🙂
True enough about that “don’t need math” thing. The ability to grasp the Big Picture, and modularize it is independent of math. I’m fair at it, my husband is terrible – despite his being MUCH better at high-level math. Most of what I know of math and physics comes from my practical experiences with programming. When I first saw the math professor put a matrix on the board, my mind leaped to my experiences with databases and arrays.