The Definitive Guide to Studying
Tags: learning, productivity, programming, beginners
Published: 2023-07-29 16:50:59

## Table Of Contents
[Introduction](#introduction)
[The Theory](#the-theory)
[Why?](#why)
[How Can We Apply These Principles?](#how-apply)
[TLDR](#tldr)
[Appendix](#appendix)

**There is a [TLDR](#tldr) section for those of you that want to jump straight into it. I recommend that you read the full blog and then read the TLDR section for a summary of how to use the system.**

## Introduction <a name="introduction"></a>
This is a guide to learning anything that involves sitting at a computer and typing. Humans are creatures of habit and the way we learn is by doing things continuously until they become second nature. What I will teach you is how to optimise your learning to implement this characteristic that is built within everyone's biology.

I will give you a list of tools and techniques that you can start applying today, which will allow you to be repetitive and structured in your learning, which will ultimately bring you the best results.

## The Theory <a name="the-theory"></a>
I want you to think back to what the life of your caveman **great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great-great** (plus 394 more greats, yes, I looked that up) **grandfather** would have been like. He would have been born in an environment that is undoubtedly dangerous, with the requirement to protect himself as soon as he is capable of doing so. This means that his father/mother had to teach him how to fight, gather food, etc.

These skills didn't just come natural to your ancestor, he had a teacher and an environment that allowed him to repeat the teachings until he was able to do it after his parents had died.

So how does this relate to your learning? Well, if you live in the middle of a western city, it is likely that you need (or want) more skills than just hunting and fighting. You will need to learn some skills when you're already an adult (or old enough to read a blog post). So, the aspects of this caveman environment that optimise learning will need to be replicated, and even enhanced.

So, let's take a look at what these aspects are:
- A source of truth (one thing that you can go back to for knowledge, i.e. your parent)
- Repeatability (many opportunities to get the information into your head, i.e. a jungle full of predators to defend against)
- A metric to tell you how well you're learning (i.e. how much fish did you bring back to your family)
- A goal to strive for (something that motivates you to keep learning, i.e. the avoidance of lion-induced death)


## Why? <a name="why"></a>
Now let's analyse why you need all 4 of these to be a successful learner.

### A source of truth
This one is kind of obvious, where are you getting the information from in order to learn? You need to choose one guiding resource and stick to it, at least in the early stages of learning.

### Repeatability
How would you learn anything if you only heard it once and implemented the learning once? You need to continually come back to your learnings and solidify them within yourself.

### A metric to tell you how well you're learning
Of course, you could just listen to information and then implement it blindly, constantly going back to it and doing it over and over again. But if the information isn't being adopted very quickly then you could spend far too much time reading and not enough time putting those things into action. 

You want to reduce the amount of time ruminating over the theory and build those mental pathways that make the knowledge second nature.

### A goal to strive for
A goal allows you to guide your actions in a direction that will ultimately benefit you.

We all know that a goal is good for motivation, otherwise why would anyone do anything? But what a goal is also good for is knowing how to apply knowledge in a way that is going to bring around change that guides your life positively and not negatively. You need that north star so that you are aiming towards Mars and not the vast emptiness of space.

## How can we apply these principles? <a name="how-apply"></a>
Its pointless just talking about these principles, we need to apply them. So how can we do this?

I will tell you how I have applied them, the tools I use, and how they link together. This will be from the perspective from my recent interest in Machine Learning and how I am currently studying it.

### A source of truth
Typically, if you are reading this article then you are interested in learning a new technology, or you are currently learning a technology and you are interested in optimising your process.

This puts you in a good position to choose a source of truth since pretty much all technologies have a good source of truth documented on the internet. The way I do this is that I find a high-quality resource, whether online or in book form, and I use that source exclusively (references from this source are acceptable).

In the case of my ML studying, I am using a course on Udemy [here](https://www.udemy.com/share/104ssS3@ENfNvpAV5OddFK9RmAMgPsAAUnQAeHIAusYmD-rSfiIsjMuQjQV_9ZI1f1a7u_vpQQ==/). This course goes through how to apply machine learning principles in TensorFlow, and it is very practical.

Occasionally it links out to other resources, such as the [MIT Introduction to Deep Learning](https://www.youtube.com/watch?v=7sB052Pz0sQ) video. These resources are fine since your source of truth endorses them.

You can see this resource as your parent, your mentor, the place that shows you how it's done. The reason you aren't looking to other sources of truth is because it can muddy the waters. Your learning is most productive when terms are well defined, and instructions stay the same for an action. Your best chances for this to be the case is if you have one person teaching something to you, or a group of people that all agree on definitions and instruction steps.

### Repeatability
This is where you need to decide how you are going to record the information that is given to you and how you are going to recall the information later in order to solidify it into your head. You also need to work out how you are going to apply this learning in a practical way **whilst you are learning it** in order to optimise for the usefulness of the information (what's the point in Cristiano Ronaldo listening to his coach if he had never stepped on a football pitch?)

#### Obsidian
My choice of note taking app is [Obsidian](https://obsidian.md/). This is not an advert for Obsidian, so I won't harp on too long about how great it is. But the main benefits for me about Obsidian are:
- It is free (or cheap if you want to let Obsidian sync your notes across your devices automatically)
- Its built-in features replicate the structure of the brain (two-way links and the graph)
- It has a countless number of community plugins that you can use for free (one of which is called Obsidian_to_Anki, which I explain in this post)
- High performance
- Easy to use

Here is an example of my graph and how I can easily use it to see what sort of information is related to my recent ML studying:

![Obsidian TensorFlow Developer Certificate Graph](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bc1232shzmk6fok3ov3.png)

Or how I can use it to go back over some Algorithms that I have learnt about in the past:

![Obsidian Algorithms MOC Graph](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezzwsvykytxjin30ke3v.png)

Here is a good YouTube channel if you want to learn more about what Obsidian has to offer: [Linking Your Thinking with Nick Milo](https://www.youtube.com/@linkingyourthinking/featured)

**🔑: It is important here that you do not spend too long focusing on how to make your Obsidian setup perfect. Just open a note and start typing, tweak it and make links that help you structure your information when you have enough information to do that with**

#### Anki
Anki is a tool that is used to take the information that you have recorded inside your note taking app (for me that would be Obsidian), and create an environment that allows the information to be recalled consistently and in a way that provides you with the best chance of memorising it.

It is basically a way of supercharging your learning and bridging the gap between indexing information in your head and 'learning on the job' as you try to use that information in practice.

Here's how it works. You create a flashcard in the app, which contains a question and an answer (there are other kinds of flashcards but I'll explain that next). The app then hides the answer and you have to think about it.

![Anki without answer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1sfnzx1bzxs5stppacw.png)

You then reveal the answer and tell the app how you performed in recalling that information.

![Anki with answer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lasyfs544mrk88yip3f5.png)

The app will then give you this flashcard again to review when it feels that you need to recall it (based on your previous answers).

This is a process called [Active Recall and Spaced Repetition](https://aliabdaal.com/spaced-repetition/)

##### Integrating Obsidian with Anki
Some kind fellow has built a plugin for Obsidian, which integrates it seamlessly with Anki and provides an almost 0 amount of friction between you indexing the information from your **source of truth** and recalling it later.

Currently in my system I can write flashcards like this in Obsidian, and they are available for me to learn from inside Anki almost instantly: 
![Obsidian Flashcard Examples](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e5whi4u1av12s5u5cffg.png)

The highlighted text is an individual flashcard for each highlighted bullet point, to learn the information in context with the other classification evaluation methods. 

A normal flashcard with a question and answer can be created by typing `#flashcard` next to the question and starting the answer on the next immediate line.

The `ID` syntax represents a flashcard that is stored inside of Anki.

**I have put [a section in the appendix](#obsidian-to-anki-instructions) of this blog with instructions on how to do it yourself**

What this system does for me is that it allows me to create two different environments: 
1. A focused environment where I can sit down and get as much information stored inside my brain as I can handle at once. This is usually when I'm sat at my desk in front of my computer with my **source of truth** on one monitor and Obsidian/my IDE on the other monitor.
2. An environment that optimises my brain for memorising information. This is usually being sat at my local park listening to the [Hans Zimmer: Live playlist on Spotify](https://open.spotify.com/album/1c7CsqUVbOoALFNWV3xzr0?si=UHWWXGVZTfGdSjtQFGYDeg), with Anki open in front of me on my phone and a floating  notes page (I use a Samsung Galaxy S23 Ultra with the built in pen, a physical notebook and pen would work just as well)

![Taking notes example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79df2a7h7mlrwv1byev7.png)

**🔑: I have a place to take notes so that I can jot down functions or formulas that I'm being tested on in an Anki flashcard (which improves recall by physically writing the information as I recall it). These notes can be scrapped later but they are invaluable whilst doing active recall.**

#### Practical Learning
Whilst you are learning using the above method(if you choose to do so), you need to make sure you are bringing these lessons into practice.

Imagine if Muhammad Ali had spent years just reading books on how to be a good boxer rather than stepping in the ring and actually competing. He would have been a fraction of what he was.

This is why you need to take your lessons into practice as soon as possible, as you're learning, instead of learning everything and then deciding to implement it.

In my situation I am completing a course that has a practical aspect to it and you write ML models alongside the instructor. But let's say you're reading a book about LISP, and you want to memorise the concepts. You need to **actually use them**.

Read a chapter of the book and the write some code that uses the things you learnt in that chapter. Start a hobby project at the start of the book and add features to the project as you work through the book. 

If there's anything you can take from this blog, its to actually use the lessons that you learn from that **source of truth**.

### A Metric To Tell You How Well You're Learning
If you're following the same structure as me (Obsidian/Anki), then this is quite simple for you.

When you go into Anki and start to study a deck, there are 3 numbers.

![Anki Learning Numbers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/47ydve8z7irpkb91w2v0.png)

These numbers give you an indication of the cards that are `new`, `being learnt`, or `due for review` (respectively). This gives you a good indication of how well you're memorising the information, since if you can see that the red number is constantly going up and you are never seeing new cards, there could be something wrong with the way you have decided to ask the questions in your flashcards, or whether you're using the right type of card.

What I tend to do is that if I notice that I am constantly seeing the same card and the information never seems to stick (because I never get the answer right), I will do one of three things:
1. Add a new layer of information, whether that is an acronym to remember the information by, or a story that I can incorporate the information into so that it has context.
2. Sit with the information for a while until it sticks.
3. Adjust the flashcard so that it works better for you. If the answer is a list and you're using a basic flashcard, consider using a Cloze flashcard instead to break the information into multiple learning opportunities.

Before:
```
In what ways can you cook an egg? #flashcard 
- Scrambled
- Boiled
- Fried
- Poached
```

After:
```
In what ways can you cook an egg? 
- ==Scrambled==
- ==Boiled==
- ==Fried==
- ==Poached==
```

This provides more learning opportunities since one flashcard will be shown for each bullet point instead of trying to remember all of the information for one flashcard.

The more you can take advantage of the metric that you choose, the better you will learn the information in practice, and the more useful your learning will be for actual real-world situations.

### A Goal to Strive For
In my situation, I have specifically chosen a source of truth that is geared towards a TensorFlow certification. This means that my learning is focused and at the end I will have a certificate to prove my learning was a success.

If I didn't choose the certification, I might choose to use the skills I have learnt in the course to build my own app that takes advantage of AI.

Whatever it is that you decide to learn, whether its bird watching or graffiti art. Have a goal in mind that your learning points you towards. What do you want to get out of it? How can you be proud of yourself at the end of the learning?

If the learning is going to be an ongoing thing, set some external milestones to the learning that allow you to pat yourself on the back when you reach them.

## TLDR <a name="tldr"></a>
For those of you that want to get going straight away with my system on how to learn. Here are the steps:
1. Download Obsidian & Anki
2. Follow the steps [here](#obsidian-to-anki-instructions) to integrate them
3. Open your **source of truth** for whatever you're learning
4. Start using the **source of truth** and taking notes into an Obsidian notebook as you go
5. Once you are done taking notes, write out some flashcards into Obsidian using the syntax from step 6 [here](#obsidian-to-anki-instructions)
6. Sync your Obsidian to your Anki
7. Set aside time to use Anki and keep on top of your active recall. 
8. Use the `new`, `learning`, and `in-review` metrics in Anki to analyse how well you are learning. Tweak your learning to improve these metrics.
9. Use your learnings in a practical way that solidifies them, ideally do this alongside your note taking if possible.
10. Repeat steps 3 to 9 until you have come to the end of your **source of truth**
11. Use your learnings to reach the goal that you set out to achieve.

## Appendix <a name="appendix"></a>
### How to integrate Obsidian with Anki <a name="obsidian-to-anki-instructions"></a>
1. Download the Obsidian to Anki plugin from the community plugins inside Obsidian
![Obsidian_to_Anki in Obsidian settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ddrum1m6idwtf6inhjlj.png)

2. Go to `Tools -> Add-ons -> AnkiConnect -> Config` and apply these settings
![AnkiConnect Settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d3gdh846m2byef8zz6if.png)

3. Restart Obsidian then restart Anki

4. Inside the Obsidian_to_Anki plugin settings, click this button
![Obsidian to Anki plugin buttons](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbjwvdffnkxr53t9gotv.png)

5. Expand the 'Note Type Table' section at the top of the plugin settings and enter the following details: 
     - Basic:
 	     - Custom Regexp: ((?:.+\n)*(?:.*==.*)(?:\n(?:^.{1,3}$|^.{4}(?<!<!--).*))*)
 	     - File Link Field: Obsidian File Link
 	     - File Context Field: Obsidian Context Field
     - Cloze:
	     - Custom Regexp: ((?:[^\n][\n]?)+) #flashcard ?\n*((?:\n(?:^.{1,3}$ | ^.{4}(?<!<!--).*))+)
 	     - File Link Field: Obsidian File Link
 	     - File Context Field: Obsidian Context Field

6. You should now be set up to create flashcards from within Obsidian (if it still doesn't work then try clicking the various buttons in the Obsidian_to_Anki settings, restarting Anki and Obsidian desktop apps, or restarting your computer if all else fails). To test this, create a new note in Obsidian and type this:
![New note examples](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hs7y3nlwsnvs1m8dipbi.png)
When you click the `Sync Vault` button, you should see the notes reflected in your Anki app.
![Sync Vault](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kk266tackd9dczwo87nm.png)
![Anki after sync](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lhw5i525qs20mse6qq7d.png)
**It can take a while and you might need to clear the cache from the Obsidian_to_Anki plugin settings. It will work eventually with some trial and error. Once it works, you won't experience these problems again**