Note: This essay was written for an application to NYC’s Hacker School. They don’t require an essay, but I write essays.
When I was in middle-school, we were made to buy TI-82 calculators for Algebra. Our Math teacher quickly taught us how we could write a short program to plug in the variables for the Pythagorean theorem and the quadratic formula and quickly come out with the length of the hypotenuse or the value of x. A couple of months later, I was distributing a crude and immaturely violent role-playing game I had made, called “Criminal.” You started by mugging people, hoping no one would fight back until you had enough money to purchase a knife. If you felt daring enough, you could attempt the next difficulty of crime for cash, and increase your chances of success by procuring various firearms and accessories. The TI-82 even held up to 6 pixellated images, which I used to illustrate the different ways your character could die. Such is the focus of a 13-year-old trying to suffer through middle school.
I kept that calculator throughout high school. In freshman Biology, our teacher used a computer game as a botanical learning tool: the player controlled a flower, and had to decide whether to use its sugar to extend its roots (lest the water levels drop to where you cannot reach and you wither), to produce more leaves (to generate even more sugar assuming the sun is out), or produce more blossoms (the ultimate goal). My attention faltering, I spent Biology programming that game into my TI-82. The teacher caught me, and asked what I was doing (instead of listening to the lesson). “Nothing,” I said.
But the student next to me ratted me out. “He made that game in his calculator.”
The teacher came over and asked to see my calculator–I assumed to confiscate it. Instead, after fiddling with it for a minute, he walked over to his grade book and gave me extra credit.
But when people talked to me about programming, it sounded like the last thing I wanted to do. I didn’t really understand what it was, but whenever it was presented to me, it came across as a field of study I would never understand, for super-intelligent dorks with no personal lives (not that I had much of my own, but I was working on improving that). I was good at Math, but I wanted to do something artistic; something fun.
I went to a small, ultra-liberal college in the Northeast, where I proceeded to pursue every artistic interest offered to me. I came out of there with a B.A. in Theater and the ability to sing in German. The following years, back home in Nashville, Tennessee, were a bit frustrating, career-wise. So I moved to New York City.
Of course, setting foot in the competitive culture of The City, I realized that I didn’t care enough about theater to do it as a profession, and those that did would eat me alive. So I started working in office administration. I had a knack for MS Excel.
Years passed of agonizing over what I wanted to be when I grow up. Maybe start a business? Maybe get into political activism on a professional level? Perhaps attend rabbinical school? All the while, I worked jobs for which I had no ambition… but once in a while getting enormously excited about something like learning about the existence of the SUMPRODUCT() function in Excel and how much more dynamic my spreadsheets were going to be.
Fairly recently, a series of discoveries has opened up my eyes to who I am and what I should be doing.
1. I found out about Dwarf Fortress. It actually started out with being dissatisfied about Blizzard’s long-awaited Diablo III, and following their development logs in hopes that they would still be able to make the game what many had hoped it would be. I lost that hope eventually, but I did pick up the habit of reading dev logs, which I had never done before. Soon after, I started playing a small resource-management game, called “Towns,” still in beta, and actively followed and contributed to the forum surrounding its dev log. I found myself absorbed in finding out what fixes and additions the sole coder was able to put into the game every day–even more than I was in the game itself. It was on this forum that someone told me about an ever-developing game already over ten years in the making which I had somehow missed, called “Slaves to Armok: God of Blood Chapter II: Dwarf Fortress.” It is programmed entirely by one man: Tarn Adams. It is presented entirely in Code Page 437 (“extended-ASCII”) characters, of which I had been fond ever since the days of playing MUDs on dial-up bulletin boards. Its code had been given to the Museum of Modern Art’s permanent collection. It is impossible to win, has a deeply invested fan-base, and is detailed to the point where the generated history of any game-world is often just as engrossing as the game itself. And it changed the way I thought about programming.
Coding suddenly did not seem like such a distant and otherworldly practice. I read the dev logs, I listened to the podcasts where Tarn talks about his progress and how he’s going about coding it all… and I realized that I loved hearing about it, and it all seemed totally within my grasp. Each step of coding did not sound so different from what I used to do on my old TI-82… but I had never really thought of that as programming. I began exploring this idea.
2. I learned some basic VBA. I figured that I had already exhausted my knowledge of basic Excel, and I could learn VBA under the premise that it could help me better manage data in my current job. It was a somewhat flimsy excuse, as my job mainly involved contract processing and not a whole lot of data analysis… but the data part was the only part I enjoyed doing. Some very accessible and free websites on learning VBA are already out there, so I picked up the fundamentals very quickly. It was not so different from whatever language the TI-82 used.
In learning VBA, I also realized how friendly and cooperative the world of coding seems to be. Help forums would be filled with multiple solutions presented by experienced programmers with absolutely no other agenda that wanting to assist those still learning (and, perhaps, to show off their knowledge). This was a marked difference from just about every other profession I had explored.
3. I found out about Project Euler. Project Euler is a website with a few hundred math problems for programmers to solve, and subsequently share how they solved it. Most of the folks on it use “real” programming languages, but I wanted to see if I could do the same thing with the basic stuff I knew about Excel’s VBA functionality.
Every time I successfully solved a problem, I would literally experience the joyful thrill of accomplishment for hours afterward. It did not take long for me to realize, finally: this is what I should be doing. I should be a programmer.
There are obstacles, of course. It seems that most people in programming have this realization much earlier in life, and focus their college education toward that end. I’m in my thirties and know some VBA, which I gather is barely considered a legitimate programming language. Entry-level programming jobs also seem to merit a salary a bit less than I am accustomed to making, so I would need to advance myself relatively quickly in order to support myself and soon-to-be wife.
But the more I program, the less anything else seems to be an option. I’ve been working on a VBA chess program for the last couple of weeks, on the little free time I have on some nights and weekends… and I find myself needing to be careful not to stay up all night coding. When I’m done with my day-job, I immediately forget about the work I’ve done and the work I have to do for that job. When I stop a coding session, I can’t stop thinking about what to attack next and how to attack it.
My next step needs to be learning new languages, and I feel confident in tackling that, and in a decent amount of time. SQL and C++, I think, are going to be my first foray into broadening my abilities.
Hacker School is only for those who already know how to program, to become a better programmer–not to learn how to code. I know I’m walking that line. But based on what I know about Hacker, I am convinced not only that I meet the qualifications for acceptance, but also that I would thrive in such an environment, and that it would be the best way to become the programmer I wish to become.