Reflections on learning to code — Entry 1: CS50x weeks 0 & 1

December 25, 2018 (Merry Christmas)

Why code

For a long time now I have been flirting with the idea of learning how to code. There are many reasons for this, but at the end of the day it boils down to 2 that are worth mentioning.

1. Coding is unavoidable

I believe that in the near (or very near) future, the ability to speak to computers will be a basic prerequisite for being a functioning adult. At least a functioning working adult.

2. I want to shift from being the person who has cool ideas, to the kind of person who has cool ideas and can prototype them over a weekend.

I have too often been in the frustrating situation of having ideas, not knowing how to execute them, and not having a wide or strong enough network to be able to ask people for help.

Reasons for previous failures

I’ve failed at this many times before. Although, I guess if I’m still trying, then I haven’t really failed. But I’ve also not made any significant progress.

Reasons why I haven’t really progressed are:

  1. I kept thinking I needed friends to try with me. So we could motivate each other. When they struggled and lost interest, I also lost motivation. This created a negative feedback loop and in the end, without even realizing it, my priorities had shifted.
  2. I thought it was too hard.
  3. It was hard.
  4. I wasn’t in the proper mindset. I needed to commit to a course and also actually own the outcomes.

What’s changed

I’m a different person today, than I was yesterday and the day before. In some ways I might be better, but in other ways I might be worse. Who knows. What I do know is that I am not a slave of my past. Or at least I don’t have to be.

For the past 3 months especially, I have been in a high stress, rapidly changing environment. There has not been a lot of comfort, and thus, I’ve had to adapt as best I could. In some things I excelled, in others I failed. That’s life.

To cope with the changes, I’ve been trying to arm myself with new habits, new mental models, and new (or new-old) knowledge. A lot of the things that I’ve learned have helped me to cope, to recognize my own flaws, and to realize that I have ways to maneuver this world.

I have to thank my new housemate Iya (a 9yr old lady pup) for a lot. She has given me the space and time to absorb information in a different way. I’ve started to listen to a lot of podcasts as we go out on walks together. I even started to walk to work in order to support this new behavior of listening.

Some important things I’ve learned are:

  1. When the world gives you feedback, you have two options. The first — admit your part in this and own the negative or positive feedback. This way you accept the pain of acknowledging that you may be incomplete and that you need to change. The second — offload the responsibility to the world. This will make you feel good in the moment, but will likely hinder your personal development. For more on this, check out The knowledge Project episode with Annie Duke.
  2. There’s no growth in the comfort zone, and there’s no comfort in the growth zone. — I can’t remember which podcast I heard this in, but it resonated really strongly with me. It reminded me of the simple fact that change is not supposed to be easy. It’s supposed to be hard, so getting demotivated and discouraged at the fact that it’s hard is like getting mad at the sky for being blue. It’s something that just is. It reminds me that I’m not incapable or stupid, and that other people aren’t superhuman. They also have their own struggles, and they also find things hard, maybe sometimes even harder.

What I plan to do differently this time.

Just trying again might lead me into the same pitfalls as I ran into previously, so no matter what, I need to do some things differently.

These are:

  1. I won’t bother waiting for, or trying to convince other people to join me. I am in this for me, and I am promising myself that I will do this for me.
  2. I am making a public commitment to a. Learn coding and b. Share my progress regularly. This will not only help me hold myself accountable, but will regularly allow me to reflect on my journey and hopefully weather the challenges.
  3. I will constantly remember that this is hard for a reason. Hard means I’m growing.
  4. I paid money for the courses. I love the fact that there is so much free on the internet. But I believe in the sunk cost fallacy and know that I am more likely to see something through if I invested my finances into it.

My goals

There are a few things that I want to achieve in the near future. I’m hoping to achieve the following within 2 years.

  1. Participate in a hackathon not as a designer or product manager, but as a developer.
  2. Code and release my own iPhone and Android application.

My progress.

I’ve started multiple courses before from various sources. Codecademy, Coursera, Khan Academy, books, etc. And I’ve learned a bit from all of them but was never really able to grasp things.

This time, I decided to try to learn something that I could put into practice asap. I chose Mongodb as that’s what we use at work and I thought I would be able to start incorporating those skills to make me a better researcher and product manager.

I signed up for edx.org and started the course. 2 weeks later I discovered their course from Harvard CS50x — Intro to Computer Science. I was intrigued by the description, by the intro video and by the simple fact that this was Harvard. I thought — it’s so hard to know if you’re making a good choice these days because you have way too many options. If it’s good enough for Harvard to put their name on it, it’s definitely something I can trust.

Since then, I have not regretted this choice because I can see how much work and effort they put into producing this course. It was a great decision. Also because of the great support and student network that exists on reddit, facebook, and slack.

Here’s what I think and what I’ve learned so far:

1. It’s hard. Even when I want to do it, it’s hard. The lectures are long. Even watching them at 1.5X speed it still takes me a long time to actually watch through all the video recordings of the class. This makes it so that even though the lessons are Week 0 and Week 1 — I’m already 4 weeks in and still on Week 1.

It’s really hard to find the time to do this, all while having a full-time job and trying to satisfy all the other life requirements.

2. It’s hard. The homework although seemingly simple, has been brutal for me. I feel like my brain has had a truck driving through it repeatedly.

3. Sleeping on it really does work. Sometimes the best way to find a solution to a problem is to just leave the problem alone for a while.

4. I thought I would spend 2 hours on a problem today. Something like 10 hours later I finally found a solution. Finding the solution did not feel like a massive accomplishment because I fail to understand what was different about what worked vs what hadn’t worked previously. I feel like I had already tried the working solution. Maybe I just had a ; in the wrong place.

But really I think I spent most of the day really frustrated that my computer didn’t speak English.

And despite all the challenges, I’m even more motivated to continue. Because soon, the things that were hard won’t be hard anymore.

Leave a Reply

Your email address will not be published. Required fields are marked *