Matt Ambrogi

Worried and Happier: Recurse Center Half Way Reflection

Worried and Happier

"Strange as this sounds, they seem both more worried and happier at the same time. Which is exactly how I'd describe the way lions seem in the wild."

Thatā€™s a Paul Graham quote. Heā€™s talking about founders who have left their jobs to do YC. But it is also exactly how'd I'd say Iā€™ve felt the last six weeks.

I couldn't be more grateful to wake up everyday and work on what I want to do. Itā€™s freeing to work without the external pressures of stand ups, meetings, and updates. But a new pressure, which is the product of a desire to use this time well, has taken their place. Itā€™s somehow more intense but preferable. Itā€™s a pressure that makes me feel more alive and engaged, as opposed to burnt out and exhausted.

Using the rest of this time well is important to me. So I'm reflecting a bit on how I've spent it so far, and how I'd like to spend it going forward. This post is the output of that reflection. I'll walk through what I've done, what I feel I've gotten out of RC so far, what I'd like to do over the next six weeks, and how I plan to get it done.

What I've done so far

I dedicated the first week of RC to meeting people, orienting myself, and reviewing some old projects. The third week, I was gone Tuesday through Sunday on a snowboarding trip. Effectively I've had four working weeks. Here's some of the things I've done in that time:

What I've Got Out of RC So Far

It feels like I really just got into a groove. Some days it feels like Iā€™ve progressed dramatically. Other days it feels like I wasted my time. But writing the list above, it feels clear that I've already got a lot out of this experience.

Maybe most importantly, I've learned that I love focusing my day on programming. That's a huge realization that has implications on what I'll do with my career after this. It has made me think a lot about which types of work I am best suited for and enjoy most.

I've become far more confident talking about all aspects of programming with anyone. Recurse Center is amazing because within hours of each other I might have a conversation with a beginner and someone who has made major contributions to their field. Both will be extremely interesting and kind - and I have just as much to learn from both if I ask the right questions.

I've begun to think differently about how to learn and direct myself efficiently. I think Iā€™ve even got a bit better at both.

I've dramatically increased my confidence as a programmer. Since I started college, I've felt that with hard work I could get up to speed in most technical domains. But now Iā€™m really proving that to myself with programming. Itā€™s been fun to put effort in and see progress. For example, learning the basics of React in a week by doing a project. I feel that, if given the time and opportunity, I could get up to speed and contribute meaningfully to many projects and problems. Most likely, I am being overly confident. And some days, especially on more theoretical stuff, I feel like I just don't get things. But in my experience with learning hard things, confidence is the right approach, as it is often a self fulfilling prophecy. It just has to be balanced with self honesty.

Lastly, I've got to work on things that excite me. Maybe for the first time in my life. That feels both good and right. Much like the way you feel after going for a run. Progressing on something I care about, whether thatā€™s a project or theoretical understanding, feels phenomenally satisfying. That alone is worth stepping off the beaten path for.

What I Want to Do Over the Next Six Weeks

At a high level I want to keep working on projects that interest me, while focusing on learning the underlying concepts that will carry over to whatever I ultimately go deep on after this.

I want to primarily split my days between three things: working on projects, studying algorithms, and working with other Recursers.

As far as projects, I've decided that I'm not interested in just trying to get good at any one marketable skill. Instead, it's more important for me to explore different types of projects and, if I'm lucky, to figure out what it is that I want to get good at. Here's a few things I want to work on over the next weeks:

In regards to studying algorithms, I both want to and feel I should. There is an undeniable reality that many good software engineering roles and only available to those to can pass algorithmic tests. If I choose to pursue one of those, I want to be able to pass the tests. But I'm also just interested in algorithms. I've always enjoyed mathematical thinking and was really engaged by my brief introduction to algorithms in college. I think studying them will be beneficial not just for my job prospects, but for my programming and, more importantly, thinking in general.

Lastly, I want to make sure I interact meaningfully with other Recursers almost everyday. When programming I'm apt to get sucked into problems, look up, and realize I've been heads down for hours. That is often good and feels productive. But at RC the opportunity cost of not talking to others is too high. There are so many fascinating people here. Talking to them has already exposed me to new things I want to learn, shifted my thoughts and approaches, showed me new tricks and workarounds, and always been enjoyable. If I just wanted maximize the number of hours I spent programming per day, I wouldn't need RC. Instead I'm looking to optimize for the most transformative, educational (even enlightening?) experience I can have in 12 weeks. People, more than programming, are what make that happen. So I hope to carve out more time to pair with others, have my code reviewed, review other's code, and discuss languages, frameworks, tools, ideas, and approaches.

My Operating System for the Next Six Weeks

The following is an instruction manual for myself and some ramblings around things I need to keep in mind in order to stick to those instructions. This may not be very interesting to anyone outside of myself.

The Plan

I want to impose some structure on my time to help me do the things I want to do. Iā€™ve settled on a daily process I plan to try to stick to. Everyday, I will:

An ideal day for me would look something like this:

Thoughts on This Plan

This process is intentionally simple and unambitious. For a number of reasons, I think that is the most effective type of process. Iā€™ll outline why I think thatā€™s a good approach for me.

The bullets above are minimum expectations. So itā€™s not that spending an hour and a half focused on a project is a great day, but that I want to commit to spending at least an hour a half every day.

A piece of advice that Iā€™ve noted and found useful for myself in the past in advice in regards to writing, programming, and other creative fields is that it's good to set daily thresholds and best to make them surprisingly low. That's because consistency is so powerful, that ensuring a system that will allow for it is the most productive strategy.

An overly ambitious goal will only lead to burnout. Meanwhile a modest one like writing one hour a day is doable. And once you get in the flow of that you will often find one hour turns to two or three. The three hour goal is most likely to lead to disappointment. At the surface, this feels amateur. Like only a beginner would set up such a simple process. I remember once hearing Jerry Seinfeld talk about helping his daughter set up a writing routine. He described the interaction on a podcast.

I told her, ā€œJust do an hour.ā€ Thatā€™s a lot. She says, ā€œIā€™m going to write all day.ā€ ā€œNo, youā€™re not. Nobody writes all day. Shakespeare canā€™t write all day. Itā€™s torture.ā€

So maybe an hour isnā€™t only for amateurs.

The same logic applies to my 10:00am start time. That is pretty late. But I know I can make it happen every day and will thus avoid stressful mornings feeling that I am behind - which can ruin clarity for an entire day. Similarly set goals that work into 45 minutes blocks. I chose 45 minutes because I can string together many blocks of 45 minutes on, 15 minutes off. But that doesn't mean I'll force myself to stop at 45 minutes.

And so my process is simple: try to hit those goals everyday and try to make as many days as possible look like that ideal day.

Some days I won't go to the gym and will start work early. Some days I'll need a brain break. That's ok.

Splitting my Time

Another thing I need to be conscious of is splitting my time well between my areas of focus: projects, computer science (algorithms for now), and people. For me the issue is not getting locked into something, but breaking out of it.

Because I know that I have a tendency to get absorbed in what I'm working on, I may need to experiment with creating a set block for algorithms - either before or after project work. That's something I'll keep an eye on over the next few weeks. Getting the system right out of the gate is less important than continuously observing, making objective judgements on whatā€™s working, and adjusting accordingly.

This same tendency can make it hard to break out of work to pair, chat, or attend a meeting. I'm hoping setting time thresholds and committing to dedicating my mornings to getting most of my focused work knocked out will make it easier for me to shift gears in the afternoon to more exploratory time. I think the single most important element of my process is getting a few hours of focused work done in the morning.

Overall, I'm hoping to practice being more binary in my days. Working when working and playing/relaxing when not.

It's easy to feel a constant pressure to do more as my savings dwindle with each day of Recurse Center. But that feeling is as unproductive as it is unhealthy. And so my hope is that I can stick to this and then feel free the rest of my day. If I'd like to work more, I can. If not, go play.

A Few Thoughts on Projects

Because my goal is to explore a breadth of things, it's critical that I let go of any perfectionist tendencies. Especially when working on projects. I want to push myself to move on quickly.

Iā€™ve noticed that if I work on a project for a week and a half, 80% of the learning happens in the first week. Usually I'd be better off abandoning the second half week of work. Jumping into a new project would keep me in a higher learning rate state. This won't always be true. But it's something I want to watch.

Likewise, I want to push myself to work at the edge of my ability. If I am confident I can do something on my own, I should wait until after Recurse Center to do it.

Diving Into the Next Six Weeks

To review, here are some heuristics I plan to try to stick to for the remainder of my time:

Lastly, I'll note that this coming week is going to be a unique one. I've decided to dedicate the rest of this week to reviewing algorithms and getting to know the new Spring 1 batch. I'll be spending all of my focused time working on getting a place where I feel comfortable starting daily LeetCode work. Mostly, I'll be reading through Skiena's The Algorithm Design Manual.

Itā€™s hard for me to write, reflect, and work all at once. So thatā€™s meant taking a few days of this week to really think through what I have shared above. Iā€™ve had to fight back against a feeling that I should be doing programming related work. But Iā€™m hopefully that taking a few days to stop and think about how to work and what to work on will more than make up for a few lost days of progress. Lions in the zoo have their food left out for them. Lions in the wild have to stop and think about their next meal. But in return, they get to choose what they eat.