All Articles

RET-My Time at the Recurse Center

It’s been nearly 3 months since I’ve “never graduated” from the Recurse Center, which has given me some time to reflect on the experience.

I have a complicated history with programming. I never took a programming class in high school, and when I got to college, I was completely lost in the Intro to Programming with Java course required for my civil engineering degree. It was one of the largest classes I took. Half the class had already taken AP Computer Science and were using this class as a “gimmie”. I did okay after having my sister spend several late nights explaining to me how arrays worked using flower pots and marbles, but the class just really didn’t “click”. In my other engineering courses, we used Matlab, which was dissimilar enough from Java that I never really got the hang of object oriented programming, and never had to revisit what I’d done in that single CS course.

All that changed when I started working as a structural engineer, and realized that most of the initial tasks I would be doing consisted of pulling data from a model into Excel, reformatting it to a specific shape, and then pasting it in another spreadsheet. I balked hard at the prospect of filling my days with that and taught myself VBA. When I got assigned to check shop drawings (looking at drawings and checking for compliance all day), I revisited a text-based interface FEA program used for the structural analysis. It wasn’t really its own programming language, but seeing the input files written and revised in Excel line by line using concatenation pushed me to explore Python, and I started going to PyLadies meetups in NYC, where someone very kindly taught me about homebrew and package management and got me set up for my first incursion into Python.

When I considered PhD programs, I wanted one that would let me further develop my programming skills, so I chose a project on computational design of flexible structures, with an explicit focus on numerical simulation and design. There are many things I wish I had known prior to this endeavor, but my advisor was going through a period of major restructuring with his research group, and the experience was not what I signed on for. I hadn’t been prepared for how cutthroat academia could be even in the same department and in the same group (having your supervising post-doc write and publish a paper about your topic without telling you beforehand is … something else).

The problems I wanted to solve were often dismissed as “trivial” or subject to armchair explanation with little discussion, followup or resolution. Since the project was computationally heavy, I grew to loathe programming as a result of hearing on a regular basis: “Well X could code that up in a few hours, I don’t know why you’re having problems with it”, which only eroded my enthusiasm and confidence. The research environment was both fratty and intense; any unhappiness with your project was solely your fault, since you were so fortunate and lucky to be part of this exclusive group.

I didn’t leave as soon as I should have, and by the time I did, I had very little faith in my ability as an engineer and a programmer. I took the first job I was offered with a company that I had previously interned which had a nascent computational design group. However, I was hired as a structural engineer, not a software developer. This was a jump from the frying pan into the fire, leaving one toxic workplace for another toxic mega-project. I was sucked into fixing Grasshopper (visual programming) scripts and VBA headaches. In hindsight, this was almost a blessing, because working with bad programming made me want to work on good programming again. To find an outlet from 60 hour weeks, I started going back to the PyLadies meetups. Thanks to their monthly study groups, I started to enjoy programming again and built a few small Python programs with an Excel interface to use at work.

I first heard about the Recurse Center in December 2018, thanks to a tweet a friend forwarded, and pretty much immediately dismissed it. I felt very underqualified after looking through some of the people on Twitter with @recursecenter in their profile. Still, one of the things that struck me the most after looking through the website and application were the RC Social Rules.

  • No well-actually’s
  • No feigned surprise
  • No backseat driving
  • No subtle-isms

Unusual yes, but I’ve found that unspoken and implied social norms don’t necessarily lead to internal group harmony, as people have very different ideas of acceptable language and behavior. If my time as a researcher had included these rules, I wondered how much more I would have learned (and if I would have stayed).

Moving into the spring of 2019, my programming endeavors were not successful at the office. Despite writing documentation to help pass internal QA/QC, I was explicitly told by my PM that programming was not my job and should be left to the small computational group that had no practicing engineers and very rarely interfaced with the structures team. In a fit of pique, I started putting together my RC application, figuring that if I’d never have time to learn and improve on the job, maybe taking a step back and really focusing on programming was what I needed. My husband and I were already planning on moving to the west coast, so I figured that this was the right time to apply, because the worst thing that could happen is that I wouldn’t get admitted.

I got my acceptance to RC exactly two weeks from the start of the Fall 1 Batch, and gave my notice at the office the next day. Most people assumed I was going to a “bootcamp”, and I just got tired of correcting them and gave up, since people seem to have a hard time grokking the concept of self study.

When I got to RC, I was one of the (many!) people on the first day to raise their hands to say they didn’t feel like they were supposed to be there. There were people that had been programming for 10 or 20 years at major tech companies, multiple startups with huge resumes. But the amazing thing about RC is that there is no intimidation factor. Anyone can (and will!) ask questions; everyone is there to learn. The Recurse Center has created a unique environment for curiosity to flourish and brings together people that genuinely enjoy learning AND teaching. Its environment fosters collaboration through structured and unstructured activities you can opt in on. While there are regular coffee chats and pair programming facilitated by bots, people host impromptu workshops on whatever they want, and form study groups for whatever people are interested on at the time (while I was there, some of the active study groups included category theory, machine learning, GLSL, and Haskell).

Here’s a list of just a few of the things I worked on at RC:

  • Learning React
  • Learning D3
  • Starting functional programming in Haskell (I didn’t know Haskell existed as a programming language prior to RC!)
  • Learning and using Cython
  • Doing a deep dive with Python intricacies
  • Building web applications with Dash and Plotly
  • Acting as a rubber duck for other’s Javascript problems
  • Contact juggling!
  • Giving a technical talk on parsing a terrible conference website
  • Giving a localhost talk about structural connections and why they’re important and why designing them is a PITA
  • Giving nontechnical talks on footbridge design, kittens, and knitting
  • Mastering emacs and the joys of org-mode (an ongoing endeavor)

One of the most valuable lessons I learned in the first half of my batch (and then applied in the second half) was to ask more people what they were working on. It meant I didn’t accomplish as much on my own projects, but I got a much greater breadth of knowledge that I can now use to connect the dots moving forward. RC also helped me overcome lingering issues I had with giving presentations, as well as giving me the confidence to say that I am a software developer.

My experience is not the experience other people have, because RC is whatever you make of it, it just gives you the time and space to pick a path. RC also gave me the opportunity to meet people from all kinds of backgrounds and programming experiences, which I think was even more valuable than networking with the computational people that are already in the AEC industry. Because software is such a niche part of the industry, the main players are well established and pretty inaccessible. I’ve just not been at the right conferences or in the right circles to make those kinds of connections, especially after leaving the computational research field.

My Recurse Center experience was everything I’d hoped to get out of my research experience and more. Having the time to sit down and write software was a huge boost for my resume and for my job interviews, as I could finally develop ideas I’d had bouncing around my head for the past year. After Recurse Center, I was able to find a job with one of the few firms in the built environment that has an extensive open source code base. Even better, I didn’t have to choose between structural engineering and programming, and for now at least I’ll be able to pursue them in parallel. Though my time at RC is over (for now!), the motto of “Never graduate” is one I’ll take with me going forward. I can’t thank the faculty and fellow Recursers enough for making my Recurse experience so great and memorable.

Published Jan 18, 2020

Striving to stay curious.