Tags: rc
<< previousEarlier this year, I spent 12 weeks at a programming retreat called the Recurse Center (RC). I wrote about the application process, and I shared a series of daily updates from my time there. Now, I'd like to write what they playfully call a "return statement" and reflect on the experience as a whole1. We'll cover the highs, the lows, and the minutiae of life at RC.
But first, here's a list of everything I did during my batch. Certain projects, like the BitTorrent client, spanned almost the entire 12 weeks, but most were mini-projects. Micro-projects, even!
If you read this post from just before I started RC, you'll notice that I didn't get around to implementing even a fraction of the ideas I'd brainstormed. I didn't make a game, write a machine code-generating compiler, or learn anything about operating systems, to name a few projects I missed. In any case, I'm happy with the variety of things I worked on. I got a taste for lots of different technical subjects that I'd always wanted to try. (Hacking! Network programming! Graphics!). I also enjoyed following along with the massive range of projects that other people were working on.
The staff have done a great job cultivating a pleasant environment at RC. It's probably the most welcoming tech space I've ever been part of. Every time I reached out to one of my batchmates, I got a friendly response. They were an interesting group of people, coming from backgrounds as diverse as English literature, music and physics. But most importantly, they were kind!
Pair programming is highly encouraged at RC. It's a great way to spend time with people, learn from them, and get a taste for their projects. It helped to take the initiative in asking people to pair or to chat; if I hadn't done so, then I probably would've spent most of the batch working alone! Another RC tradition is the "niceties". People are encouraged to write each other nice messages when each batch ends. Then, in the "never graduate" ceremony, the faculty read aloud a single hand-picked nicety for each Recurser. It's a cute way to end the experience. My batch was the first one where they introduced a portal for sending and receiving niceties, where the niceties will be stored for eternity.
As for the structure of the retreat, we were mostly left to figure things out for ourselves. The RC faculty and infrastructure enable you to make RC what you want it to be, though it's strongly encouraged to work during the office hours and to Learn Generously. You can work on whatever you want, attend as many events as you want, and interact with other people as much as you want. Helpful stuff includes: Zulip for text chat (with its excellent selection of emojis 🐙), a calendar for organising events, Virtual RC/conference rooms for video & audio chats, staff-run events, and more!
The infrastructure meant I could attend 100% remotely - yay for accessibility! The downside was that it was harder to connect with other attendees. There was a whole world of social opportunities I missed out on, like in-person events, and there were people I barely talked to because they weren't engaged in the Virtual side of RC. It also kinda sucked to be in a timezone 5 hours ahead of the RC hub in New York. I often finished programming after 10pm, at which point my brain was wired for the night and I struggled to get to sleep. I definitely wasn't taking the best care of myself over those 3 months.
Besides my self-care taking a nosedive, there were other mental and emotional challenges. The fear of failure sometimes made my brain want to skive off and play chess, and then I'd beat myself up about it.
🧠: You wanted to do this programming retreat and now here you are wasting your life playing chess! Maybe you're permanently broken and you'll never be productive ever again!
Me: Why are you so mean?
In retrospect, I think I was still burnt-out from my PhD, which I'd just about wrapped up by the beginning of the batch.
The BitTorrent client dragged on for almost the entire 12 weeks, when I originally expected it to be a quick "warm-up" project. I could've picked up the same networking concepts by implementing a simpler protocol, and left more time for other topics. It also didn't lead to much interaction with other people because I was one of the few Recursers working on networking stuff. On the positive side, it did teach me lessons in persistence. There were moments where I despaired at the seemingly endless amount of work left to do, but by breaking it up into smaller tasks and chipping away at them every day, I eventually got to the finish line. I also figured out that it was important to let myself off the hook sometimes and work on Fun New Stuff. I could then return to the BitTorrent client feeling reinvigorated.
If I could redo my batch, I'd put more effort into scoping my projects, I'd allow myself to drop projects if they weren't serving my interests, and I'd join a study group (still feeling FOMO about the CryptoPals group). Also, I probably wouldn't read and write Zulip check-ins with such fanatical consistency. While it was helpful for feeling connected to my batchmates and led to some positive interactions, it took upwards of 30 minutes per day and I maybe could've spent that time talking to people directly.
I sometimes struggled with the interpersonal side of things. Zulip is a useful tool (when it's not blasting you with unwanted notifications), but it's also a reminder of why I shy away from social media. I found myself checking on my daily check-ins to see who had reacted to them (🐙!). Whenever there was a lack of engagement, or whenever I compared myself to other Recursers who seemed to have made stronger connections, it made me feel envious or down on myself. It can also be tough to see the many awesome things that other people are doing when you're having a bad day. (The double-edged sword of Learning Generously). This is all embarrassing to admit, but I think it's better to be open in case there are other people who have felt the same way.
RC is, at the end of the day, a recruiting service. However, it's completely optional to engage with this side of things, which I appreciate. I had my CV reviewed and got some jobhunting tips, but if anything I should've made MORE use of their services. Despite this negligence on my part, the most life-impacting outcome of attending RC was that it netted me a job, quite by accident. I'd been planning a career pivot into data science and machine learning, and was building up a portfolio to that end, but hadn't gotten any interiews.
Then Amy (the only other Irish person attending RC during my batch) sent me a job posting that she thought would suit me. The job would involve designing and implementing programming languages. I immediately felt excited by this prospect - much more excited than by any of the data science jobs I'd seen. Funnily enough, here's something I said in my very first daily update:
Feeling tempted by people talking about their programming language projects, makes me want to dive into the Crafting Interpreters book, or maybe Engineering a Compiler.
I never did end up reading Crafting Interpreters or Engineering a Compiler, but I'd made my own tiny programming language before, which is probably what got me the job. I'm now working on custom programming languages for a small Irish company called Manakau. I love working remotely (in my own timezone), my colleagues are really nice, and the programming is fun. Maybe I'll ask if I can write a blog post about it.
Overall, I loved my time at RC. The other day, I read over my daily updates for the first time since I'd finished the batch, and it brought back a lot of fond memories. I do think I've become a better programmer as a result of my time there, and being in that environment helped me to learn more about myself as a person, too. Not to mention that I got a job out of it.
On that note, it's time to close the book on my first ever batch at RC. I hope my batchmates are doing well, and I'd be delighted to hear from them if they read this!
return Status.SUCCESS;
It took me an embarrassingly long time to realise that this is a play on words. ↩
I'd be happy to hear from you at galligankevinp@gmail.com.