Recurse Center

Anjana Vakil: Teacher to Computational Linguist to Software Engineer, Conference Speaker, and Developer Relations Consultant

This is a continuation of our series exploring the paths that Recursers take to RC, what they do during their batch, and what happens after.

Anjana is a developer relations consultant, and also speaks at conferences regularly on different programming topics. Some of her talks include: Learning Functional Programming with JavaScript, given at JSUnconf in 2016, Tail Call Optimization: The Musical!, given at !!Con in 2019, and Programming across paradigms, given at GOTO Chicago in 2017. She came to RC in 2015, and before her batch, completed a Master’s in Computational Linguistics.

Anjana Vakil

Here is Anjana’s story:

Before RC

How did I start programming? I dabbled in a few things - I had a blogger site back in the day and I would tweak the CSS and HTML templates, and as a kid I was exposed to HyperCard. I had been exposed to programming, but I didn’t really start coding until 2010; I had just quit my job as an English foreign language teacher, and I went into the library and found an O’Reilly series of books, Head First Programming. I spent the next year playing around a little bit in Python. I decided to go to grad school for computational linguistics, and that’s where I started coding as a regular thing.

We had one official coding course in Python, and other than that, I needed to write code to fulfill class assignments and to do research. Computational linguistics is an umbrella term that basically captures anything to do with the intersection of human natural language and computing — especially using computational methods in order to carry out linguistics research, and also develop technologies based on that to build things like speech recognition systems, language models for text prediction or natural language processing. I was writing primarily Python, but also had to work with other people’s code bases in the academic field in other languages. While I was working on all of this, I found that I really enjoyed building the code that I needed to do my research almost more than I enjoyed actually doing the research.

This was the beginning of my “abandonment” of the academic realm and instead getting really interested in software development. As a baby coder, I didn’t know how things were supposed to work. Many of these academic codebases didn’t use version control, and used really impenetrable variable names, and I started developing this sense that this couldn’t be how people actually build complex software systems, so that’s where I got interested in figuring out where I could go and learn more, and luckily I found out about this magical place, the Recurse Center, and that’s where I really learned to code. I found RC through one of those serendipitous internet things that can only happen when you are not looking for it at 3am. It was like, “This is a place where people can go and follow their curiosities and help each other learn.”

As an educator, I didn’t want a top-down “bucket filling/vessel filling” approach to learning. I thought it would be good for me to spend time intensively studying and then try to embark on a career as a software developer.

I really liked the fact that RC sounded like a genuine community of learners who were excited, and that there were career placement services - that was part of the reason I decided to go to RC instead of just jumping into the waters or doing an “official” course.

I was also fortunate enough to get funding because of the grant program for underrepresented folks — otherwise I wouldn’t have been able to attend because of my financial situation at the time.

During RC

I spent a good chunk of my batch learning what a programming paradigm is, and learning in particular about functional programming. I also started learning JavaScript, which was a language I hadn’t tried out much — it seemed like a useful addition to my repertoire. I was trying to build a multiplayer Set game in the browser with JavaScript in a functional style to learn all of these things at the same time (and web sockets, because let’s throw that into the mix!) I was also filling in plenty of the computer science gaps: doing algorithms, data structures, going through the interview prep books, and was starting to really look at contributing to open source software for the first time. I also built a toy programming language, Kimi (short for Keep It Minimal), and paired with Marijn Haverbeke to implement it based on a talk by another RC Resident, Prabhakar Ragde.

Discovering functional programming and that there were different paradigms, different ways of conceiving what a program is and what a programming language is, was probably the single most important learning for my career.

After RC

After leaving RC in late 2015, I went back to Germany and practiced for interviews. I got concrete guidance that Outreachy might be a good way to get some experience under my belt, and 6 months later I ended up doing a project through Outreachy at Mozilla. At the same time, I found out about tech conferences, and was able to get into some; April of 2016 was my first speaking opportunity, which happened to be at JS Unconf. Another member of my batch, Khalid, had proposed a talk about functional programming and decided he didn’t want to do it, so I asked him if I could wing it and do it, and I gave an impromptu talk about learning functional programming in JavaScript. A few months later it was put up on YouTube and hit a chord with people.

I learned that speaking at conferences is kind of like teaching, and if you apply to speak they will send you there and put you on stage and introduce you to a bunch of amazing people! Through speaking at conferences, I got every job I’ve had.

I ended up taking a job at Mapbox after their CTO reached out to me after seeing my talk, so I moved back to SF, and we carved out an interesting role where I was working in engineering Learning and Development. I ended up deciding to go back to engineering and worked on Mapbox GLJS, an open source project in WebGL.

After I left Mapbox, I started working for Observable as a developer advocate and learned more about D3 and data visualization. In June, I quit full-time work and since have been freelancing as a developer relations consultant – helping companies start up or scale their developer relations work.

I’m in this space where I’m really passionate about education - my time and connections that I made at RC which then led me into conferencing and the open source world really stood me in incredibly fortunate stead for finding different opportunities, and now I have a pretty large network of amazing folks who I know in the community who I feel really lucky to call friends.

I can’t underline how much RC was absolutely crucial to me breaking into a notoriously difficult industry without a formal degree in the area, and without the experience of coding since I was five. RC really made my tech career happen.