On Studying/Learning Programming Effectively

Lumen
4 min readApr 21, 2018

--

These tips are all based on learning resources like Coursera’s free Learning How to Learn course and the hundreds of hours I’ve spent studying myself. If you want to dive deeper on how to learn effectively, take the LHTL course.

  1. Use recall/memory tools

“Use it or lose it” — Unknown

Memorization is criticized as being dull and non-creative. While not always fun, recalling (ideas, facts, concepts) is one of the most effective methods in studying. Recall tools are effective for developing a base understanding and then expanding that idea as you encounter a deeper understanding. Whether you create review questions, review flashcards, build your own test/quiz, create a song, make up a catchy acronym, make sure to use this tool every day. I currently have~500 cards, but I started off at 0 and incrementally created more nearly every other day. Sites such as Quizlet or Anki are great for recalling. See this article on creating effective flashcards.

2. Work on hard problems

One of the greatest joys in learning is solving a bug or problem that you’ve been stuck on a while. Coming up with your own solution to a problem is probably the most effective way to practice, especially if feel your brain hurting. Take breaks if you’ve have been working on a problem for a while, so your brain can work on it in the background but try your best to solve it. I remember when I started learning to program, nested iteration with loops was quite difficult. After many hours of practice, they now come to me almost as easy as creating a variable. I’ve also spent hours on problems that I consider easy now, but I wouldn’t have been able to say that had I not spent a lot of time there. I also wouldn’t be able to appreciate better solutions had I not taken the time to create my own. That extra time allowed me to understand the problem better and then see how it was improved.

If you feel iffy on a concept, that is a good sign that you need to study it more. Sites like CodeWars are great for working on programming problems that get harder the more problems you solve.

3. Books are usually better for learning than videos

Books/articles have many advantages over videos. These written resources have been edited and have research ideas cited by professionals while videos are generally free-flowing. Books are crafted with consideration for the target audience — beginners, intermediate or advanced readers and they have a hierarchy, so you can reference key chapters/pages easily. You can also read a book a lot quicker than a video’s speaker can talk. I find books easier to immerse myself in, whereas, even with note-taking, videos are harder. Obviously, certain concepts are better demonstrated with videos, but in general it is easier to find a well-edited article or book compared to a well-edited video.

4. Minimize all distractions when studying/working.

Few people are talented at multi-tasking. When you sit down to work or learn, concentrate. Don’t get distracted by anything else. It is better to have 1 focused hour of working or studying compared to 4 hours of mixed attention.

5. Find other students learning what you are.

There are many communities such as FCC or The Odin Project or various slack groups that are meant to help programmers. For the longest time, I thought people would be annoyed when I asked questions. I actually found many people are happy to help. They understand that being able to explain an idea is one of the best way to see how well you understand it. This method is actually called the Feynman Technique. Another benefit of a community is that it pushes you to work harder. I started studying with a group of students who were at a more advanced level of a topic. Initially, I felt like I was slowing them down, even though they kindly insisted I didn’t. This pushed me to study harder and when I caught up to their level of understanding, I could speak at the same level and we had much more effective study sessions as a result. We could now work on the most difficult problems.

6. Start the habit of studying

Schedule a block of time on your calendar every day and start studying. You will have days where you get nothing done, but always get back to it the next day. I use the Pomodoro Technique and start working. Cliched, but all of the above advice doesn’t work without practicing. You can make flashcards, read books, watch videos but they won’t help or stick without the practice. Code as much as possible and working on the hardest problems are where you should spend most of your time. Reading books, watching videos, studying flashcards are where you should spend 25% of your time at most. Conceptual understanding is not useful without applying it. Your code will break frequently and in unexpected ways and you’ll have to figure out if it’s as simple as a missing semicolon, an unexpected return value somewhere, or something else. Practice by working on projects, doing basic exercises on CodeWars, or playing around in your editor with whatever you are learning.

TL; DR:

  1. Use memory tools like Anki or Quizlet to recall ideas, concepts, definitions
  2. Work on the hardest problems within your ability
  3. Books are generally better edited for learning than videos
  4. 1 focused hour of studying is better than 4 hours multitasking
  5. Find a community of learners and teach others what you’ve learned
  6. Schedule a study period for each day and start practicing

--

--