Learning strategies

faraznaeem
Nomads Of Code
8 min readApr 4, 2018

--

There are many ways to learn how to program and there are even more strategies and techniques that can be used.

Based on my experience, I made a list of the strategies that works best. I have added different techniques on this list along with step by step guides with different strategies.

Your personality and preference will dictate which strategies to you want to choose, but do try out some of the ones I suggest, even though they don’t feel natural at first. Who knows, sometimes you just need a new way of doing things….

Naturally, this list doesn’t cover all strategies out there, so feel free to experiment and add/delete steps depending on how they work out for you.

Flash cards and rehearsal

Using Brainscape, or some other flash card app, is a good way to structure and internalize new knowledge. Sure, you can achieve the same effect with a traditional pen-and-paper approach. But, my experience tells me that it’s easier to use a mobile or a desktop app.

Strategy:

  1. Keep a notepad open and as soon as you hit a problem, concept or a fact write it down. Don’t make a flashcard but write the question and the answer in your notepad. At the end of every weekday write down all the notes of the day in your flashcard app.
  2. Create a master list of all your flashcard depending on the topic. Try to keep flashcard collections to a minimum. You can divide them in languages or frameworks like Ruby on Rails or JavaScript. But don’t do any subdivisions like arrays or methods. The reason for this is that the rehearsal should be on the entire language or the framework rather subsections. The flashcards list should be a living document that you continuously add cards to. If you keep subsections it will quickly become a hassle just to remember where you need to add or edit cards.
  3. Go through your cards at least twice daily. Best time to do the rehearsals is the first thing in the morning instead of checking your mailbox (which should be done in the office anyway) Go through a few cards, 10–15, each time. If you are using brainscape it will automatically show you the cards that you need to practice more. That’s it. Rehearse daily and add cards. I started with this strategy because it helps comprehending a subject that much easier.

Code along

This is quite a fun strategy, especially for beginners who need to code as much as possible and those who have limited support and experience. It’s also good for adding projects in your portfolio where you can show potential employers your projects.

Strategy:

  1. Go over to Youtube and search for “<your framework> clone “ and you will find a bunch of guides and tutorials. If I search for “ ruby on rails clone” one of the first results are “Build a Pinterest clone”
  2. Take the steps and just follow along through the whole process and build the application as guided
  3. Recreate the application with only your written code as a reference. Try to do this a couple of times. Rewrite parts where you have particular problems with understanding the structure, logic or concepts

Deploy Mini applications

Not all of your applications need to be grand programs with complex features. In order to start and finish projects and get the hang of the DevOps part of coding, create small applications and deploy them. This strategy works well to get the hang of the entire process.

Strategy:

  1. Set up an entire application with testing frameworks
  2. Create only one feature like a basic todo app or an portfolio page
  3. Deploy as soon as possible through Heroku or AWS

Type from memory

This strategy works if you want to understand the logic and syntax of particular bits of code.

Strategy:

  1. Find small bits of code that you have hard time understanding. (Good resources are public repos on GitHub or official documentation )
  2. Read the code and try to rewrite it without looking at the reference
  3. Do this over and over and over and over

Solve day to day problems with code

Want to write a shopping list? Why not create an array with the different items? Make basic calculations? Don’t use your calculator, use your text editor or your console.

Strategy:

  1. Write a list with common everyday problems, like calculations, lists, reminders and so on
  2. Write down some potential ways to use programming to solve these e.g
  3. Shopping list = write arrays
  4. Calculate costs = use IRB
  5. Apply these solutions when the need arises

Keeping focused

There are tons of books written on the subject and there are many strategies and techniques to accomplish this. If you are having problems staying focused when you are trying to learn then you should probably concentrate on creating ‘focusing habits’.

Strategy:

  1. Keep a notepad when you work and write down all the random thoughts that you have, go through these notes when you are done with your session.
  2. Sit at the same place and same time when trying to focus or learn.
  3. Make sure that all distractions are turned off (smartphone, notifications etc)
  4. Plan ahead what to do if you get distracted
  5. Have some snacks ready if you get hungry
  6. Make sure you sit in comfortable clothes
  7. Visit the toilet before you start
  8. Work as long as you can and keep track on how long you work each session. Try to increase this number by a few minutes every day

Keeping a coding diary

For more intermediate coders it’s a good idea to keep a journal where you jot down features that you have been working on so that you can have these features in mind for future projects.

Strategy:

  1. Keep a designated coding diary
  2. Write down the following questions:
  3. What have I worked on today?
  4. What was the main problems when working with this feature?
  5. If I would do this again what would I change?
  6. How can I use this in the future in other projects (at least two examples)
  7. Write in your coding diary at the end of each workday
  8. Read through the diary at the end of each week

Using the Feynman technique

The Feynman technique, popularized by youtube clips, states that Richard Feynman used this technique to quickly grasp and learn new concepts and ideas. This technique works well if you want to grasp concepts and to fill in knowledge gaps.

Strategy:

  1. Choose a topic and write it down as the headline on a sheet of paper.
  2. Write down an explanation of the topic in simple words, that is
  3. Use no technical terms, or complicated words
  4. Try to use real life examples
  5. Go over what you have written and try to explain it to a fictional student
  6. Ask questions about details and take note of any knowledge gaps
  7. Revisit the textbooks and documentation and find the answers to the knowledge gaps
  8. Rewrite the explanation
  9. Do this over and over until you feel that you have a good understanding of the concept

Teach others how to code

This is quite easy and a fun exercise, and works best when you start out as a beginner. It builds confidence and is a great way to get a deeper understanding of coding.

Strategy:

  1. Write a simple program like a ‘hello world’ or something a bit more advanced
  2. Find someone that you can teach
  3. Have reference material available like documentation and your codebase
  4. Make your students write the program with you, guiding them each step of the way
  5. Correct errors and make sure that you reference your materials if you get stuck

Use mnemonics

Using mnemonics to remember things dates back to antiquity. There are books and courses online where you can pick up how to teach yourself anything from the order of a deck of cards to complex algorithms.

We will be looking into a more simpler approach to use mnemonics, mainly word mnemonics.

Strategy:

  1. Decide on what to remember for example the order of operations in Ruby
  2. Write down the order and the operations Parentheses, Exponents, Multiply, Divide, Add, and Subtract
  3. Underline the first letters of the operations Parentheses, Exponents, Multiply, Divide, Add, and Subtract
  4. Create words with the first letter and try to combine those to a memorable sentence like: Please Excuse My Dear Aunt Sally

Use a master mind map

A mind map is a great way to consolidate your knowledge by mapping the different areas of knowledge and at the same time see the patterns and how different areas are connected.There is a lot of software out there about mind mapping that is pretty good. However I would recommend to actually make the mind map by hand, somehow it makes things stick much better. Make sure to use colors and images.

Strategy:

  1. Take a large piece of paper and write the subject you are going to work with in the middle
  2. Add lines from the center outwards with each line representing a specific part of the subject, make sure that you add subject lines as they naturally come to mind rather than adding lines from a book or some guide
  3. Branch of from the subject lines with related topics
  4. Go through the whole mind map and add missing topics, subjects from your reference materials
  5. Draw images and colorize the subject lines for easier memorization (do not skip this part!)

Constant questioning

Asking relevant question is key when learning to code. Most of the time it’s easy to drift off when watching a video tutorial or a lecture. I often recommend this technique that I used when I was at university trying to follow complex math problems.

Strategy:

  1. Prepare for the lecture by trying to find out everything about the subject. You can use the Feynman technique for this
  2. Have a notepad ready to write down random thoughts and write in it when the need arises
  3. Try to follow the lecture and constantly ask what will the instructor do next?
  4. When the instructor does as you predicted give yourself an affirmation like “good, I am getting this”
  5. If the instructor does something unpredicted or if you forgot a certain step then write it down and carry on listening
  6. Go through your written notes after the lecture and revise your feynman notes.
  7. If it’s a video lecture, go through it again and try to predict the next steps. If it’s a live lecture ask the instructor for clarifications on the missing parts or to confirm the steps you have written down

Coding katas

Coding katas are great for expanding your knowledge and get some practice solving problems.

The katas are small programming problems that you need to solve. There are many Kata websites that programmers use, and a quick google search will give you tons of alternatives.

Programmers either like or dislike coding katas. I like coding katas because they force you out of your comfort zone. And done correctly they can improve your skill set by forcing you to think in a certain way and to refine your problem solving skills.

Strategy:

  1. Choose a kata to solve
  2. Write down the problem and make a list of the requirements needed to solve the kata
  3. Arrange the requirements in the order you think you need to solve them in
  4. Write down the potential solutions for each requirement
  5. Start coding using your solutions
  6. If a solution fails, search the internet for new solutions and go over the process again

Speed coding

This is a great way to get practice and to gamify your learning experience.

Speed coding is basically to finish a problem set as fast as possible and to track the time it takes to complete the problem.

Strategy:

  1. Find a small piece of code that you would like to speed code, some examples might be fizzbuzz, rock-paper-scissors or one of the euler problems
  2. Code the program in its entirety and take note of each step needed to solve the problem
  3. Set a timer, start the timer and start coding as fast as possible
  4. Try to complete the program before the time runs out
  5. Redo the process until you can complete the program within the allotted time

Final notes:

This list is no way comprehensive, feel free to try and to modify the strategies!

--

--