Skip to content

The Recurse Center and the joy of learning

Published by Martin Kleppmann on 11 Oct 2015.

I have just spent an excellent two weeks as a resident at the Recurse Center (RC). As RC is a somewhat unusual institution, and several people have asked me about it, I would like to take this opportunity to reflect on what I have learnt.

Recurse Center describes itself as an educational retreat for programmers. Anyone can apply, and if you are accepted, you get to spend three months at the Recurse Center in New York. It is free to attend. You are part of a batch, a group of people who all start at the same time. A new batch starts every six weeks, so the first and second half of each batch overlaps with the preceding and following batch, respectively. A batch consists of about 15 to 30 people.

What do you do during those three months? That is largely up to you. There is no curriculum, no exam or dissertation. The goal is simply for you to become a better programmer during that time, through self-directed study and practice. How you go about that goal is your choice, but RC provides support structures to help you achieve the goal.

The three months give you time to focus, without the distraction of a job or project deadlines. This is your chance to learn challenging new things: three months is long enough that you can build up a significant amount of new skills, but short enough that great focus is needed.

At the end of the three months, RC will help you find a job at a good company, if you want one, but there is no obligation to take a job. Alumni often stay involved with the RC community long after their three months have come to an end.

The culture of Recurse Center

The most striking thing about RC is the care with which the atmosphere and culture is designed. Everything is geared towards providing a supportive environment in which everyone feels welcome, no matter who they are or what background they come from.

Most technology companies and events I’ve seen are dominated by straight middle-class white and Asian men. I count myself towards that group, and I don’t have any problem with white men per se, but it’s an extremely biased sample of humanity, and such bias is not healthy for a community. Fortunately, the Recurse Center is different. The people who go to RC are a much more representative cross-section of humanity (in terms of ethnicity, gender, nationality, sexuality, social background, etc) than most other venues in technology, which is wonderful and heartwarming.

I attribute this diversity directly to RC’s conscious efforts to create a safe space in which everyone feels welcome. This includes explicit social rules to avoid bigoted (sexist, racist, homophobic, transphobic, ageist, ableist, etc) language and ideas, and encouraging everybody to ask questions and discuss technical topics without fear of being seen as stupid or clueless. Not knowing something is celebrated as an opportunity to learn, not a fault to be embarrassed about.

In the batches I met at RC, some people had been programming for decades, and some only for a few months. Some had built websites or mobile apps, some had built machine learning systems, others had built low-level communication systems for satellites. Some people had non-computing backgrounds such as oceanography, microbiology, religious studies, linguistics and poetry. But all had an enthusiastic desire to learn.

Everyone is a beginner at something

One thing I had wondered about before coming to RC: if people have such vastly differing amounts of programming experience, how can people productively help each other? If they are all in the same room, won’t the beginners get intimidated and overwhelmed, while the experienced software engineers get bored?

After working with a few members of the batch, I realised why the varying levels of experience are not a problem for RC: everyone is a beginner at the thing they are exploring at RC. If you are an experienced software developer, you don’t go to RC in order to keep doing the same things as you did at your last job, using the same languages to build the same kind of application. No, you probably join RC because you want to learn something completely different.

Your time at RC is an opportunity to “level up” your craft. If you’re an experienced web developer, how about learning a functional language like Haskell or Idris? If you’re a veteran C++ hacker, maybe you want to learn about formal methods like Coq or TLA+? Even if you’ve been writing software for 20 years, you’re a complete newbie when you move so far out of your comfort zone – so you’re actually not that different from someone who is trying to get their first small piece of Python code to work. You’re a beginner too.

At RC, I learnt to appreciate that each individual person has a rich and interesting background, and that it’s actually not particularly important what percentage of that background is in programming activities versus non-programming activities. There is nothing about programming that makes it in any way superior to, say, oceanography or poetry. All of us are just trying to learn something new, and occasionally one person can help out another because they have more experience in one particular area, but in another area those roles may well be reversed.

The joy of learning for its own sake

Another thing that struck me about RC was the breadth of different things that people wanted to learn: from fairly mainstream things like game programming in JavaScript, to obscure experimental programming languages that I hadn’t even heard of.

Each person has their own reasons for their choice of technology to work on, and no justification is required. Outside of the Recurse Center, people tend to focus on marketable skills, i.e. learning things that are likely to help them in a job. Within RC, although getting a job is certainly a goal for some people, the marketability of a technology does not seem to be a dominant factor in Recursers’ choice of technology to work on. RC is not a training program for web developers or mobile developers!

In practical terms, this means that some people will choose to work on things that are unlikely to directly help them in a job, but which are simply interesting (e.g. creating a new programming language). I find this non-utilitarian approach wonderful. Nobody will criticize your project for not being “useful”: what matters is what you learn from doing it.

Recurse Center is not about startups. It is specifically about sharpening your technical skills, not about building a product. During RC you will probably work on projects, because the best way of deeply understanding an idea is to apply it to a concrete problem. However, the focus is on your learning, not on the artifacts that you create as a side-effect of learning.

Only at the Recurse Center have I seen people genuinely giddy, bouncing up and down with excitement, at the prospect of trying out some new language or technology. I don’t think I ever saw that while studying computer science at university. This joy of learning something simply because it is interesting, this intellectual curiosity, this childlike sense of wonder, is something we must treasure.

“Levelling up” for experienced programmers

There is no doubt that the Recurse Center is ideal for beginner programmers: it is an incredibly welcoming, supportive, encouraging environment where you can learn a lot in a short time. But is it also worthwhile for experienced software engineers?

For the last year I have taken a “sabbatical” (read: been unemployed), doing only occasional bits of consulting work, and otherwise focussing on on writing my book, doing research, and giving talks about my work. It has been incredibly rewarding, because I have had the opportunity to think through and understand topics in much greater depth than I could have done whilst working a job and meeting project deadlines. I have worked hard during this year, and I feel that I have grown substantially in my craft.

Now, I understand if such a completely self-organised sabbatical is not for everyone. But when I look at RC, I see an opportunity for other experienced programmers to have a similar personal growth experience as I have enjoyed. In the supportive environment of RC it is easier to leave your comfortable software engineering job and set sail into uncharted waters.

If you want to help create the future of software development, rather than just coming along for the ride, you will need to bring together ideas from very different areas of computer science, and even incorporate ideas from outside of computer science. You will need to learn about things that do not have much commercial value today, but which will make programming better for everyone in ten years’ time.

It is unlikely that you will have the time to learn those things and take such a long-term view on the side during your day job – you will need to make dedicated time. A sabbatical is a good option, but it requires a lot of self-discipline to stay on track. The support structures of RC can help you take your craft to the next level.


If you’re a programmer (no matter what your level of experience), do take a look at the Recurse Center about page, FAQ and user’s manual. If the ideas there resonate with you, I can warmly encourage you to apply.

If you’re at a company that hires software engineers, you should totally work with Recurse Center to recruit Recursers. They are people who are intellectually curious, approach their work with joy, and treat others with respect. The companies I have spoken to which recruit through RC have been very happy with the people they hired.

I personally spent only two weeks at RC. I would have loved to stay for longer, but (a) my partner can’t get three months off her job to stay in New York, and (b) I’ve just started a new dream job, in which I will continue to have great freedom to explore, learn and teach (more on that in a future blog post).

The thing that impressed me most about the Recurse Center is how they have succeeded in creating a respectful, thoughtful, encouraging atmosphere that is welcoming to people from a very diverse set of backgrounds. The tech industry would be vastly improved if more people would learn from RC’s example. I, for my part, will try to carry that spirit of RC with me.