Recurse Center

RC Down Under: A day in the life of Sam Uong

Sydney Lefevre

How do you participate in RC when you’re in Australia? It’s not easy, and different Recursers have taken different approaches to it. Sam Uong lives in Melbourne and started his batch at RC in January. We spoke about halfway through his batch about what he’s working on, and how he’s shaped his days to collaborate with other Recursers as much as possible.

(as told to Sydney by Sam)

2:45 am: Before I joined RC, I committed to being awake during core hours, which start at 11am New York time. That’s 3am here in Melbourne, so I have my alarm set for 2:45 every day. I quickly get ready – wash up, brush my teeth, make a coffee, and try to be at my desk at 3.

The first week was pretty rough — it’s like flying to another city and having jet lag, except I’m at home. My approach to travel is to immediately switch to the local timezone and stick to it, so that’s what I did here, but it took somewhere about two weeks to fully adjust. Another Australian Recurser told me he had the same experience.

3:00 am: It’s still a bit too early to head right into coding, but there are a lot of messages on Zulip to catch up with. I read through everything, and I’ll ping whoever I’ve been matched up with for coffee chats and for pairing. That’s the first couple of messages I’ll send to get organized for the day.

It’s really useful to share what you’re doing with people. I try to make everyone aware of what I’m working on during daily check ins, pairing sessions with other Recursers, and through presentations and other meetings. When I have presented to others (which admittedly I don’t do often enough) I get people come to me afterwards to learn more about what I’m doing, and this also gives them some extra context for pair programming.

3:30 am: For the next hour I work on writing an assembler, which is a program that translates a list of human-readable text instructions into binary machine language that can be executed on a CPU. I just started working on this yesterday, and it’s one part of a compiler toolchain that I’m writing for “nand2tetris”, which is a project to build a functioning computer (that can run a game like Tetris) from the ground up (from NAND logic gates).

4:30 am: I have a coffee chat at 4:30. This is something that is organized automatically by the chat bot, which randomly pairs me up with other Recursers. I’ve been doing coffee chats every day since my first week, and it’s a great way to meet people and get a sense of what they’re working on and what their interests are. Today I met another person in my batch, and we talked about the game engine that he’s writing in C++.

5:30 am: Time for breakfast. Today I’m having soaked oats with blueberries and a mix of nuts and seeds – and another coffee.

6:00 am: Today is one of the more meeting-heavy days of the week, and the next meeting is with a group of other Recursers who are learning Rust. This is the programming language that I’m using for my main projects – both the assembler that I mentioned earlier, as well as a language server that I’m building for a language called Octave (the Language Server Protocol is what allows code editors like VSCode or Vim to do things like jump between functions or perform auto-completion).

This is a fairly unstructured session, and people come to show what they’ve built using Rust, share what they’ve learned, or ask questions. Today we took a look at the various string types in Rust, benchmarked the performance of each of them, and also did some experiments to measure how much overhead would be incurred with a copy-on-write string. I also had a question around some advice about efficiency in the Rust documentation, and after some benchmarking and investigation we found out that this was due to a bug in the documentation! (A pull request to fix this was sent later.)

7:00 am: For the next hour, I pair with another Recurser on a Linux kernel module. We’d spent a bit of time the other day figuring out the kernel’s build system, and during this session we’re writing some code to inspect the kernel’s page table entries. One of the things I really enjoy about RC is being able to scratch the surface of the software we use every day, and see how things are implemented underneath. I learned a lot about how page table lookups happen, and how virtual memory addresses are mapped to physical memory.

8:00 am: The last meeting of the day on Friday is the weekly presentations, where people come to demo what they’ve been working on. I had just done a presentation for my language server project a few days ago, so today I’m just going to see what others are working on.

9:00 am: 9am in Melbourne is 5pm in New York, and this is when people in US Eastern Time start to drop off. So this is usually around the time that my day shifts away from group collaboration towards doing my own thing. Today I’m working on my Octave language server for the rest of the morning.

Before I started my batch, I tried to pick a single project to focus on: this language server. But one thing that surprised me after I joined was the breadth of things to work on and learn! I’ve ended up spending time on nand2tetris, machine learning (mostly learning about Stable Diffusion and other generative AI), frontend web development, and a bit of kernel hacking. I try to be careful with how much time I dedicate to each of these areas, so there are a number of things that I’ve decided to put away and pick up again some time after I finish up my batch.

The other thing that really surprised me is the number of alums who stay engaged with the RC community after their batch is complete. In my first week, I was paired with people who did RC a year ago, and it’s incredible to have that community be an ongoing thing.

11:30 am: My wife and I go out for brunch at a local cafe, before heading off to the beach. It’s summer in the southern hemisphere at the moment and it’s going to be a warm day – about 30C/90F, so perfect beach weather. The beaches in Melbourne are inside Port Phillip Bay so it’s very calm, not huge waves. The ocean beaches are about an hour’s drive away, but the local beaches are a nice place to relax and go for a swim.

Port Phillip Bay in Melbourne

7:00 pm: It’s about 8 hours before I have to wake up again, so it’s time for bed! The sun won’t set for more than another hour, but luckily I’ve got really good curtains in my bedroom to block out the light.

The time difference has obviously been difficult, and it’s taken some effort to manage my time and stay focused. Another challenge that I’ve had is that I haven’t really been coding day-to-day for most of the last 5 or 6 years. I studied computer science at uni and worked professionally as a software engineer for a number of years, but like a lot of people I moved into more of a Tech Lead role and then into a management role. So I’m a little rusty and there are things that I haven’t kept up with, such as advances in distributed systems and machine learning, as well as languages like Rust that have recently gained in popularity.

RC has been a great way to get back up-to-speed on a lot of that. I’ve taken three months off of work to attend, so this gives me the time to focus that I didn’t have while I was busy with my day job. And it’s given me access to a lot of very talented people who have a lot of knowledge in these areas, and are motivated to keep developing as programmers, which I think is incredibly valuable.

Patricia in Paris: A day in the life of a Recurser

How do I participate in RC from a non-American timezone? This is a really common question, and the answer is: everyone approaches it a little differently. Patricia Boh lives in Paris and finished her batch at RC in early February 2023. Patricia had been working as a programmer for over a decade when she came to RC as part of a sabbatical to work on a UI component library. She spoke with me about what her typical days were like, how she used the structure of RC to support her goals, and her advice if you’re thinking of applying.

(as told to Sydney by Patricia)

7:30 am: I live in a noisy neighborhood, and the sun hits my face in the morning – and I like the sun! – so I naturally wake up early. RC activities start at the end of the afternoon for me, so mornings are a good time in my day to do solo coding.

Going into my batch, I had one big project in mind with a clear idea of where I wanted to go with it, so I focused heads down on that in the mornings.

8:30 am: I’m at my desk by 8:30 or 9, where I have coffee and check my emails. On Mondays I’ll use the morning as a focused time to read through people’s experiences, blogs, and check-ins on Zulip. Zulip (the open source chat system RC uses) has a lot of interesting content so I like to set aside time for it.

There are a lot of different projects going on at RC. Some people do very short, quick projects, and if I were to do another batch of RC I might do more small projects than I did during this batch. However, I did see other people who were hacking at one big project. Seeing other people doing that long-term work or getting one thing to a polished state was very motivating.

10:30 am: Around 10:30 I get hungry. In France, butter and ham baguette sandwiches are a staple snack, so I’ll have that or cream cheese on toast. And more coffee!

2:00 pm: At 2pm I go to UTC+-friendly check-ins. These were very important for me throughout my whole batch, and I rarely missed them. There were between 2 and 8 people who attended regularly. The Eastern time zone check-in group tends to be much bigger, so they do breakout rooms to talk. This means that you speak to different groups every day, whereas at UTC check-ins we talk in roughly the same group throughout the batch.

Either right before or right after check-ins, I have lunch. I prefer home cooking, but there are a lot of Indian restaurants nearby and so sometimes I’ll go pick up a meal which usually lasts me a couple of days. Some of my favorites are bonda, which are potato and spinach balls, dal soup, and rose lassis.

2:30 pm: I tend to go out after check-ins. RC’s Eastern Time activities start around 5pm for me, so if there’s anything else I need to do during the day I do it before then. I make myself leave the house; otherwise it’s easy for me to remain indoors, since I’m not going to work or school. It’s important that I get out in the fresh air and see people, and then get ready for the buzz of RC’s core hours starting on Zoom and in the Virtual RC space.

4:00 pm: In the afternoon, I did more social activities, like coffee chats, pairing, and attending various group meetings: Rust and Rainbows, WebGL study group, and a women’s group about tracking our cycles. Although in some groups we prepared by reading or doing exercises, these self-directed studies weren’t loaded with the performance implications of typical homework. Focusing on group topics on the days the group met helped me get into the right mindset before attending each meeting.

The flexibility to join or leave groups mid-batch was precious. I did a lot of chatting and groups in the first few weeks and this diminished a little later on as I got deeper into my project, but I tried to do at least two pairing sessions and two coffee chats every week.

I paired a lot with another Recurser named Caleb on a hardware project. I’m a total beginner on this but he’s really experienced. I was programming a small computer on my side, and he was in Australia on the other side of the planet! We made a small LED rainbow together! It’s a basic thing to do, but was exciting to me because I was totally new to it. That was part of the great pleasure: to be totally new to something and to have mentors and people who can help with it. When we’d pair around 4-5 pm my time, it was very late for him – like midnight or 1am! He switched his whole life around to do RC.

5:30 pm - 9:00 pm: The Recursers joining from the US usually eat lunch after the Eastern Time check-ins, so I’d take that opportunity to get my dinner ready. Then I’d chat with people around 7-8pm my time, and eat dinner after that.

My ideal time to pair is before 8 at night because after that I get too tired. It’s better to have enough energy for pairing since you’re with another person. I think there was once I tried to pair when I was really tired, and it wasn’t as good of an experience.

I hadn’t paired that much before I came to RC, so I struggled with my first pairing session. At work, I had developed a habit of defending my work — “defend” is the best word I can think of – and I didn’t have to do that at RC. People at work can be well-meaning, but at RC all the pressure goes away. It doesn’t have to be perfect, and we’re not trying to deliver something for a client, so the context is really different. That switch wasn’t immediate for me, and it took me a little while to adjust. I had to not be the driver at first. I saw how other people were so calm about pairing — there were other Recursers who were such natural pair programmers – and I learned a lot from them. I feel a lot more comfortable with pair programming now than I did at the beginning of the batch.

10:00 pm: One of the most compelling parts of the week is Friday presentations, since almost everyone attends. They’re from 10 - 11pm at night for me, but because it’s Friday, I still have some time to go out with my friends afterwards. The biggest shift for me is that because I was busy with RC in the evenings, my outside social life was pretty non-existent. Saturdays and Sundays were more or less the only days that I would go out.

I usually log off around 10pm every day. I almost always read in bed — I think it’s good when you leave your computer to read things on paper. I tend to read fiction, although since 2020 I’ve been reading more non-fiction related to the Black Lives Matter movement. Lately I’ve been reading How to be an Anti-Racist and The Color of Law.

There were times, especially towards the last weeks of the batch, where I wouldn’t get to sleep until 2 o’clock in the morning because I wanted to get so many things done. I don’t recommend that!

I do recommend taking advantage of all the resources RC has to offer. The retreat is self-directed, but you’re not just left alone. In the third or fourth week of the batch I hadn’t been feeling very well, and I would see what everyone else was posting about what they’d accomplished. I had to remember to be kind to myself — the facilitators reminded me to be kind to myself and not to put undue pressure on myself but instead to keep working to the best of my abilities.

If you’re thinking of applying, do it — it’s worth it! My advice is to be open to and take an interest in what other people are doing. You’re going to be working on your projects, but you’re going to be in the company of interesting people with interesting ideas and you have everything to gain from being open to or at least curious about that.

You can do more than you think: Practical principles for self-directed growth

Mai Schwartz

Our mission at the Recurse Center is to transform lives by helping people direct themselves. Becoming a better programmer is the shared purpose that structures the retreat at RC, but the idea of self-direction is broadly applicable to many pursuits in life. It’s about where your motivations come from: directing yourself means doing things that are motivated by your joy and curiosity, instead of by external pressures and fear.

It’s also really hard to do. Most of us have years of conditioning through school and work to ignore our intrinsic motivations in order to meet the expectations of others, and flipping this switch takes time and effort. A year ago, we introduced a set of guiding principles to help people with this process. They’re called the self-directives and they’re meant to help everyone who comes to RC learn a lot, build meaningful relationships, and have a transformative experience. They are:

  • Work at the edge of your abilities
  • Build your volitional muscles
  • Learn generously

This post is going to share a bit about where the self-directives came from and why, how they’ve become integrated into the retreat, their impact on RC, and some suggestions for how to put them into practice even if you’re not a programmer!

Why self-direction?

RC is built around self-direction because we believe it’s effective. When you have the freedom to explore things you’re interested in, and to explore them in the ways that make sense to you, you learn them more deeply and retain them for longer. When someone forces you to learn something that you’re not interested in, it doesn’t stick nearly as well.

More importantly, self-direction is life-affirming. When you pursue things you care about and are genuinely interested in, your work will be meaningful, fulfilling, and sometimes even transformative. And when you do meaningful work that comes from listening to and acting on your inner motivations, you start to expand your sense of possibility: of what choices are available for you to make, of what you can accomplish, and of who you can become. Often, you open up this sense of possibility for others around you too.

At RC, the shared goal of getting better at programming means that people can work together and share knowledge directly, but you could apply these principles to anything you want to do to learn and grow. Even if you’re working on your own, there are many ways for you to work at the edge of your abilities, build your volitional muscles, and learn generously.

Creating the self-directives

One of our main priorities for 2022 was to improve the quality of the retreat. Our goal was easy to state and hard in every other way: to make it so every person who comes to RC has a transformative experience.

Some percentage of people have always had life-changing experiences at RC, which we know because they tell us – either directly or in public-facing content like blogs, YouTube videos, and social media (here are just a few recent examples). We wanted to increase that percentage to 100%. Obviously, that’s ambitious. If it’s possible, it’s not exactly knowable, and certainly not on a definite time frame (for one thing, because the true value of an experience isn’t always clear until years later). But we felt confident that with some work we could dramatically increase the chances of people having transformative experiences at RC.

To do that, we looked at Recursers who by their own accounts had the most transformative experiences during their retreats. Though success at RC looks different for everyone, we looked for common threads in what those Recursers did: not the specific projects they worked on, but how they approached their batches, the challenges they confronted, and, most importantly, the strategies they used to move through those struggles. Because the retreat has always been self-directed and community driven, what we tried to do is crystallize as succinctly and evocatively as possible ideas that were already implicit at RC.

Fun fact

‘Work at the edge of your abilities’ was inspired by my experience powerlifting using RPE, or rate of perceived exertion. It’s a way of subjectively measuring the intensity of the work you’re doing (for example, a weight that felt easy last week might feel hard this week if you haven’t slept or eaten as well). Importantly, it requires you to really listen to your body and learn to accurately assess your own capacity, both when to dial back and when to reach for more. We thought this was a generative metaphor for intellectual and creative work as well: on a low day, it’s better to do what you can than to beat yourself up for failing to meet some hypothetical level of productivity that was never actually in reach, and on good days you can push yourself and really get to know the difference between what is impossible and what is just really, really hard.

We felt that we’d know the self-directives were a success if and when Recursers started reflecting them back to us. That happened almost immediately, which was surprising; people started incorporating reflections on how well they were practicing the self-directives into their check-ins, and booked office hours with us to talk about how to do them more. Today the self-directives feel like an organic and inevitable part of RC, but if they feel like they’ve always been there, it’s because they were. They resonate with Recursers because we drew them out of RC. We just named them, and have put a lot of work over the past year into weaving them into the retreat in ways that will help people put them into practice.

Fun fact

We weren’t that happy with the phrase ‘build your volitional muscles.’ We thought it was less intuitive than ‘work at the edge of your abilities’ and less evocative than ‘learn generously.’ We wanted to capture something like Marie Kondo’s ‘spark joy,’ but after trying on a bunch of alternatives (‘swol mind,’ anyone?), we decided to put a pin in it while we kept thinking. We’re still thinking but it seems to have stuck! The original inspiration for the phrase ‘build your volitional muscles’ was a post by RC alum Michael Nielsen, where he describes this as a process of ‘growing one’s sense of choice, and of responsibility for choice.’

Integrating the self-directives into the retreat

Once we settled on those three self-directives, we had to figure out how to integrate them into the day-to-day experience of RC. We wanted to avoid falling into the trap of trying to codify culture, where principles – no matter how genuinely held – in practice end up as little more than posters on the wall.

The first changes we made were to admissions and on-boarding, because those are unique opportunities we have to prime people’s expectations before they even come through the door (or Zoom room). We changed one of our admissions criteria from ’wants to get dramatically better’ to ‘ready to work at the edge of their abilities’ and had generative feedback sessions with our alumni interviewers about what that means and how to evaluate it in interviews.

We rewrote our welcome talks for the first day of the batch to focus on the self-directives, and then redesigned the whole on-boarding process to help Recursers start putting them into practice right away. We now host events in each of the first three weeks of the batch to support this goal: a pairing workshop, a building your volitional muscles reflection event aimed at prioritizing projects based on your intrinsic motivations, and an Impossible Stuff Day, where the idea is to find the edge of your abilities by grossly overshooting it.

But we also wanted to help people with the challenges that come up later in the retreat, when the first week shine has worn off and they’re facing deeper challenges in their work. Over the summer, one of our goals was to come up with a list of concrete practices we could recommend to any Recurser to help them do the self-directives. At that point, one could still reasonably read our material about the self-directives and think, yes, I’d like to do that, but how? We wanted to identify things people could decide to do on any given day at RC that would move them in that direction.

We’ve always strongly recommended pair programming, and we wanted other concrete activities we could recommend with the level of confidence we’ve gained from a decade of witnessing the impact of pairing. To do that, we looked at data we already had (for example, time spent in the RC Zoom rooms that are dedicated to pairing) and interviewed Recursers about what did and didn’t work for them in their batches. The recommendations we came up with were:

  • Choose a public accountability mechanism and commit to it.
  • Do one challenging thing, then do another.
  • Create the context you need to do good work.
  • Say no to something.

As you can tell, none of these is specific to programming. If the self-directives are a distillation of the educational philosophy of RC, these recommendations are more concrete but they still require self-direction to work. They’re ‘universal’ in the sense that each person has to figure out how to practice them in their own way, in service of their particular goals, at whatever level of experience they currently have.

Your public accountability mechanism could be a blog, a group you check in with IRL or online, or just regularly talking to a friend about what you’re working on. The context you need to do good work could be a dedicated workspace, a more comfortable chair, one extra afternoon of childcare per week. Reflect on what’s been instrumental to your growth in the past and what you need right now, and then experiment with different approaches. This will naturally shift over time, so it’s helpful to check in with yourself regularly as your goals and needs change.

Fun fact

Another thing we did over the summer is give ourselves a taste of our own medicine by each doing a retreat week and trying a couple of the recommendations we came up with to see how they impacted our experiences. Every RC faculty working on the retreat at that time participated: Rachel practiced oil painting, James composed electronic music, Dave made programming sketches, and I made a pair of shorts, my first time sewing a real garment.

I was so anxious to finish the shorts during that week that I found myself getting to work early and staying late, even though I kept reminding myself that the point was to learn and I could always complete them after the retreat week was over. This is something I often say to Recursers who are stressing about getting their projects to some final, presentable state. While I stand by the value of not holding yourself to arbitrary deadlines, I felt that I learned something new about the emotional experience of really wanting to do a specific thing and struggling to catch your abilities up to your vision.

oil painting of clouds by Rachel Petacat paginated UI with color gradient by Dave Albert turquoise linen shorts by Mai Schwartz

We later discovered that the three self-directives align with the three basic psychological needs described by self-determination theory: autonomy (build your volitional muscles), competence (work at the edge of your abilities), and relatedness (learn generously). These principles help us have deeper conversations with Recursers from the very beginning of their time in batch, because we now have a shared vocabulary for the bigger questions and struggles that people confront at RC.

These are questions and struggles that people face in many areas of their lives, and there’s something powerful about naming that explicitly, in a space where everyone is actively working to do this and to support each other in it as well. There’s a momentum that’s created by people trusting their own ideas enough to give them the time and energy they need to develop, being vulnerable and taking risks in their work without the expectation of being ‘productive’ in the traditional sense.

It can also be incredibly challenging, and the self-directives are meant to help you face these challenges with a little more depth than an injunction to knuckle down and write more lines of code. They’re not a rubric or a checklist, and no one can do them for you. We’re still learning about how to put these principles into practice, as an institution and as individuals, and the past year has been a rich one for experimenting together. We hope these reflections can be useful to you in the areas of your life where you feel that desire to learn and grow!

Surprise and self-discovery: Victoria and Jordan’s sabbaticals at RC

Sydney Lefevre

Having established that you don’t need to abscond to a faraway beach to take a break to explore your interests, you might wonder: Who really comes to RC on a sabbatical? What do they do when they’re here? And, what happens after: how do you keep growing when you already have years of experience under your belt? I spoke with two alums who came to RC for a professional break about what they wanted out of RC, how their batch actually unfolded, and the impact it’s had on their lives since then.

Applying to RC: How it started

Victoria Kirst came to RC in 2017. She‘d been teaching at Stanford after working as an engineer at Google for a few years, and she wasn’t sure if she wanted to keep teaching or go back to programming full-time. The school year kept her too busy to take time to think and explore her options, so her summer break was an opportunity to step back and reflect. When she applied to RC, she wrote:

“I would love to spend my summer learning and growing as a programmer. I love coding and building things, but in the past, I’ve limited the scope of my projects (outside of work) to simple projects that I can code quickly. This summer, I’d love to tackle something more ambitious using tech I’ve never used before. The Recurse Center seems like an ideal environment in which I could push myself to create cool things and stretch my technical skills.”

Jordan Killpack came to RC in early 2022. At the time, she was working as a Staff Engineer at Mailchimp and was feeling adrift. She knew she wanted to have a bigger impact at work, which didn’t seem feasible after Mailchimp was acquired by a much larger company. After taking a couple of months off on her own, she realized she needed more structure. She’d heard about RC through her network, but it never made sense to uproot her life to move to New York for three months. Since RC started offering remote batches, she said, “the stars aligned for me.” In her application, she explained:

“I want to rekindle my love of programming. My most recent job involved a massive, creaky code base that struck fear in the hearts of many of my coworkers. Working on it greatly sapped my enthusiasm. (That said, I did find joy in solving mysteries in the code base– What is this doing? How long has it been doing that? Did we mean for it do this at all?– and in deleting vast swaths of superstitious code.)
I want to take some time to learn things just for the heck of it, in ways I can’t when I have a problem someone’s paying me to solve. I think the combination of this and being around other ravenously curious people will help reignite my spark.

Coming to RC: Space to explore your interests

I caught up with Victoria and Jordan recently to chat about how their time at RC impacted their lives. They walked me through what they did during their batches, and what they learned from the experience.

When Jordan came to RC, she thought she might work with Elixir, and “had some ideas about doing things to facilitate whatever vague career move I wanted to make.” But she said she changed direction quickly. “The first week, the faculty were like, ‘do what is exciting to you instead of what you think you should be doing!’”

Jordan took this advice to heart and applied it over the course of her time at RC. “I started by trying to connect other interests I had that were not related to computers — for example, I thought it would be cool to make a tool to help me plan weaving projects. I dropped that pretty quickly when it became more of a design problem than a technology problem and it felt like I’d gotten as much juice as I wanted out of that.”

She worked on security hacking challenges, which felt like fun puzzles, and later built an operating system in Rust since she didn’t have experience with operating systems and wanted to tackle a meaty project. Everything she worked on was new to her, and none of it was what she expected to do coming in.

Victoria also found RC to be a time of surprise and self-discovery. She said she had a “classic” RC experience: “I did have something specific in mind and then completely changed what I actually did. Originally I thought I should learn about machine learning and AI. But one of the things I got the most out of at RC is that when I was in that space of choosing what I wanted to do, I found myself being drawn to very different things.” During her batch, Victoria ended up exploring generative art and building a multiplayer game, which helped her learn more about real-time communication and exposed her to technologies she hadn’t used before.

In addition to new technical challenges, Victoria shared that “the entire summer was a surprise. With more space, a lot of things became clear. I assumed that I wasn’t that interested in building stuff when I became a teacher, but at RC I realized it was other factors that had gotten me super down. Microaggressions and sexism affected me and made me think I didn’t like the field. But, in a supportive environment where I was able to build things that were fulfilling to me, I realized I really loved building stuff in a really wonderful way.

After RC: How it’s going

The time and space to follow their interests at RC and make decisions about their own work further empowered Victoria and Jordan to make positive changes in their careers. After their batches, both of them found new jobs: Jordan joined a much smaller company where she could have the impact she wanted, and Victoria left her job at Stanford to return to software engineering full-time.

Victoria said, “I’d done so much reflection in a supportive environment. I didn’t know I needed it, and I didn’t realize this environment would be so conducive to that.” She realized something at RC that has helped her build her career with more intention. “One of the main theses that I have is that I care a lot about what I’m doing and why. If I am in an environment or project that’s not a fit for me, that hugely affects my happiness. My career arc has been an iterative process of trying to find what I want to do with my career, life, and technology.

Since her time at RC, she’s worked at Google on a virtual reality project and in a leadership role at Glitch, and she now works at The Browser Company as an engineer. She decided to shift to an IC role because “in some ways, I wanted an ‘RC moment’ to take a step back again and try working on something engaging while also giving myself space to do self-discovery and make time for creative outlets.”

Jordan took a job at Oso, an authorization-as-a-service platform. She said that her time at RC helped her think about the kind of role and environment she wanted to be in next. “Paying attention to what it is that you want, versus what you think you should want — or what somebody else wants you to do — led me to the company I’m working for now. Upon reflection, I wanted a place that was small, where I could have a big direct impact and get my hands dirty doing a bunch of different kinds of things. And that’s definitely been the case. Remembering that I have agency in the world was a big takeaway from RC.”

Victoria and Jordan came to RC years apart, but walked away with something similar: a renewed and powerful sense of agency. Giving yourself the space the follow your curiosity and investigate the how and why of your work can positively impact every aspect of your life.

Thank you to both Victoria and Jordan for taking the time to share their experiences! If you enjoyed reading about their journeys, and want to take some time at RC to explore your own interests, I hope you consider applying to one of our upcoming batches.

Sabbaticals for the rest of us

Mai Schwartz

The word “sabbatical” often evokes either a professor deep in a distant dusty archive or someone relaxing on a beautiful beach. But while in theory you could throw your phone in the trash, get bangs, and move to Bali, most of us can’t just walk away from our lives. Dropping everything to do self-exploration isn’t realistic, affordable, or even attractive to most people, but you don’t need to sever ties or renounce society to take a sabbatical. You don’t even necessarily have to leave your house.

A sabbatical is really just a period of time you set aside to explore new ideas without being beholden to a specific outcome. It’s not a vacation or a cure for burnout (although it can help you clarify why you’re burned out), and you don’t need to have an existential crisis to qualify. Maybe you’ve maxed out the learning and growing you can do at your job, or maybe a side project is outgrowing the free time you have for it. Maybe you lost your job in a reorg or layoff, and you’re not quite ready to look for another one. A sabbatical can be a time to explore at your own pace and think about what you’d like to do going forward.

This post is about how to think through whether a sabbatical is right for you, when you should take one, and what taking your sabbatical at RC can offer you.

To state our biases upfront: we think that anyone can benefit from a sabbatical and that if you’re a programmer RC is a particularly good place to do it.

Why would you take a sabbatical?

You might associate sabbaticals with tenured professors or senior executives, but anyone can take one and there’s no minimum level of experience or salary at which you suddenly deserve it. You also don’t need to have a world-changing idea. A sabbatical is a chance for you take the time for yourself to explore what’s fun and interesting to you. Give yourself permission to follow your curiosity, even if it’s not clear where it will lead.

Taking a break from paid work to take a sabbatical may seem like a luxury, but it’s actually an investment: in yourself and your knowledge and skills, and also in your very capacity to learn on your own. At RC, we call your ability to direct yourself your volitional muscles and we think growing them is one of the most valuable things you can do.

Building your volitional muscles means following your own intrinsic motivations, rather than external pressures or fears. It means doing the work that excites you, rather than the work you must force yourself to do. It means asking yourself what do I really want to do? and then doing that. Making those decisions for yourself is a skill that gets easier with practice.

Taking a break to do this kind of intentional reflection is valuable not just for programming, but also for thinking about your life more broadly. A sabbatical can help you rediscover what you deeply care about, independent of what your family, financial necessity, or society at large might pressure you to do. A sabbatical can expand your idea of what’s possible and of what choices are in your power to make.

When and how should you take a sabbatical?

You can take a sabbatical wherever you are, whenever you’re ready. Maybe you’re an IC with a passion project, or a manager who wants to dive back into the nitty gritty. Maybe your job has sapped your enthusiasm, and you’re ready to reignite your love of programming and learn things that no one wants to pay you for. It might be time to take a sabbatical if:

  • you’ve taken advantage of all the opportunities to learn and grow in your current role, and you’re still hungry for more challenges
  • you want to write software where the architecture, language, tradeoffs, and more are determined by your curiosity, not their business value
  • you want to learn or build things for the fun of it
  • you have a side project you’re so excited about that it keeps taking up more of your time and attention, and your loved ones have been complaining that you spend too much of your spare time programming…

There’s no one way to take a sabbatical. Logistical considerations vary a lot and are addressed in our FAQ and User’s Manual. If you’re ready to take a sabbatical but you’re not sure what exactly your sabbatical should look like, that’s okay! Start thinking about something you’re interested in learning or building, and don’t discount the importance of it. You can act as though your ideas matter before you fully believe it.

When I first started working as a facilitator at RC, I thought most people needed help going easier on themselves. I’ve come to believe it’s the opposite: people underestimate themselves and need encouragement to take their own work and ideas seriously. I still regularly remind Recursers to be kind to themselves, but now I also say that one of the most important ways to be kind to yourself is to not sell yourself short.

Think about what conditions your ideas need to grow, and cultivate those conditions around you. This generally means devoting some combination of time, energy, and attention to them. It can also mean changing your environment to support your work or investing money in relevant tools, but it doesn’t have to. And at some point, it’ll likely mean sharing your work with other people.

Why sabbatical at RC?

As RC alum Allie Jones said: “The thing RC kind of teaches you is that you can figure anything out, given enough time.” At RC, you have the time, space, and support not only to dive deep into concepts you thought were beyond you, but also the freedom to figure out what you actually care about and what you can say no to in order to focus on it. It’s an open invitation to do the best work of your life, in a community of others doing the same thing.

RC provides lightweight structure and dedicated time and space to work on your projects without external pressures or deadlines. Doing your sabbatical at RC also means you’re not alone. You’ll be surrounded by kind, curious programmers who are all choosing to push themselves to grow, and you’ll have the support of a community with a high degree of intellectual ambition and a high degree of psychological safety — many environments have one or the other, but not both.

What’s your biggest programming dream? What’s the project that’s been itching at the back of your mind and won’t let you go? What’s the most ambitious thing you would learn or build if you really had time to focus on it? Tell us about it when you’re ready to apply!

Jimmy Li: Law School to Software Engineering to Tech Lead

Sydney Lefevre

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.

Jimmy came to RC for the first time in 2011, and for a second time in 2013. He currently works as a Technical Lead Manager at Google.

Jimmy Li

Here is Jimmy’s story:

Before RC

I took one programming class in college - I enjoyed it, but for various reasons was discouraged from doing any more than just one class. I don’t really count that as the beginning though; the beginning was in the summer of 2011, right when I was in between the first and second years of law school. My law school classmate and I had a start-up idea that we got overly excited about, and we couldn’t find anyone who was willing to help us code a prototype. I remembered enjoying programming back in college, so I said, “Let me see if I can learn enough to cobble something together,” and so I started coding that summer.

Pretty soon, I became less interested in the start-up idea and more interested in the coding itself. I was on a legal internship that summer and I found that most of the day I would just spend coding rather than doing my job. I went back to law school for the Fall of my second year, and I continued to ignore what I was supposed to do and instead coded on stuff, and I guess a small part of my brain was thinking, “Maybe I should do this for a living,” but I wasn’t sure how that would work out.

Very serendipitously, I went to a YCombinator event in New York, and Hacker School (as RC was then called) was there. I went to that event to ostensibly pitch the idea that my friend and I had. But, I was already giving up on that idea so instead I went around asking if folks needed volunteer coding help. I realized I could only go so far programming by myself in the law school library, surrounded by people who had no interest in this stuff. I needed some sort of community, I needed to be in a group that cared about programming. So, my thought was to try and be a volunteer coder because I wasn’t good enough to be paid. Eventually, a couple of different folks asked if I’d spoken to the people from Hacker School.

I still remember the conversation really well. Nick and Dave were like, “Wow, you seem really enthusiastic” — and I was. They were, in a very generous way, willing to give me a chance even though I hadn’t gone through the application and interview process. This was the day before the second batch was about to start. They said, “Come to the Spotify office tomorrow, and if there’s a physical seat for you, you’re in!”

During RC

It was a whirlwind three months because I was in law school at Yale at the same time, and I ended up taking Metro North three days a week. At the time, RC was Monday, Tuesday, Thursday, and Saturday, so I’d take the train up Monday, crash on a friend’s couch in NYC Monday night, come back Thursday, and come back Saturday. I took that train a lot — two hours both ways. It was definitely one of the most thrilling three month periods of my life, without question. I’d continue coding or reading books like The Little Schemer on the train.

In addition to the amazing amount of programming that I learned from people in this atmosphere of curiosity and passion, this desire to learn and this inquisitiveness was ignited in me in a way that it never had been before.

In my first batch, I focused on one project for 80% of my time there. The project was an improved course selection site for my law school classmates. Basically, when students at my law school picked classes it was very painful, and if you wanted to figure out what classes would fit into an open block on a Thursday, you had to do CTRL-F for capital T, lowercase h for Thursday. This was a problem I could help fix, so I learned how to scrape the data, put it into a database, set up the frontend with the ability to search and sort and filter – basically I built this full-stack web application. One of the many things that got me into programming professionally, in addition to loving the actual practice of programming, was that I picked this nice starter project: I was able to launch this to my classmates and they loved it! It was awesome to sit in a law school classroom and see my classmates using it on their laptops in the desks in front of me. I’d never felt like I’d provided value for people in such a clear manner, and that was pretty exhilarating.

Talking to all the other Recursers and people like Nick and Sonali, I realized that it wasn’t too late for me to try to get into programming. At that time, I didn’t have many examples of folks who were self-taught and didn’t have a CS degree, and talking with the folks at RC was definitely eye-opening. I also changed my overall philosophy about learning. Before that, I’d given way too much weight to learning in a formal classroom setting.

I feel like there are so many advantages to learning on your own — not only is it possible, but in many ways it’s better. I think this helped set off a lifelong practice of learning.

After his first batch

After my first batch, I did the interview circuit guided by RC, and also did some interviews outside of what RC set up for me, and I ended up taking an apprenticeship with Pivotal Labs that converted into a full-time job. I went to SF to do that, and then I got a job offer from Codecademy, and decided to take that since I was a big believer in people learning how to code. I worked at Codecademy as one of the early engineers for a little over a year, and then right after that I went back to RC.

I was at another transition point in my life where I decided I was going to finish my last year of law school, and I wanted to tap into that feeling of why I love coding. Working as a coder brought to my attention that there are aspects of the professional practice that don’t quite have the Disneyland quality of RC. Something that continued to be hard for me as a coder was the aspect of coding that involves reading the manual and figuring out how some of the details work. I enjoy thinking about stuff at a conceptual level and problem solving, but I hate setting up IKEA furniture. That didn’t really get much better for me — it continued to be a problem!

During his second batch at RC

When I went back to RC, it was a bigger group. It was like 40 or 50 people instead of 10 or 12 people; it was harder to get to know everyone, but it was a nice group and I was able to forge great connections as well, despite the size.

I also approached it differently in terms of what I spent my time on. I spent my time learning a broader array of things instead of working on one large project. I did a handful of smaller things - I built a JavaScript game, I built a simulation of Conway’s Game of Life and worked through SICP. My mindset was also different: the first time around I had such a clear goal of getting decent at programming, and the second time around I wasn’t sure what I wanted out of it. But, I did succeed at reigniting some of that love of learning.

After his second batch

After that, I went back to law school to finish my last year. I kept programming and I ended up taking a job in DC working for an analytics company called Blue Labs that helps Democrats. It occurred to me that programming is about a lot of things in addition to the things I love. The things I love are problem solving and learning how things work — the kind of things you get in classrooms and you talk a lot about at RC. When you’re a professional, it also involves meetings, and again, reading the manual on some other person’s code and learning how to use it. I was thinking, do I have the temperament, the patience, the attention to detail to be a programmer for the next 40 years? I started to doubt that, and I thought being a product manager would be a sweet spot for me where I’d still be in tech and get to talk to programmers, and help solve problems. I gave that a try, and was a product manager in a medium-sized company, but there wasn’t as much problem solving as I thought.

I decided I’d have the courage to go back into programming, get better at the aspects I didn’t think I was good at, and understand that as a whole, programming is still the best job given my interests and skills. I recommitted, with my wife’s help, and we decided to move to California. I did the interview circuit, and decided to work at Google and have been there since 2017. I started working as a frontend engineer on the Chat team, and then two years in I switched to the Health part of Google. I worked full-stack, and then in the last year and a half I’ve been a Technical Lead Manager, and I lead a small team and have a small number of people report to me.

To keep learning, I read, I watch YouTube videos, and talk with coworkers, and we have a weekly meeting where we share something that we learned recently that we think is cool. I occasionally do a Coursera course, or follow resources from Bradfield School of Computer Science.

RC is such a special place of learning and curiosity. It’s better than most of the formal educational institutions I was a part of. In those places, even with the quality of instructors and the research caliber, that spirit of wanting to learn and figuring stuff out on your own, and taking your learning by the horns, I never found that anywhere else. It’s a very intoxicating feeling and group to be a part of, and I’ve tried to chase some version of that ever since.

Bernie Snell: Sociology and Philosophy to Full-stack Engineer to Blockchain and Quantum Physics

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.

Bernie came to RC in 2019, and is currently working on her own blockchain project after winning a hackathon and receiving funding.

Bernie Snell

Here is Bernie’s story:

Before RC

I did a bootcamp in 2017 after dropping out of a PhD in sociology and philosophy. I was disillusioned with academia and the job prospects were terrible. I also liked traveling, so it seemed like engineering could be a viable remote job. I’ve always enjoyed math and science, and I received a targeted ad for a coding bootcamp when I was trying to decide what to do instead of my PhD - since I’ve always loved learning, I decided to give it a go. I finished the bootcamp, and did a year and a half with the best job that I’d ever had, where I got exposed to lots of different areas of software development since we were building 3D visualization software. I did a lot of vector math, and it exposed me to deeper ideas in programming. That’s really how I knew programming was for me and I decided to stick with it, and it also sparked a fresh interest in math and science.

I’d been there a year and a half and I felt like I’d learned a lot already. But I wanted to learn a language that wasn’t just JavaScript/TypeScript, and I realized that for me to continue to develop as a software engineer, I needed to learn other fundamentals like memory management and functional programming. I looked for bootcamps for non-junior engineers (and there weren’t a lot out there), and for programs with scholarships for women, which is how I found the Recurse Center.

During RC

I wanted to learn Rust because it seemed like it would teach me a lot of the things I wanted to learn. I was also interested in blockchain because I’ve always been interested in redistributive economics, and it seemed like a radical way to create new economic systems. My idea was to try and build a blockchain in Rust, and that’s what I did. I spent the first half of RC learning the language, and doing the Cryptopals challenges with other people. My detours at RC were that I got really into cryptography, followed by quantum science and quantum computing.

I had the chance at RC to go deeper into the mathematical side of things, too – if you haven’t done that at university, you don’t get a lot of space to carve out time to learn something like that.

The quantum science detour was really profound for me: I realized that I was deeply interested in it, and it shaped the direction I’d take in the future. I don’t think I would have had that insight without attending RC.

After RC

Straight after RC, I worked as a blockchain engineer, but I left that after a few months because the culture didn’t sit right with me. After that experience, I thought that I’d had enough of blockchain – it’s a world that has lots of potential, but I felt like most people there didn’t share my value system, so I decided to do something else. I worked at Sketch for a while, and left that a few months ago to pursue a new direction, and that’s when I entered a hackathon. I decided I shouldn’t be squeezed out of blockchain and that instead I should be an active participant in creating the future, so I decided to give it another go.

I ended up winning the hackathon, which came with some funding to continue working on the project, which is what I’ve been doing since. It’s a project built on the Internet Computer – a blockchain where the networking layer of the internet is also decentralized, which offers a more interesting alternative to something like IPFS. The app that I’m building is a location-based chat app, and I am partly building it with the idea that people will use it for community organizing. I also decided to pursue my interest in quantum science by learning more of the foundations, so last year I started a second remote degree in mathematics and physics.

I often have a voice in my head which tells me: “You’re not a good enough developer to be able to do this sort of low-level programming or solve these kinds of problems…” And now I’ve learned to reject it, to just sit here with a problem and bang my head against it until I arrive at a solution - that’s all anybody does, and I’m just as capable.

That’s what I like to try to do: take on things that seem too difficult, break them down and then sit with them until I understand them.

The fact that I’ve managed to mostly be in really diverse spaces has really helped me in this regard. In my first job I was very lucky that my boss was a woman who was a really amazing developer. It was a diverse company in general, and it was so fulfilling to be in that environment. The bootcamp was also diverse, as was RC and Sketch. In a way, I think I’ve been insulated from some of the more toxic areas of tech, and I think that’s been really beneficial for my growth and my mentality; RC was a big part of that.

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.

Johann Diedrick: Web Developer to Director of Engineering and Artist

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.

Johann is the Director of Engineering at Somewhere Good and maintains an art practice working at the intersection of art and technology. He came to RC in 2020. Before his batch, he worked as a web developer and attended ITP.

Johann Diedrick

Here is Johann’s story:

Before RC

I got into programming through spending lots of time in AOL chat rooms when I was in middle school. People would make PROGz: these were chat room programs that allowed you to do different things by typing commands into the chat. I wanted to learn how to make one, so I made a music player using Visual Basic, and was able to get it to play music and shuffle through a playlist. My dad got me into electronics and computers generally speaking; he and I built computers, he built car stereo systems and all kinds of electronic projects, and that enmeshed me in electronic culture at the time. Being “born on the internet,” I’d do things like build and design websites and I didn’t think too much of it.

All of this felt like recreation, and not a career that I was going to pursue. I was more into science and biology, and I ended up getting into the University of Pennsylvania’s computational biology program which was my first introduction to programming in a formal setting. I ended up transferring out of engineering and into the college of arts and sciences. I was at a prestigious university and I thought I should be spending my time learning about ideas and thoughts and expressing myself, and figured I could always pursue a technical degree after I graduated.

I graduated and started working at an interactive media consultancy. I was a copywriter, and they found out that I knew how to code and make websites, and I fell into a junior web development role. At this point, I thought I should go back into engineering or pursue an arts practice that involved technology and music. I ended up at NYU’s ITP program, and it gave me a new way of inserting myself back into programming and computer science through a creative lens. I focused on programming while I was there, and even though it was like an MFA, I made sure to come out with strong programming experience, and tried to push myself as much as I could.

After ITP, I worked as a software engineer at the Metropolitan Museum of Art, and that felt like a progression of “working in the arts and programming”. Eventually, I didn’t feel satisfied; I felt stagnant in my career, skills, and things I wanted to pursue. I didn’t feel like I could jump jobs immediately because I didn’t have a CS degree; I could pass coding interviews, but not at the level of execution I wanted. I ended up applying for an artist residency at Pioneer Works, which prompted me to jump ship from the Met.

The residency was going to start in March of 2020, and I had three months beforehand to do whatever I wanted. I was talking with a friend about my plan to sit in my room for three months and read Cracking the Coding Interview, and he told me about the Recurse Center.

It seemed so curiosity driven: a perfect synergy of what I needed professionally and spiritually at the time. I was really excited to dive in, and I felt like I’d really found my people.

During RC

I was thinking about identity, race, power, and politics and what it means to show up in places. At the time, I was coming out of an unhealthy work environment that was making me feel very small, and when I got to RC, I remember I walked in on the first day and saw three masculine-presenting Black people in the room, and that was three more Black people than I ever saw in a room of programmers. I remember talking to one person and asking, “Is this real? Do you feel safe?” and they gave me an affirmative answer that felt very convincing.

Seeing the spectrum of identities at RC was really remarkable.

I wanted to spend my time at RC getting my CS fundamentals down, as well as at the intersection of art and programming. I was interested in audio machine learning, and doing lots of fun things with environmental sound classification, which led me to build a birdsong classifier. I went deep using a computing cluster at RC to do deep learning procedures. I met a crew of sound/music people and even went on a roadtrip to a conference with them. I was pretty heads-down while I was at RC - I had my head in the screen and had strong intentions about doing that, though I regret not socializing as much.

Everything was so well facilitated and managed, and I felt so supported. I did have some internal struggle thinking I could do more than I could in a day, and I had to learn what capacity is, what my capacity is, and to try not to burn myself out. I’m still learning that lesson! The batch transition was also hard for me - some people left whom I had gained familiarity with, and there was the feeling that there were “new kids”. The dynamic changed a lot in that moment. It does some nice things for you, though: having continuity across batches allows culture to persist and handing off of different clubs or activity groups or rituals is important.

After RC

I finished my batch at the beginning of the COVID-19 pandemic. I did my residency at Pioneer Works remotely for 3 months, and ended up working for Emergent Works, which was an education non-profit that worked with formerly incarcerated people to teach them to program and help them get engineering jobs. At the time, they’d started an agency side of the business where they’d have a senior engineer like me work with one of the junior engineers on client projects. It was really fulfilling.

I left that, and I was hired by a company called Somewhere Good, where I work as a Director of Engineering. It’s a social app where people can find different worlds around different interests and then have conversations inside of them via asynchronous voice notes. At RC, I got a lot better at programming. What it said on the tin was what I got. I started this job and I realized I was really good at it. I can do all of the things I’m asked to do and I want to do more.

I think RC was a huge reason for that. I felt like I got a lot better at programming, I got better at the fundamentals, and interviewing. I felt this new version of me as an engineer and programmer.

The art career is still going well - I’m not doing as much programming or audio classification but it’s flourished a lot. I also did some stuff with Mozilla last year around racial bias in speech recognition, and I feel like all of the audio machine learning stuff I did at RC came into play. A lot of fruit came out of all of the work I did at RC. It was very formative.

A dream of mine now is to build an education and art center somewhere; my partner and I have running notes on this, one of our models for this idea is an “Art Recurse.” I wonder what RC could be like for different creative practices? I think that there are lots of people who desire this kind of thing, but don’t know what it’s like or other spaces to do it outside of school.

Allie Jones: Textile Designer to Web Developer to Staff Engineer

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.

Allie is a Staff Engineer at Etsy, and came to RC for a batch in 2013. They also worked as a facilitator at RC from 2015-2016. Before their RC batch, they worked in textile design, and as a graphic designer and web developer.

Allie Jones

Here is Allie’s story:

Before RC

I was always a kid that liked computers. I did the classic 90s online stuff, making fan websites for things that I liked and I got into modding video games. I didn’t realize it was programming!

In my teens I had the classic leaky tech pipeline experience: I was into art and technology and I got into a pre-college summer program and got to take programming classes. It was the exact thing that people talk about: I’m non-binary but at the time I was a “girl” in tech; no one was mean, but it was very clear that I was surprising and it was very weird that I was interested in it. I had never written C++ but everyone else in the class had, and they were like, “Oh, you don’t know how to write recursive code?!” Me and the one other girl in the class had to work together because the 16-year-old boys were not capable of collaborating. I didn’t want to spend another 4 years like this. Even the people running the class said, “I saw you can draw, are you sure you don’t want to do 3D graphics instead of programming?” I won their beginner programming competition, but if this was what getting a CS degree was like, I wanted to go to art school instead.

I studied textile design with a year of glass blowing. I worked as a textile designer in Bangalore, and when I came back to the US, there weren’t any textile jobs, but I got offered a job as a graphic designer at a sign shop. I worked there for 4 years, and realized that I could write code at least as well as the people they hired to do development work. Since it was a small business, I started doing it myself and after 2-3 years I was doing the whole website: the graphics side, building it, integrating WordPress CMSes, e-commerce, etc. I didn’t realize that this was supposed to be the job of 5 human beings.

That’s when I started looking for something like the Recurse Center - I realized that I liked this, and I was pretty sure that I had enough skills to make this a real career, but I didn’t know how to get from where I was to actually being a software engineer.

I didn’t know anyone in tech, and I needed someone to vouch for the fact that I could program. I asked my wife, “Would you care if I went to New York for three months to do this programming thing? I think it might help.” I don’t think she knew the snowball effect it was going to have.

During RC

I went into RC with preconceptions about what “real” programmers did. I interacted with people who I perceived as doing “real” programmer stuff — people in my batch were into Python and Julia and OCaml, and to them, my ability to build a UI that made sense or build a thing in the browser was really useful! They didn’t know how to do that at all and they’d come to me for help with making a UI look better. That was a huge confidence boost for me, and it made me feel comfortable. I became confident enough that I was a “real” programmer even though I wasn’t writing C. The last thing I built at RC was a multi-user whiteboard app that used web sockets in the browser and multiple people could log on and draw on the same canvas from different computers. That was definitely in the category of things that I would not have thought I was capable of making when I started my batch.

The thing RC kind of teaches you is that you can figure anything out, given enough time. Maybe it doesn’t always make sense to do that, but you could!

After RC

I work with a lot of newer engineers at my job, and I think people still get these messages about specific kinds of programming being less serious or less hardcore than others. Do the kind of programming you like, and don’t let sexism stop you. RC was the environment that let me gain confidence, and to describe that it was happening, and that the skills that I had were valuable and I did count as a programmer. I could hang out with people who are writing low-level web sockets code in C and they didn’t think that I was stupid or didn’t count. I was taken seriously, which was different than experiences I had in other computing communities.

Sometimes I can’t believe that this career happened - it seems very implausible. I’m unquestionably a professional software engineer at this point. Now I feel like I can go into less friendly technical spaces and do well and make space. Ten years later, I got promoted to Staff Engineer at Etsy and to me that was a big “I’ve made it” feeling. I enjoy having the technical clout backing to go into these spaces. I’m on the other side of the negative experiences that I had when trying to get into tech. It’s really meaningful to me to now have power and clout and I can make it go differently for the seventeen year old girl that I’m helping learn how to program, or the junior engineer on my team. It feels meaningful - it’s my own personal way to make things better.

I love knowing the RC community is there. In times when I want to get into a technical topic, or I have a specific question or when something’s come up at work and I’m looking for someone who shares technical expertise, it’s great to know that I have this network that’s out there waiting for me.

I have friends I met through RC and it’s been 10 years! I see RC as a pool of potential friends — it’s this group of people who share certain values and nerdy interests with me and it’s nice to know that there’s all those people out there and if I want to meet some new folks that I’ll probably get along with, they’re there.

View older blog posts...