Eleventh grade. My junior year of high school. On one hand, I’m really looking forward to getting out of this madhouse and its bureaucratic idiocy. On the other hand, I’m terrified of what will happen next. What if I can’t get a job with computers? People keep telling me it’s impossible to enter the field without a degree. I don’t want a degree. I want to go and do something useful. I want to write software and make stuff happen. I can’t bear the idea of more school.
I’m at a new building. In contrast to the Intermediate Building, the high school is a sprawling campus. There are huge windows everywhere, and the most expedient way to get someplace is usually by going outside. It feels more like an institution of learning and less like a dungeon. In keeping with our custom over the last four years, David and I hang out in the library in the mornings.
The new building has better facilities, and so I have more classes available to me. I try to sign up for the various computer courses being offered. They’re all far behind my skill level, but I’m not allowed to take them because I’m not in any advanced math classes. Apparently there’s just no way a student would fathom the intricacies of the BASIC programming language without first learning calculus. (Even though I’m fluent in four dialects of BASIC by this point, and I still don’t know what calculus is.) I make a halfhearted attempt to protest, but I can tell it’s useless. The people setting up these prerequisites really have no idea in the world how any of this works. They’re obviously following rules and guidelines passed down from other people, and don’t even have the knowledge to explain what BASIC is, much less why it would need to follow calculus.
Resigned, I try to get into the required math course, but the prerequisite to Calculus is Trigonometry, and the prerequisite to Trigonometry is Algebra II, which I’m about to take this year. There’s no way for me to get into the computer class. Even if I threw myself into math right now, I would finish the required math courses just in time for graduation.
The one thing that saves my high school career from disaster is the Butler Area Vocational Technical School. Vo-Tech, in the vernacular. It’s a separate school beside the high school. It serves a large area, including many other high schools. Kids are bussed great distances to attend here, but I can attend by just exiting the high school and walking twenty steps. Vo-Tech is mostly geared to low-tech or blue-collar jobs: HVAC repair, automotive repair, cosmetology, and the culinary arts. But they also offer a fully equipped computer course, and it blows away everything they have at the high school. The computer lab has proper IBM compatible machines for every student, and everyone is given liberal access to them. There’s no prerequisite for signing up, other than being in the right grade.
I attend Vo-Tech for the first two hours, and then walk back over to the high school for the rest of the school day.
For the first half of eleventh grade, our instructor is Mr. B, a cheerfully bearded old-school computer science guy. He’s a coder first, and a teacher second. This is understandable. In this time period, there just aren’t that many teachers with computer experience.
The start of the year begins with a mercifully brief introduction to computers before we’re turned loose on the machines. We learn a bit of history, a bit of vocabulary, and a bit of MS-DOS. He teaches us both BASIC and COBOL. This is now my fifth flavor of Basic, and each one is easier than the one before. The version of BASIC on this machine offers a bunch of line and pixel tools, which allows me to draw arbitrary shapes, which greatly expands the number and variety of cheap arcade knockoffs I can create.
I don’t like COBOL. COBOL is a programming language, and its name stands for COmmon Business-Oriented Language. Even the acronym is cumbersome. I see it as largely obsolete and useless. You don’t write interactive programs in COBOL, and I’m not interested in non-interactive programs. I realize that not everyone can make videogames for a living, but I don’t want to find myself in a job writing software that is – from the user’s perspective – deaf and mute.
A COBOL program is designed to do one thing. When you run it, the program pulls in some data and spews out the result. It’s good for projects like, “Scan through the customer database, find everyone with an overdue invoice, and list them in order of how much they owe us.” There are no tools for allowing the user to control how the program behaves. No graphics. No menus. No input. Nothing. It’s just a report generator. If you want a different report – maybe you only want to list invoices worth over $100 – then you have to change the source code. This offends me. In my view, a good program is one where a complete non-programmer can intuit how to use it.
I’m irritated that we spend half of our time on this obviously archaic language. I understand that BASIC is seen as a “kid’s language”, and that there aren’t many jobs for BASIC programmers, but COBOL doesn’t seem like much of an alternative. It’s a dead end. You shouldn’t need a programmer to make simple changes to a report, and you shouldn’t need two pages of source code to accomplish what BASIC can do in fifteen lines. COBOL feels like a racket to me, and the lessons seem to bear this out. All of the assignments are functionally the same program, with only a few small details changed. That might be great for keeping you gainfully employed, but it’s inelegant and it sounds like a boring way to earn a living.
I’ve heard about another language called “C”. I don’t know anything about it, but I get the impression it might be a little more “grownup” than BASIC while being less horrible and cumbersome than COBOL.
I don’t know it, but I’m now on the outskirts of the Programming Language Wars. Programmers everywhere look at the work they want to do, and choose a language that suits their task. Then they defend that language as the One True Way of getting things done. After all, if this programming language is my favorite tool, it must be the best tool. And if it’s the best tool, then everyone else should stop using those inferior tools. Now that I know more than one language, I’m joining the debate. This is a big step for me.
My assignments take a trivial amount of time. I spend the rest of the class making games or helping other students when they ask. By helping, I am able to see the discipline of programming through the eyes of people who are new to it. Through this, I am able to perceive a clear dividing line through the students. Just about everyone is passing, but not everyone is “getting it”. Some people are able to recite the correct answer to a problem, but they do this only because they were told it’s the right answer. They don’t know why it’s right and they can’t use that knowledge to solve other problems. They can take the example program given in lecture and change a couple of lines to complete the assignment, but they are completely unable to improvise. They can’t create anything new. They can’t follow the flow of a program by looking at the source. They can’t predict what values a variable will have at any arbitrary point in the execution. In short, they can’t write code. As the year goes on, this distinction does not go away. These kids are otherwise smart and good students, but the art of programming is lost on them.
|Me, playing a game with Ruthie and Daniel.|
“Here”, Kris says, handing me a valentine as she passes by on the way to her seat. She usually sits in the back of the bus with her sister. I usually sit a few seats up, with David.
I smile. Nobody has given me a valentine before. I’m suddenly very nervous. We talk sometimes on the way to school. She’s smart, friendly, and attractive, which has resulted in me having a very predictable crush on her, which until now I have assumed was unrequited. I look down at the valentine and wonder what it means. Maybe… maybe the crush is mutual? Although, maybe she’s just being nice? Maybe she just, like, brought one of these for all of her friends? Maybe she’s just sort of thanking me for being her friend on the bus in the mornings? It’s so hard to tell. I stammer out some thanks, but I don’t follow up.
I explain the situation to each of my friends, and they all come to the same conclusion: I am an idiot.
I’ve had a few girlfriends over the last few years. These were simple, fleeting arrangements with distant girls. Often these took place during summer camp, and they began and ended with tame kissing. Now I’m seventeen, and dating is a little more complicated. It comes with the expectation of going out on dates and spending time together outside of school. I don’t know it, but I’m actually not ready to have a “real” relationship yet. I want that sort of relationship, but I’m still a bit underdeveloped socially. I’m not even sure what would be expected of me on a date. Moreover, I don’t drive. I spend all my free time programming at home, so I’ve never had a use for a driver’s license before now. How can I ask her out without implicitly bumming a ride at the same time?
I hang onto the valentine, but I never ask her out. Next year I’ll finally get up the nerve to begin dating.
A video discussing Megatexture technology. Why we needed it, what it was supposed to do, and why it maybe didn't totally work.
The product of fandom run unchecked, this novel began as a short story and grew into something of a cult hit.
Why I Hated Resident Evil 4
Ever wonder how seemingly sane people can hate popular games? It can happen!
Gamers Aren’t Toxic
This is a horrible narrative that undermines the hobby through crass stereotypes. The hobby is vast, gamers come from all walks of life, and you shouldn't judge ANY group by its worst members.
Another PC Golden Age?
Is it real? Is PC gaming returning to its former glory? Sort of. It's complicated.