The Winter 1 2016 batch of the Recurse Center ended on Thursday, Feb 9th, 2017; on the following day, I had a long seven-hour bus ride home to reflect on the last three months. Did I accomplish what I set out to do? Did I become a better programmer? How would I describe my experience to others?
I’ll be direct and say my experience at Recurse was overly positive and I’m still in awe that it exists. In fact, when I woke on Saturday I could have been convinced the past three months were a dream and imagined. But the Recurse Center exists and it was amazing.
I still have a hard time describing Recurse to friends, family, and people and commonly get questions like:
- Don’t you already know how to program, why would you need to go?
- What do you do all day at the Recurse Center?
- I’ve heard of that boot camp, how does it compare to other ones?
- It’s tuition free, how does it exist?
To shortly describe it:
Recurse center is a tuition-free self-directed 12-week programmer’s retreat where you can focus on learning and passion projects with a group of self-motivated programmers. Recurse is not a boot camp in that there is no defined curriculum and it’s up to the programmer to decide what they want to work on. Whether your experience programming has been learning for three months or professionally for a decade. Recurse is a place for intellectually curious friendly programmers from all types of backgrounds to hone their skills and get significantly better at programming. It’s been around for over five years and is sustained by recruiting where if you’re placed with a partner company, the company will pay a finders fee.
I had first heard of HackerSchool from HackerNews a few years ago and vaguely remembered their rebrand to Recurse Center but I never thought I would ever have the opportunity to attend or even be admitted. When I was looking at options in October, Recurse Center, was definitely the long shot. At the time, I was freelancing for a startup and talking with local companies to start as a software engineer to continue doing full-stack web. After I submitted my application, I hadn’t considered Recurse as a real possibility until I received the first follow-up interview and the rest is detailed here.
After I was admitted and set my date for the November batch, I was excited but even more so anxious. I had a CS background but always said I was a better developer than I was a computer scientist. I had been around computers most of my life but never realized you could program them until much later. When I was started studying CS, I had done some HTML/CSS and had unsuccessfully learned to program C using Kernighan’s C book with Dev C++ on windows. Before starting RC, I had worked two engineering internships and as a full-time developer for the past 4 years. I wanted to figure out how to level up my skills and maybe experience the world of systems programming and data science.
The 6 Week Learning Curve
Recurse Center recommends you pick projects and learn through making and exploring. I never felt like I knew much about writing software until I started my first internship and was exposed to the broader world of real-world software development. But the unstructured nature of Recurse made it hard to figure out what to build. Being someone with a wide set of interests, its hard not to want to explore everything. I ended up spreading my efforts too thin between projects which felt like it hurt my overall output.
I had a consistent struggle of finding project ideas that I was happy with that lived outside of a week. I had a good talk with Glen, our first Recurse resident about ideas that inspired many of works and idea generation. The biggest starter was when in doubt start writing code and I set up wakatime goals with my editor to better recognize the sprints of productivity on my project; I worked on many small projects during the first few weeks in Python, Golang, and some Rust. For my large project Cronuts, I struggled with designing the “smart” way for building it and spend overly too much time worried about design. I worked on writing a dumb V1 on the fourth week that essentially parsed strings and ran programs on an interval. I was able to pair with another recurser, Fenimore who was more familiar with improving the design. I feel like micro-moments like these occur frequently throughout the space which made it such an exciting space to work.
Another space-centric portion of Recurse was check-ins. Check-ins are like software standups, where we go around in small groups and discuss what we were working on. I also participated in 6 weeks of experimental check-ins during the first six weeks of my batch where with a normal check-in we went the extra mile to have actionable asks to work together or have a group soundboard of ideas. It was a source for pairing and collaboration experiences between many of the recursers for me between the Fall 2 2016 Batch. Check-ins eventually became digital on Zulip which made it even easier at a high level for recursers to see what each other was working on during space and jump in.
The 2 Weeks Between Batches
After the end of the batch party, there was an almost two-week break between then and the next batch. Typically with overlapping batches, the outgoing batch leaves on Thursday and the new batch started on Monday. With the mix of ending on Thursday, December 15th, the batch didn’t feel like it formally restarted until Tuesday, January 3rd. I went home to Virginia for a while and worked on projects outside the space and caught up on writing. It felt much like everyone from my batch had participated in a six-week batch at this point.
It was nice to work on projects at home for a while but it was also the holidays. I took some time off and was able to experience the city and also hung out for Christmas with recursers. The batch spanned the full holiday season, Thanksgiving, Christmas, News Year and Chinese new Year. Although spending it far away from home, it was nice to spend it in the city with the Recurse community.
The last 6 weeks
When the new batch started, it felt like it was restarting from scratch and it really only dawned on me at that the 30 people in the previous batch had (never) graduated.
Coming back into the space after not being there for over a week definitely was a shock to the system. I was reflective of my previous six weeks experience and curious about the theory of Recurse Center; Every six weeks the Recurse Center refreshes a generation and has an entirely different dynamic developed in the room. It was sad that the 30 people I had met before the break were gone, but better yet there were 24 new faces. On average meeting around ~90 people during a batch (not including alumni) is exhausting but I feel like I was able to learn something from every recurser I met. Whether it was through an informal conversation, presentation or a pairing session I was grateful to have met all the people during my batch.
During my next six weeks, I decided to focus on the aspect I felt would be the hardest thing I could work on. Interview prep and algorithms, I had graduated college a few years ago and had been working primarily with high-level dynamic languages. I was able to form study groups and do self-study easily in the space. Recurse is what you make out of the experience and you could use the time and space to improve where you think you need most as a programmer. But interview preparation gets dull and I was able to also start on putting together a project I always wanted to start on my last week pulling in the knowledge I learned during Recurse into a project. (Building an embarrassing digital facsimile myself).
I spent a lot of time trying to understand the Recurse Center worked during my batch. The spirit of the community really made the Recurse Center the imaginative, creative, learning environment that is it and it truly wonderful. Genuinely a concentrated space for learning and focus where everyone pushes each other to do their best and work at their edges. My time there gave me an invaluable perspective and insights that could only be obtained in a place full of thoughtful generous humans. I was able to ask for help and also give help, reaffirming what I know so far and the first time feeling comfortable with calling myself a software engineer.
One morning instead of walking, I ran to the center. Partly because it was cold but also I was genuinely excited about I’d be able to experience another day of dedicated learning. So run, don’t walk and apply to the Recurse Center, it’s worth trying.