I recently left my day job at Instamojo to join the Recurse Center, where I’ll be spending the next 12 weeks on becoming a better programmer. Today was the first day and following are my notes on it:
The day started with a round of introductions by the RC staff, the current batch(spring 2’s) and our batch(summer 1’s). It was enthralling to meet a bunch of people from different countries, while a lot of them came from non CS backgrounds like Math, Biology & Neuroscience.
Someone said that you should set expectations from yourself, but also be prepared to get rid of them.
I was both excited and nervous at the same time. The excitement came from the opportunity to meet so many amazing people from a diverse set of backgrounds, while the nervousness spun out of the uncertainty lying ahead of me. It turns out, a lot of fellow recursers felt the same and it was definitely relieving to know that I was not alone. Dave and Nick ran an exercise where everyone spoke about what made them excited and nervous. These looked like this:
Excited
- Pair programming
- Meeting everyone
- To have a break
- To make a difference
- Find a community
- C++
- Meeting everyone
- Becoming a better programmer
Nervous
- Reaching the goals
- Slacking off
- Big city
- Getting stuck
- Not making the best use of this time
- Getting lost with so much information
- Summer 1’s being twice as large as Spring 2’s
Choosing and scoping projects
After a brief introduction we had a discussion led by a few spring 2’s on Choosing and scoping projects. This seemed to be a very common concern among the new recursers and spring 2’s helped us with advice on this:
- Embrace the FOMO - At RC, there’s always a lot of things happening simultaneously and it is natural to want to do all of them. However, it is perfectly fine to miss out on a few things.
- Use the first week to not do any of your own work. Rather use it to talk to others and look out for things you could work together.
- Constantly self reflect on your goals and progress towards them. Re-calibrate accordingly.
- You could hit a barrier while pursuing a project and not seem to be able to make any progress. If you are stuck for more than a day, this is a good time to take a step back and assess the barrier. Ask yourself if it is relevant to the goals you’ve set for yourself. If not, feel free to ignore it completely.
- Keep things moving: While working on a project, things might get repetitive after a while. Feel free to switch contexts. Leave the repetitive work for later, because the end goal is to learn as much as new stuff as possible.
- Work outside your comfort zone. Each day it keeps getting higher and higher. Keep pushing yourself to stay outside the comfort zone at all times.
- Spend some time at the end of the day to reflect upon what you accomplished in the day and note down what you learned out of it. Zulip check-ins are a great idea.
- Have a sidetrack project. It could be something like learning a new programming language or a small script that you’ve always wanted to write. This helps when you hit a wall in your main project and can’t seem to be able to move forward. A switch in context helps.
- Sometimes half finished projects are as good as finished projects, because of what you learned out of working on them.
- Publishing projects is a lot of work. Documentation. Cleaning up stuff. Don’t look to publish something because it takes a lot of time. Feel free to work on something else when you’ve learned what you wanted to out of a project.
- There will be a constant struggle in finding the right compromise between breadth and depth.
- If you are stuck at something, talk to someone.
- If you constantly feel like a project is a burden, it is a good idea to stop working on it.
- Sometimes you could find yourself at a cross roads with a lot of ways to do the same things. Consult someone else. Try not to get lost thinking about all the different ways.
- Scope out your projects well enough before you start writing code. You should have a clear picture of what you’ve set out to do.
Creating your own structure and accountability
This was followed by a similar discussion on Creating your own structure and accountability. RC is completely self directed. One could play games or browse Facebook all day and no one would bat an eye. As a result this was another common concern amongst the newbies. Here are a few points that came out of this:
- A fixed routine is helpful. But also don’t be too rigid about it all the time.
- Set your own goals.
- Try the pomodoro technique to get things done. Set a 25 minute timer and turn off all distractions. You should scope out a task to be completed within that 25 minutes and stick to it. It will help you stay focused at the task in hand.
- Get into a flow of state. This could something like cleaning up code or rearranging a few segments of code. This helps you get started if you are struggling on that.
- Pair program with someone else. Be the navigator.
- Share your work with others. This drives you to stick to your goals.
- Someone also suggested to look into Hammock Driven Development. The idea is to step away from the computer and think about the problem at hand, maybe with a pen and a paper.
Common struggles and how people deal with them
The last discussion on the day was on Common struggles and how people deal with them. This started with funny debugging stories.
- Talk out loud when stuck. Use rubber duck debugging. There are a few rubber ducks at RC as well.
- Your priorities can change over time. Adjust your expectations along the way.
- Do not try to learn everything at once. Step back and simplify things.
- Everyone has their own methodology. Feel free to find your own.
After a short break, recursers did a bunch of 5 minute presentations. Each of them were unique and fun to watch. The day ended with a quick reminder about the RC social rules, which are:
- No feigning surprises
- No “well actuallys”
- No backseat driving
- No subtle -isms
It has been a long time since I met so many people in a single day, and the first time that I was sharing the same roof with people from such a wide range of backgrounds. It indeed was an overwhelming day with a lot of information flowing in. All the people at RC are very friendly and welcoming. They are all interested in what the other person has done so far and wants to do in the future.
Here’s to an amazing 12 weeks!