The Recurse Center, formerly known as the Hacker School, is a well-known incubating space for hackers from all walk of life who feel like taking a break from whatever they are doing and embrace the freedom of becoming a dramatically better programmer.
In 2016, having been programming for years, I was interested and certain it would be a no-brainer for RC to sign me up. My first enrollment was declined. I did not even make it to the interview. I felt demoralized and burdened with the question of why my skills were not accepted at RC. Looking back, I am pretty sure it was not so much about my programming chop. Being admitted to Summer-2 batch now, I have had a year to grow up as a person and a programmer, and that showed in the code I submitted, the answer I gave to each question, and the conversation I had during my interview with an RC alumni David Brenner.
Recurse Center is itself an experiment. Unlike other coding bootcamp, it does not have any curriculum or structure. It just gets a bunch of coders with different background, experience, and culture together in one giant space and see what each of them do with that (and that just might be why it changed its name from Hacker School).
What I’ve Learned so far
RC is an extremely vibrant, distraction-free co-working space and that I can get really productive at. People here respect each other and are really nice to one another. However, apart from that, I am struggling to establish a connection here. It is the lack of structure that is distracting for me at times. I had this sense of having to come up with something to learn or work on, pair-program rigorously and rush myself into learning more. It is really hard to concentrate when people around me are talking about doing all sorts of cool stuff like ML, compiler, Rust, etc. and already pair-programming with one another on a daily basis. Instead of getting the feeling that everyone is coming from different places and doing different things in different ways, seeing people organize around a few hot topics like Machine Learning does make me feel like a cast-out than I wanted to. It is simply overwhelming.
To add to the mix, the fact that I came from a Southeast Asian, non-English-speaking culture also contribute to the Impostor Syndrome I’m experiencing (if it even is!). In a weird way, RC has managed to rattled my confidence despite the fact that I am maintaining an open source project, having a job with an awesome startup in Mountain View, and have given several presentations before.
A fellow batchmate Kenneth Alexander Durrill shared a link to this video which somewhat helped me with overcoming the Imposter Syndrome at RC, which I found very inspiring.
But then an idea started to dawn on me — what if this emergence might just be what RC has intended to create in the first place? No, scratch that. It doesn’t matter if it was the intention. The instinctive urge to belong and cluster embedded in all of us — the very one that’s driving me insane as I was hacking on every imaginable things I could come up with at RC — might have been the driving force behind every progress in humans’ civilization. Along the path of history, some might choose to handle this feeling of insecurity by herding, why others choose to break out. Some survived the test of time by teaming up and grow; Some did the same by being secluded, reflect, and come back strong. In history, we could see cases of great inventions and breakthroughs both achieved by teams and singletons alike. Although it goes without saying that most of both camps failed.
There is always a primitive part of the psyche — something referred to as the Lizard’s Brain — that’s keeping humans from embracing change. Resisting it and throwing yourself out of your comfort zone is uncomfortable and awkward, but it is of course what Charles Darwin had long proven as the way life evolves and progress — to embrace change and adapt strong.
It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change.
— Charles Robert Darwin (1809–1882)
With all these brewing in my mind, I felt the need to formulate some questions and answers them to establish some grounding and not being easily rattled and pushed in every direction. Here are some:
Why I code?
It isn’t so important why I started writing code as to why I am coding now. Reasons for someone to do something change and adapt over time just as he grows. You would be surprised that many don’t even have a clear reason why they do or did something, and that’s normal. In my case, it might have started way back when I was just a kid when I first built a mechatronic out of cardboard and bolts and sold it to my sister, or when I create a stereoscopic card of two monsters on a collision course and sold it to a friend. That was why I felt so attracted when I first started coding 3D object in VB for a software I was using, used Processing to generate cool generative patterns, and got my hands on my first Arduino project years later.
For now, I code because it’s the way to express myself. It’s certainly relaxing and rejuvenating to see something as much as a command line program runs in respond to my input.
Do I want to be a builder or implementer
I think a very important question I (or anyone) should ask myself while at RC is this: Do I want to be a builder or implementer; A hacker or programmer?
Do I want to learn how to make the most out of the tools and build something, or do I want to learn to make those tools? Which one would benefit myself more, and most importantly, is dearer to my heart.
A builder or hacker tends to find solace in seeing things DO run, while an implementer or programmer tends to seek understanding HOW things run. A good, yet entertaining metrics would be the movie camps —
- Star Wars or Star Trek
- Interstellar or the Martian
- Stanley Kubrick or Stanley Kubrick (who doesn’t love him?!)
I guess everyone has a little of both, more or less. But a builder and programmer tend to have different taste regarding movies, music, books, without knowing. Builders also tend to be more of a visionary, but get bored as fast as their mind wander, while the implementers are generally more patient, consistent, and logical because to deeply understanding something takes time.
Why is it important to understand what I am? Because according to what I have read, despite the myth about doing something you’re passionate about, the reality is doing something you are good at or has the tendency to be always beat it in the long run. Because passion can be short-lived, especially in the face of obstacles and steep learning curves. However, when you are good at something or you’re more natural at it, you have a better time doing and maintaining it. You enjoy doing it and end up being more productive with small wins instead of losing so many battles just to win the major one, which you might never reach because of all the torments from the defeats.
It all boils down to …
Ultimately, it all boils down to what is most important to you than others. Life is all about taking chances and shuffling priorities and tuning out the noise. This is because, for better or worse, we do not live forever. And for us mortals, we have only so much time to do things, let alone make a mark. As Karl Sagan said,
We are like butterflies who flutter for a day and think it is forever.
— Karl Sagan(1934–1996)
The priority for me (and hopefully for you too) is to grow out of the cocoon, carry on and leave something behind.
I am going to spend this week settling down, easing myself, having good times with my family, and setting the right priorities. Because unlike a functional language, everything in life connects and creates side effects to one another.
Edit: I finally settling in to some thing I might have fun hacking for the rest of the time at RC — Digging head first into game programming, learning Lua and C++ in game programming, and learning Kotlin and Clojure as Java replacement to hack lwjgl lib. 💪