How I Started Coding! (but not exactly)

Last year, I started trying to learn how to code from scratch, which is probably a common enough narrative, but until then I hadn’t ever imagined myself as someone who could work with computers. I’ve been squarely a humanities person all my life, with most of what the stereotype entails — bookish child, bad at sports, a Jane Austin themed birthday (twice, I admit it) — and I majored in English before going to graduate school for, what else, 19th century British literature. Nevertheless, last May, I wanted to see who else I could be. I wanted to learn something so completely different than anything I had ever done before.

So anyway, last May, I was determined to start learning programming, but I had a problem: as a person who had been skittish around computers, I had no conception of what coding even was. Even to begin, one has to have at least a little understanding to even know what to start learning first. For all my eagerness, I had only a vague sense of what “doing coding” involved that I had picked up from popular media. Of course, these fictional accounts reveal essentially nothing about the real processes of coding, so all I knew from these movies etc. is that there was some special place in the computer where real programmers did their coding, and some special language that they wrote their code in.

One of the things that makes programming seemingly impenetrable is that the field seems to have a completely new set of rules and vocabulary that you need to somehow already know before you can begin. Paradoxically, it almost seems like you have to already be a programmer in order to start learning how to be a programmer. Without any clear starting point, there could be no plan; before I started coding, it didn’t feel like there was any way to start at all. I was in what I might call an “ignorance loop.” I couldn’t start learning to code because I didn’t know any of the vocabulary or basic procedures…and I couldn’t learn any of these until I started learning how to code.

Then after a month or so, I was writing and running rudimentary programs. I was over the threshold. I had the procedural knowledge and vocabulary to earnestly start trying to code. But how did it happen?

XKCD — https://xkcd.com/519/

The bizarre thing is that when I sit down to explain what I did, I still can’t pin down what the tipping point was. The snappy story that I wanted to write about how I overcame the ignorance loop was not forthcoming.

Of course, the easiest explanation that I could give is that, “I just started messing around with Python a little.” You know, that answer. When I desperately wanted a straight answer about how others started coding, I hated reading the “messing around” answer in forums because it explained absolutely nothing about how the person in question learned at all. This answer makes it seem like getting started with coding is something that just happens when the right set of conditions are met, even as the vagueness of the answer elides what those conditions are. What is Python anyway? How does one learn how to make the computer do enough stuff to mess around? What qualifies as “messing around” anyway?

Despite wanting to punch everyone writing on reddit and coding blogs who said that they learned by “messing around on a computer,” I can recognize that it is an emotionally honest answer. My general sense of my first month of coding is that I was messing around, and if I only had one sentence to encapsulate the experience, this would be the best I could do. However, as the answer speaks only to a general sense, it is also much too quick to boil down the experience of learning into a quotable nugget. While the answer is honest, it is also lazy, requiring the least thought possible from the answerer. it draws on only a vague feeling that saturates the memories without inquiring after the actual experiences of learning.

The better explanation of how I began to code that I would like to give does not have the same catchiness as the easy, vague explanation. It is excruciatingly specific, and it’s not going to happen in one sentence, or even one blog post. On the other hand, it also provides more information, and as such, it may also be more helpful. Certainly while the vague explanation feels honest in that I feel like I was messing around, the specific answer is factually honest because it does not gloss over the concrete steps that I took. Nor does it gloss over the frustrations. Trying to code made me extremely angry sometimes, and I will not pretend that the learning just happened naturally, as if I found out that “the power was inside me the whole time!” Blech.

Stupid Dorothy, you were wearing the shoes the whole time!

There is no single answer or a specific threshold, that I crossed when I started learning how to program. Getting started is itself a process that had a concrete series of steps for me. The steps for getting started also have specific locations and processes that cannot be intuited from any vague recommendation to “mess around.” So the task that I’ve laid out for myself is to relate how I got started, not in one great second post, but in a series that reconstructs my memories of my earliest forays into programming. I still have a folder full of rudimentary programs from last May, when I first began, and I’ll start next week, as many others have started, with “Hello World.”