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.
Conclusion
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.
If you found this post useful, please
support me on Patreon
so that I can write more like it!
To get notified when I write something new,
follow me on Bluesky or
Mastodon,
or enter your email address:
I won't give your address to anyone else, won't send you any spam, and you can unsubscribe at any time.