Thirty-seven years is a long time. Even with the help of Doc Brown, Marty McFly only managed to go back three decades. I'm going to try to add seven years to their previously unbroken record and take us back from 2013 to 1976.
I grew up in the 1960s and 1970s. I never wanted to be a computer scientist or a programmer.
I remember that from about age 13 until I went to college, I had a big poster of the moonshot lunar insertion trajectory hanging over my bed. I liked science, and generally thought I wanted to be a scientist. As a kid who grew up in the heady days of the Apollo program, I had a vague idea that I wanted to work for NASA.
As it turns out, I now live on the Space Coast, about 40 minutes south of Cape Canaveral. Ironically, in the eight years I've lived here, I've never had time to visit the rocket site.
I was technically inclined, and so I spent a lot of time with the A/V club. I liked tinkering with the mechanical components of the projectors, and liked the sound and fuss of the sprockets as they wound film through the mechanism. I also liked avoiding some classes.
My public high school had a small mini-computer, a Digital Equipment PDP-8e. We also had some sort of tie-line with a teletype to a local college, but I spent all my time on the PDP-8. I don't recall if computer class was an elective or required for everyone, but I vividly recall the class itself — better than I recall much else from that far back.
One thing I recall was that I wasn't particularly excited about the computer back then. While the Apple II came out that year, we didn't have access to it. We had a mini-computer and it was anything but friendly. It had blinking lights, a front panel where you would toggle in boot code, and you saved your programs on paper tape.
One other thing I recall was my teacher. His name was Ron Mezzadri, although we called him "Mezz." I remember his method for explaining how computers were very literal beasts. He had some of us stand in the back of the room and told us to walk forward. When we avoided all the desks, he told us we weren't thinking like a computer.
Then he had one of us give him instructions. When he was in the back of the room and was told to walk forward, he bashed into the desk and stopped. It took us most of the class session to discover we needed to very carefully guide him, step-by-step, turn-by-turn, all the way across the room.
He taught us not just how to program in BASIC, but the basics of assembly language. Since the PDP-8 needed a boot loader to be toggled in to boot up, he taught us what that meant, what binary code was, and showed us how to quickly toggle in the boot loader to start the PDP-8.
Later, when I went off to college, I was in school near Maynard, Massachusetts, where Digital Equipment Corporation was located. They made the PDP-8. At some point during my time there, I somehow (that memory is lost to time) got my hands on a raw front panel for a PDP-8 (the holes where the lights and switches would go were never cut).
I'm bringing this up because my wife talked me into helping her clean the garage this weekend, and I found that front panel among the items stored on our shelves. I'm going to need to dust that thing off and hang it somewhere. It's pretty special.
In any case, back to programming in high school. My teacher told us about a weekend program at the New Jersey Institute of Technology. It was a first-year college programming course in Fortran, but it was being offered to select New Jersey high school students. I applied and was accepted.
The "gotcha," at age 15 or so, was I didn't have a car and Newark was a 45-minute car ride down the Garden State Parkway. My dad was a hero. He drove me down there, on Saturday mornings, and came back four hours later to pick me up. That man had to spend three hours in the car every Saturday for sixteen or eighteen weeks, just so I could take Fortran.
For whatever reason, I was a natural. I "grokked" programming. I just got it. But, to this day, I couldn't tell you if I just "got it" because of some twisted spark inside of me, or because of how Mezz taught the class and triggered something, a something that has since been a big part of my career for all these years.
I wound up leaving high school a year early. By the end of my junior year, I'd used up all the school's science and math courses, and having taken (and aced, thank you very much!) a for-credit college Fortran course already, it seemed to make sense to skip my senior year.
That took some serious 'splaining, the day I decided this was what I wanted, and then had to convince my parents. But they eventually gave in, I applied to engineering school, and I got in — the youngest student in the college.
With the fog of time, I couldn't tell you whether I went to college early because of my programming classes, but they certainly contributed to the idea. After all, having finished my first college class at age 15, it seemed like something I could do.
The odd thing is that once I was in engineering school, I tried my darndest to major in something other than computer science. I believed that computers were a tool you used with other sciences, but I didn't just want to use them alone.
I started as a nuclear engineering major, switched to mechanical engineering, and for my first two years, tried the basic engineering courses for almost all the majors. They did not come naturally. They were a struggle.
Meanwhile, by the time I hit my junior year in college, I was taking the graduate school courses in microprocessor design and computer graphics. I'd used up all of the undergraduate computer science curriculum and by senior year, I was actually co-teaching the graduate microprocessor design course.
Also, by junior year, I still wasn't a computer science major and I was still trying to figure out what I was going to study in college. Eventually, my academic advisor broke it to me as gently as he could: I might not have declared as "computer science," but since I'd completed the computer science curriculum (and pretty much nothing else), I was, by default, a computer science major, whether that was my plan or not.
This week, ZDNet's Charlie Osborne and Matt Baxter-Reynolds are debating
I can't tell you whether all kids should be taught to program rather than, say, as Matt put it, "how to read mass spectrograph output...or how to calculate stresses on a suspension bridge."
But I can almost definitively tell you this: if my public high school didn't have a teacher like Mezz and hadn't introduced me to programming while I was still a kid (and this was the seventies, remember), I probably would never have had the incredibly exciting and gratifying career in computer technology that I've been so fortunate to experience.
Oh, and I still code. I also teach programming. Using Mezz as a role model, I teach object-oriented programming at the University of California, Berkeley extension. One of my most fervent hopes is that I'll inspire one of my students (who are mostly adults looking to improve or change careers) the way my teacher inspired me all those long years ago.
So, should kids be taught to program? Given that computers are far more accessible than mass spectrographs or suspension bridges, and given that there's a much larger world of opportunities for making money today both inside and outside the corporate world (can you spell app store? Sure, I knew you could) I have to answer with a resounding, "Hell yeah!"