How to become a better programmer

This week I started my batch at the Recurse Center (RC), which is a NYC-based organization that helps people improve as programmer. When I applied I was sure that I wanted to improve as a programmer, although I didn’t know how I was going to achieve it. After just 3 days at RC, I think I know what it is going to be like.

I just realized today that up until now I’ve felt like I’ve been using the same tool for all my tasks. As if I had a hammer which worked great to drive nails and did the trick for making holes. You can imagine the holes weren’t neat, but it was enough for the bigger project to work. But the day finally came when I wanted to loosen a bolt. I tried all the ways that I could think of, but the hammer didn’t work. I kept researching and thinking how I could use it to loosen a bolt, as I thought the problem was that I didn’t know enough about hammers. The hammer just didn’t work here.

I’ve paired for the first time during this week. Pairing — pair programming — is basically having two people work on the same problem, at the same computer, sharing their thoughts. The best thing is not when your partner knows the solution, but when you work together to find it. To keep the previous analogy, if your partner comes with a wrench and loosens the bolt, you realize that you need a wrench, which is a big step forward. But it is even better when your partner comes empty-handed, and after inspecting the situation discards using the hammer and ask you for your wrench.

The thing is that all this time you had a messy box by your side with some tools mixed together, but you didn’t even care to look there because it wasn’t probable that you’d find something useful inside. However, now you’re looking for a wrench. The thing is that you do have one, but it was very unlikely that you were going to find it in that box if no one told you that you needed a wrench.

To become a better programmer this is what I think I should work on:

  • Don’t assume that a problem must be solved with a specific tool. Explore other options.
  • Don’t be afraid of looking in my toolbox. It may be very messy, but I’ve been surprised with the incredible tools that can be found there.
  • Keep my tools ordered. It will be easier to see the options I have, and I’ll be able to detect if I need to acquire a certain type of tool.
  • Pair as much as I can. Many times when you struggle with a problem you get biased in favor of the solutions that you’ve tried. Getting a new mind to look at the same problem will probably make you move towards the right direction.
  • Continue with the craft.