Matt Ambrogi

Recurse Center Final Reflection

For many months, Recurse Center existed to me only as a thing I thought might be cool to do. As of two weeks ago, it is had become a thing I did.

I finished my batch at Recurse Center a few weeks ago. With that, RC has transitioned from something that I thought would be cool to do, to something that I’ve done.

I had lots of plans for what to work on during my batch. I did both more and less than I intended. I did less of what I thought I’d do. And more of what I didn’t know I needed to do. Before my batch started, I tried to make a rough plan for what I wanted to focus on. I ended up checking off most of the boxes, but didn’t go as deep on any as I had imagined. I feel ok about that though because the most important things I got out of RC couldn’t have ever fit neatly into a plan or some bullet point list in the first place.

I gained a lot of technical experience, I learned a great deal from my batch mates, and, most valuably, I learned a lot about how to work, and live, well.

From a technical perspective, I showed myself that I can pick up new things quickly, learn on my own, and ship real projects. I took a breadth first approach and explored a lot of things during my batch.

  • I learned countless little things that have improved my ability to think about programs and programming.
  • I learned a lot about algorithm design. In doing so, I became a much better programmer.
  • I learned a great deal about Python.
  • I built several API’s and web apps with Django.
  • I picked up a variety of packages and frameworks (and the meta-skill of doing so quickly).
  • I learned all the fundamentals of React through a few projects and became comfortable with the idea of building web apps with completely separate front and back ends.
  • I spent a few weeks exploring applications of machine learning and came to understand some of the difficulties of model training. I made a few fun apps powered by GPT3 and models I trained myself.
  • I even wrote my first smart contract with Solidity and a front end to interact with it.

That’s just what I did on my own. Recursers consistently report that pair programming with batch mates is one of the most impactful uses of their time. I was no exception. Pairing with others exposed me to new languages, testing methodologies, and how to work with large code bases. Most importantly, it allowed me to see how more experienced programmers think while writing code.

I’m happy with what I got done technically, but I think the most valuable thing I learned at Recurse Center was how to work well.

Recurse Center provides a rare opportunity to have complete control over your day. I was encouraged to experiment with how I spent my hours, and I did. I experimented with time-boxing tasks, scheduling focused blocks at different points throughout the day, setting cut-offs for both individual tasks and my day’s work, creating time boxes for social interaction, and implementing boundaries to protect time for rest.

Through experimentation, I learned to structure my days so that I was consistently and sustainably productive, while having time for things I care about outside of work. I still have room to improve, but this was the best thing I got out of RC because it is a meta skill that is upstream of a fast growth rate as a programmer.

The optimal way to structure one’s day is not a static thing. It requires revisiting on a regular basis. But I’m happy to have learned how to execute the audit of my time and energy that is required to find that structure. It took me about seven weeks to find the most productive way to set up my day. But, the effort I put in to do so has already paid dividends in terms of productivity and how much I enjoy work.

Wherever I work next, I won’t have as much control over my time. But I don’t think that makes this exercise a waste. Some day I’ll be back working on my own. Whenever that is, I’ll be able to start with a reference point for what has worked for me in the past when it comes to structure. The lessons I learned could also be applied to help me be sustainably productive with side projects and writing outside of work. Even in my next job, the lessons won’t go to waste. Knowing how I work best when I have no constraints should be a very helpful datapoint for figuring out how to work best within constraints. And at a higher level, this experiment has helped show me the value of control over my time. Going forward, that will always be a top criteria for me when evaluating where to work. So, for these reasons, even if the structure I’ve created for myself can’t last indefinitely, it very was worth creating.

This past fall I decided to leave my job and was trying to decide what to do next. I interviewed a bit and had a few great product management opportunities open up, but I chose to do RC. I was tempted by the prestige, experience, and money that would have come with the PM roles. But I was burnt out from doing work that was boring to me. I felt that nothing was more important than jumping into something I was really excited about. When I looked at it that way, RC was the clear choice. I thought RC would provide a renewed sense of inspiration and motivation. And it did.

I see programming in a completely different light than I did before RC, and it’s one that I’m really excited about. I see the many ways programming can be a medium for creative work. I see programming as a craft that I am inspired to work on. This inspiration came from my batch mates, as well as a whole community of builders that I was introduced to across the online world.

I now view programming as something that aligns very well with the type of life I want to live and the things I’ve always enjoyed. At a higher level, I understand that this alignment is important to me. I plan to write more about this, but what I enjoy about programming (and most the other things I’m passionate about) is that is allows for: problem solving, exploration, individual expression, and the creation of beautiful things that were previously only imagined. I enjoy that it’s an individual skill, but on that is best practices with others. I enjoy that it is an art in that it honors creative use of skill.

I see a community of people out there who are just as interested in creating great things using programming as they are in exploring how to live well. I’m looking forward to contributing to that community.

I don’t know exactly when it happened, but at some point in my batch, it became clear that I want to step away from product management and into programming.

I’ve known for years that I wanted to create products. Until recently, I thought product management was the role I should play in that process.

But, for most my time as a PM, a little feeling was urging me to put more energy into programming. Starting RC, I finally acted on that feeling. Doing so has been revitalizing. I wasn’t sure if I’d love programming all day or feel that I was well suited to it, but I do.

I wasn’t exposed to programming until the latter half of college. I didn’t update my mental models quickly enough to see that I could pursue it. But I’ve finally had the space to immerse myself in it for a few months and, as a result, my passion for it has become clear. Thinking from first principals about how I like to spend my time, I can see that being a product minded engineer, not a product manager, is what’s most exciting to me right now.

I enjoy having my days focused around solving problems in the very direct sense that comes with programming. Most practically, programming is something I’m excited to get much much better at. What better way to do that than to work as an engineer? I think it’s likely that I’ll end back up in a product or leadership role some day. I think my aptitude for communication, product sense, and high level thinking make me a great fit for that. But, if so, I hope to take on that role as a true builder myself.

Starting soon, I’ll be looking for my first engineering role. First, I plan to take a bit more time to ride out this productive flow I’ve found. You don’t jump off a wave when it has momentum, you ride it out. At least until you see another one you want to catch. I want use the next few months to work on the skills I want to develop and projects I want to build. When I do start work, I want to do so knowing that I can provide value to an engineering team, working on a problem I’m excited about.

I’m immensely grateful for my time at Recurse Center and I don’t plan on stepping away from the community any time soon. For now, not much changes outside of my focus gently shifting towards finding my next job.

Great educational experiences dramatically expand your conception of what is possible. Recurse Center did just that by showing me just how expansive the world of software is. I feel good, because I see so many more paths out in the world than I had before. That’s a fun place to be and I look forward to starting down one. For now, I’m a nomad wandering around the world of software, looking for the next destination I’d like to travel towards.

- 17 toasts