Recurse Center

A new kind of retreat

As of July 18, 2023, our Brooklyn hub is open to Recursers for the foreseeable future! You can attend your retreat at our Brooklyn hub, online, or any combination of the two.

We’re excited to announce that from June 26th - September 15th, we’ll be reopening our hub at 397 Bridge in Brooklyn so that you can drop in and spend as much or little of your retreat time there as you’d like.

That means that if you attend a batch happening during those dates, you’ll have the option to do your retreat online, at the hub, or any combination of the two. Apply here!

If you want to work at the hub every day of your retreat that it’s open, you can. If you’d like to drop in for a week to work with people on something specific or just check it out, that’s great, too. And if you want to attend every day online, that’s wonderful.

The hub is full of possibility, and it’s here for you to use it how you see fit. Coordinate with your study group, host mock interviews for one another, have lunch, play with the pen plotter, pair program.

A self-directed retreat, wherever you want it

397 Bridge has been closed since March of 2020 (even though, like the rest of the world, we thought we’d be open again in a few weeks). Since then all retreats have happened online, which has meant we’ve been able to welcome hundreds of Recursers who otherwise wouldn’t have been able to join us for a retreat.

Beyond making RC more accessible to more people, going online-only led to lots of other positive changes to the retreat over the last three years, including adding the self-directives, hiring Liz as an online facilitator, and being able to have a more flexible alumni attendance policy.

But there are some things that are more difficult online, and we know that while many people prefer it, it doesn’t serve everyone. Before 2020, you had to be in New York City to attend a retreat. This was better for serendipity: you could overhear people talking about an interesting project, or peek over someone’s shoulder while they worked and get involved. Socializing was spontaneous, and easier. And we had lots of cool stuff to tinker with, from pen plotters to vintage computers to Arduinos. But it is also expensive to move to New York for months to attend a retreat, and that made attending logistically impossible for some people.

As we realized it was safe to reopen 397 Bridge, and started thinking and talking to alums about how to do that well, we wanted to figure out how to offer the best of both worlds. We didn’t want to design a hybrid retreat, where we were forcing people to interact in ways that didn’t make sense. We see this as an opportunity to make the retreat work for more people than ever before.

How it will work

Retreats will still be one cohesive experience. Events that are important to the arc of the retreat (onboarding, presentations, the end of batch ceremony) will happen online so that everyone can participate.

Onboarding — our welcome talks and first-week workshops — will be condensed to two days, and will happen online. Our hub won’t be open on those first two days of the batch. This is so that everyone has the same shared experience of onboarding and getting to know each other. Friday presentations will also happen on Zoom, and there will be a dedicated space to present from in the hub if you happen to be there while they’re happening.

We’ll also have a way to register where you plan to be and check who will be where on a given day.

Schedule

Our core hours will remain the same: Monday-Friday, 11 am - 5 pm EST. And the commitment you make to the retreat remains the same, too: you should plan to attend during those hours for the duration of your batch, and RC should be your primary commitment while you’re doing a retreat.

Our hub will be open to people attending a batch starting on June 26th and ending on September 15th. Onboarding for Summer 2 will happen online on June 26th and June 27th, and onboarding for Fall 1 will happen online August 7th and 8th, and the hub won’t be open those days.

Otherwise, the hub will be open to you 24/7, as it always was to current Recursers. We’ll have facilitated hours at the hub on Tuesday-Thursday, from 11 am - 5 pm EST. Facilitated hours are when Mai and Sydney will be available to help you navigate 397 Bridge Street, find other Recursers to work with and talk to, have office hours chats, organize events, and more. When you’re at the hub you’ll also be able to attend events happening on Zoom, and use our pairing stations and equipment for hardware projects. Online, our facilitators Liz and Caroline will be around Monday-Friday hosting events, helping you find resources and collaborators, and chatting with you about your plans for your retreat.

When you confirm for Summer 2 or Fall 1, we’ll ask how much of your time you plan to spend at the hub and online — this will help us plan capacity! If you’re already confirmed for one of these batches, or are confirmed for the Summer 1 batch, we’ll reach out in the next few weeks to check in about your plans.

If you’re an alum and would like to visit the hub, we’ll have more information about alum hours soon, when we have a better sense of demand for space. We’re going to prioritize current Recursers, so we may not be as open to alums as we were pre-2020 (Virtual RC will remain open to you 24/7).

What to expect

This is an experiment for us, so we can’t say for sure what it will look like. Much of that will be determined by you, and what you decide to do at RC!

Here are a few things we do know:

  • You’ll be joining a group of self-directed, generous, kind programmers to do the work you’ve always wanted to do and have a transformative six or 12 weeks
  • The self-directives and the social rules will still guide everyone’s experience
  • You’ll have more flexibility than ever to determine how you show up for your retreat
  • RC faculty will be here to help you get the most out of your time
  • As always, you’ll be able to make RC your own by creating events and choosing what you work on each day

We’re only committing to running our retreats this way through September 15th, but we’ll be making a decision on whether to keep our hub open for future retreats in mid-July.

If having the flexibility to do so in Brooklyn and online appeals to you, apply. We hope to meet you this summer!

If you’d like to learn more about how our hub will work regarding access and safety, check out our Physical Space page. If you’d like to learn more about the online experience, read our Virtual RC page.

Nurturing a learner’s mindset: A day at RC with David Balatero

Sydney Lefevre

What do you do when you want to explore new areas of programming and deepen your knowledge, but your job takes up most of your time and energy? After working as a programmer for a decade – including stints as the first engineering hire at a startup and later as a Team Lead at Stripe – David Balatero decided to take a break to explore his music and programming interests.

He wanted to take advantage of the first break he’d had in a while to dig deeper into CS concepts, as well as to build his confidence and explore new areas of programming – things he hadn’t been able to do when he had a demanding full-time job.

We chatted at the mid-point of David’s batch about how he’s balancing music and study, and how RC provides the space and lightweight structure to help him get the most from his time off.

(as told to Sydney by David)

8:00 am: I wake up at 8 o’clock every day. Ideally, I try to exercise and practice the piano in the morning. Those are the hardest things for me to make sure I do. I use a stationary bike at home and when it’s nicer out, I bike around a lot for transport and commuting. I spend about an hour a day practicing piano, and I supplement my weekly piano lessons with YouTube videos.

I eat breakfast sometimes, but I’m more of a coffee person. I love and hate the weird feeling of drinking coffee on an empty stomach. My friend owns a coffee shop nearby and sometimes I start the day over there. Ritually, I love to go for a little walk to get a coffee and talk to the barista, but I’m trying to curb my spending habits by training myself to cook more and make coffee at home. Many days I make a French press.

10:00 am: I catch up on messages, check email, and read Zulip. I’m also in a few Slacks, so I start by clearing out the inbox a little bit before I sit down and start doing anything.

There are two things I’m doing right now at the Recurse Center. Sometimes I think man, maybe I should be doing 5 things! But I’m more of a depth person — I’m not into buffet-style learning. There are pros and cons to that, and I know I might miss something that I don’t know that I’ll love.

The first thing is that I’m pretty heavily working on data structures, algorithms, LeetCode and that kind of stuff, which is something that I’ve basically put off my entire life. Before, I would just apply for jobs that didn’t require it as part of the interview process.

The other thing I’ve been working through is a Three.js 3D graphics course called Three.js Journey. I’m still getting through the basics of shadows, lighting, shapes, meshes, and textures. I was attracted to it because I was thinking about what I know literally nothing about, and this is one of the topics that jumped out. I’ve done a lot of frontend web programming in the past, and the JavaScript piece I already knew.

I was ambiently aware of RC because I would read blog posts and the authors would mention RC in the bio on their blog or they’d talk about it in the post. I thought it was pretty cool, and it kept coming up in my vision, but before I didn’t have the time because I was working. I ran into my friend Sara, who’s in an orchestra with me and is also an alum, and she encouraged me to apply. This was the first time I’ve had time off in 10 years, so I did!

12:00 pm: I eat lunch around noon-ish since the LeetCode meetup is at 1 pm. Sometimes I go out, but usually I cook a real dinner and for lunch I’ll scrounge. Yesterday I had leftover bolognese sauce on a piece of sourdough with butter and two fried eggs, with chocolate milk.

1:00 pm: There’s a meet-up every day at 1pm ET to do LeetCode problems together and another once a week to check up on NeetCode, which I’ve been working through on my own. We’ve also been pairing up on doing mock interviews. I try to do some problems by myself so I can go at my own speed, but I also like to work with others. It’s particularly helpful on problems I’ve already done, because then I can explain as I go, which is like reinforcement learning for me. I generally try to make the LeetCode meet-up, unless I have a coffee chat or mock interview at that time.

I’m having a good time being in the zone and learning. I have goals with the stuff I chose to do here: the real goal with the interview stuff is to challenge my imposter syndrome. Once I’m in a job, I perform well, but sometimes in interviews I wish I had more confidence, and I’m excited to take on the next job search that I do with the newfound confidence that comes from preparation. I’m very optimistic about how that will go.

2:00 pm: The next lesson in Three.js Journey I’m going to do is called Haunted House, and I’m going to build some sort of haunted house scene. I haven’t had much to show for it up ‘til now because it’s been a little more conceptual (for example: how to make a cube) and now I’m getting into the fun-to-show section.

Ultimately I’ll get to make swirling galaxies, particles, and stars that you can zoom in and out on, and 3D models in Blender that are hyper realistic that you can drop into a website. I like building for the web, so this would be nice to have in my toolbox. I’d like to make my own portfolio site in 3D, like an apartment you can walk around with tons of stuff that you can interact with: a keyboard that you can play, a projector that shows videos, a window you can look out of. It’s a different medium than I usually work in when I’m doing more artistic things, and maybe I can combine it in the future with music projects I have and make weird 3D interactive experiences.

3:00 pm: When I see something I feel I can help with on Zulip, I’ll try and volunteer to pair program. Or, when someone at the Leetcode meetup mentions that they want to pair up on a problem, I’ll do that too. Yesterday I paired with someone who’s getting ready for a job interview and talked through some open questions she had.

5:00 pm: I kind of treat RC like a 9-5 job, so I usually sign off around 5pm. I have rehearsals in the evening once or twice a week and I try to cook dinner often, or go out with my partner. I’ll also work on music a bit after RC – being in bands or projects is a forcing function to get something together for a concert or a recording.

The hardest part is staying on and engaged for eight hours a day. I’ll take breaks and walk around – because I’m in my home, I can get distracted or lose focus. But, that’s how I am at work too if I’m honest!

The most surprising thing about coming to RC was remembering what unstructuredness feels like. I’d forgotten what that was like to have all day! When I last took a break in 2012, I didn’t have a plan for my time and I flopped around for a while. Being here at RC, there’s no homework, no one expecting you to turn something in, and you can do whatever you want. But, there is the expectation that you are doing something, and it’s helpful to have that framework. When I took a break before, I didn’t have that, and I got kind of lost. I didn’t want to make the same mistakes this time, and I feel like I’ve done well: I’ve been able to show up every day and do my thing.

Late night: I’ve been pretty bad about winding down, and I’ve been getting to bed pretty late. I screw around on the computer, read, or watch TV. I naturally like to stay up late, so it takes a lot of energy to change my approach even though I know it’s better for me. I like to sleep and it’s something to work on because it would make the quality of the things I do during the day better — I’d probably learn more effectively and have better recovery after exercise.

I really recommend doing a retreat at RC if you can. If you think you can’t right now, think about what you would need to have to be able to do it down the road: whether that’s time off from work or something else. RC is the perfect thing if you have a learner’s mindset. Before, I had that mindset, but after work I’d feel tired and I wouldn’t want to work on more programming, so exploration was harder. Pay attention to yourself when you’re like, “I want to learn that thing but I can’t right now!” RC being remote-friendly really reduces the barriers to attending.

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.

View older blog posts...