How learning Latin made me a better programmer

Anyone who knows me understands that Latin is the center of my life — I’m not like Giles, who only delves into the ancient tomes when Buffy needs something — it’s become the primary language of my personal and social life. For the first part of my career, it was also my job. Now, however, I teach at the Flatiron School, where we use Ruby and JavaScript to prepare students to become web developers. As a result of this switch, I’ve ended up with a professional network polarized between “computer people” and “language people,” which has me thinking about the relationship between these two kinds of disciplines and how I came to be able to program through my ostensively unrelated background.

Now, I should say that throughout my entire Latin career I was also actively working with computers. My first Latin class came the same year that I started learning C and switched all my home machines over to Linux (I use Arch BTW). Back then, though, I wasn’t really learning Latin — I was just taking translation courses. To give a little background, most Latin courses today focus on teaching students to describe Latin in a formal grammatical way. You chant verbs charts, draw sentence trees, and learn to systematically generate translations in your head. It’s an approach that anyone with a background in modern languages would see as archaic and one which prepares you to cope with not knowing the language of a text, rather than to engage with a text directly.

At the time, though, I didn’t know that there was any better way to go about learning. Even after four years of college Latin, I was frustrated that I couldn’t read without translating, but I thought if I just chanted enough verb endings — explained enough subjunctives — eventually I’d know the language well enough to read. Again, anyone with experience in the modern languages knows that I was just wasting my time. It wasn’t until the summer after undergrad that I made my first real breakthrough by signing up to go to my first of many Rusticationes (a week long event in West Virginia where we all agree to only speak in Latin). That summer was the first time I ever met anyone who really knew Latin, and that was the encounter that made me realize how little I had learned in the eight years prior. It was both a humbling and inspiring experience and one which shaped my entire approach to learning.

You see, what I had failed to understand at the beginning of my academic life was ultimately a fairly simple principle, that knowing facts doesn’t necessarily lead to having skills. Before going to Rusticatio, I had learned a lot of facts about Latin and had failed to acquire any skills with Latin. I was like someone who thought that if he could just memorize all the rules of baseball he could get into the MLB. When push came to shove, facts and skills were just two different kinds of things — two different kinds of learning — and it was time for me change my approach.

By an incredible stroke of luck, I happened to live in the same neighborhood as one of the organizers of the immersion program and other lived just an hour away. I was able to hang out with them casually, pick their brains, and just observe their learning styles. Looking back, I feel like that is when I really started to progress — when I started reflecting critically on my own learning process and look to more experienced speakers for advice. At the end of the day, I acquired more skills and a deeper understanding of the language from spending time with these people on the weekends than I did in my entire M.A. program.

I was beginning to discover something that is probably obvious to most people — that if you want to learn to do something, you’ve just got to practice. In the language world, the technical jargon for this is “Comprehensible Input.” Modern language teachers have known for a while that, if you want students to understand a language, they need to see the language actually being used. Formal grammatical knowledge might help, but it can never replace legitimate experience speaking. This is as true for a dead language like Latin as it is for any other with one key difference: the availability of communicative experiences is far more limited.

Because it’s so hard to find people to speak Latin with — and because chatting with people IRL is the only way to acquire genuine proficiency — people wanting to learn have to be very efficient with the opportunities they do have. We need to figure out how to systematically and critically approach a natural learning process. Consequently, the best Latinists of our day are also some of the best learners — not necessary because they have a natural ability to learn, but because they have formalized their approach to learning in order to go about it efficiently.

At this point, these ideas are probably sounding more familiar to anyone working with computers. We’ve all been there: you spend a while reading tutorials and docs for some programming language or framework you want to know. After a while, you’re comfortable with the facts, but it still feels a little wobbly in your mind, so you just start a project. You move slowly at first, but then start to pick up speed and get into a good workflow. Then, after actively engaging with the computer, you start to internalize a new skill. That’s what programming is about: skills. Just like with natural languages, facts only mater insofar as they help you develop the skills to be more productive.

The availability of coding experiences is not limited in the same way that conversational Latin is — but there’s still and urgent need for the same efficient learning. The field changes in quick and unpredictable ways. I don’t just mean that the tools and the languages are always in flux; I mean that the fundamental ideas are. It’s one thing to switch from writing in C to Java and another to go from imperative to object orient design. Those kind of ideas are difficult to internalize in a real way, but being able to adopt new ways of thinking quickly is the fundamental talent of being a long-term productive developer.

So ultimate, because both software development and natural language fluency are skills and not primary based in factual knowledge, they are learned the same way: by actively trying out what you hope to learn, by listening to feedback from others, and by watching people with more experience. These are the most important things for any programmer to be able to do and I happened to learn them speaking Latin with my friends over at SALVI.