Blog Cover Photo

Learning to Learn - 2. Systems

Profile PictureKevin Zhu
22 Mar, 2025

In the previous blog post, we talked about consistency. One of the things I mentioned was that you could gain consistency by having a system in place for when you feel like things aren’t going well. But what exactly is a system? And how do we go about making one? That’s the question I’d like to answer in todays’ blog post.

What is a System?

A system is essentially what it looks like if you were to write down the exact flowchart of actions you take on a moment to moment basis as you engage in a skill or activity. These should be written down and essentially give a step by step on how to complete every task that you need to do. You can have multiple different systems for different aspects of the same activity. For example if it were drawing, perhaps you might have a system for each stage of the process, i.e. planning composition, lineart, rendering, and effects.

As an example, here is a simple system I came up with for exploring new codebases recently. You don’t have to follow the exact same formating and structure that I do. I’ll talk later about what makes a good system so that you can make your own. As with most things, the best way to do something is the one that works for you.

### How to start reading a codebase that you are unfamiliar with

1. Work out what it does
    - Read the documentation and run the code
2. How do you think the library is implemented?
    - Look at dependencies and features
    - Think about what top-level functions it would expose
    - Theorise how the code might be divided up - what are the main sections?
3. Read the code starting from the main entry point 
    - Read top down 
    - Find each of the main sections you identified at the end of step 2
    - Make multiple passes as needed
    - After each pass, summarise what you learnt, and then write down what you still don't know. 
4. Compare your theoretical and the actual implementation. 

Why are systems good?

Systems are great for a many reasons. As we’ve talked about before, systems are a rock solid fallback that you can always rely on to get some results. At times in the past, I’ve had moments where I that everything I did was going wrong and I was just compeletely lost as to what to do. These are the days where I pull up my system and I just go back to the basics. When you feel that you are underperforming, the system gives you something that you can always anchor yourself on. It may not guarantee 100% of results, but it can at least get you 70% of the way there.

Another reason that systems are great is because they allow you to iterate. You don’t have to start off with a perfect system, recall the 20-80 rule. 20% of the effort gets you 80% of the reuslts. As you learn more and your understanding deepens, you can slowly update your system until it gets closer and closer to an ideal. But of course, this is only possible if you have some sort of standardised procedure as your baseline. If you always just “make it up as you go”, you may find that when it comes time to reflect on and improve your process, you either don’t have anywhere to start, or whatever change you make ends up becoming unusable the next time you work because your process has changed.

Thirdly, written systems are a way to remind you what you are currently working on. Taking the coding flowchart I shared above as an example, though I technically have the knowledge (I wrote the thing, afterall!), there is no way that I could possibly keep the entirety of it just in my head while diving into the code. Once I’ve written it down, the system is something that I can review before the start of every code reading session, to help reinforce the lessons I’ve learnt. This is point is so interesting in fact, that I’d like to actually take the time to talk briefly about the Adult Learning Model, and how having a system complements this way of thinking.

The Adult Learning Model

There is a concept in learning theory called the Adult Learning Model. It defines the four stages of learning things, but for the purposes of this article, we’ll only focus on the last two stages: Conscious Competence and Unconcious Competence. If you’d like to read more, there is a fantastic reddit writeup that is definitely worth a read. It’s written in a gaming context and focuses on tilt, but applies to any situtation in life where you feel like emotions are getting in the way of your decision making.

The Four Stages of Competence

Back on track though, level 3 of the adult learning model is conscious confidence. It is a level of skill where you technically know how to perform each task, but every action takes some conscious thought. To take an example from the reddit post, imagine you are learning to play tennis. You have a understanding of how to hold you raquet, how to serve, how to position during play etc. However, all of these require your concentration, and sometimes, if you need to apply too many of them at once, you might mess up.

The next level up, level 4, is the unconscious confidence. At this stage, you’ve put many years into the sport, until the point where you can do all these things effortlessly. You no longer have to think about how to grip the handle for a specific type of shot. It’s been drilled into you so many times that you can do it without even thinking. At this stage in learning, because you no longer need to focus on those skills, you can now focus on other skills, such as tricky dropshots, squeezing out more power from your smashes, opponent positioning etc.

There are two things to understand about this model. Firstly, the way we transfer a skill from level 3 into level 4 is one thing: practice. Secondly, there is a limited amount of space in your brain to focus on level 3 skills. If you’ve ever heard the advice to “focus on just one thing at a time”, this is what that means. If you try to focus on too many level 3 skills at once, your brain will simply eject other skills to make space, and you’ll end up messing up the fundamentals and feeling overwhelmed.

Why have I brought this up? Well firstly, it’s a a fantastic mental model for how we should approach learning. But secondly, the idea is for our system is to complement this learning process. To put it simply, the system represents our current level 3 skills that we are trying to internalise. Since they are currently in level 3, we can easily forget if we’re not putting in conscious thought into them. But by having them written down in a simple to follow way and reviewing them semi-regularly, we can train ourselves over time to recall this information effortlessly. As we learn, you may find that there are skills that you have fully acclimated, and thus are less important to keep in your system. Similarly, as we learn, we might find a new skill that we would like to polishing, and thus we add this to our system. Essentially, having a written system works very well with how we understand humans learn and internalise new information.

What Makes a Good System?

As I mentioned before, you should make a system that works for you. But what makes a good system? Here are some pointers that I’ve come up with:

  1. Systems should be organic
    • You might have gotten the sense of this already, but systems change over time, as you learn more and more things.
    • As you pick up new skills or your understanding deepens, you can add to and iterate on the current system you have.
    • As you commit skills to memory, to the point where you don’t even need to think about them anymore, then you can prune them.
  2. Systems are short and simple
    • If a system becomes too complex, then your brain literally cannot keep it all in your head at once.
    • Use simple language
    • Dot points are your friend
  3. Use Triggers and Actions
    • Imagine you show up at the grocery store, and lo and behold, you’ve forgotten your wallet. “I’ll make sure to bring my wallet next time” you tell yourself. This is an effective strategy… right up until the next time you’re standing in queue and realised that you’ve forgotten it again.
    • The lesson here is that actions must have triggers.
      • An action by itself is unactionable.
    • Frame things not just in terms actions, but in terms of what will trigger you to take action.
      • In this example, instead of “I won’t forget my wallet”, it should be “As I put on my shoes, I will mentally check that I have brought my wallet”.
    • Triggers should be external and obvious.
      • They should work without you having to constantly remind yourself that you need to take the action.
      • E.g. “When it is 5pm” is not a good trigger, unless you have also set an alarm for that time.
    • Triggers should be specific.
      • Reusing the previous example, “As I put on my shoes…” is a better trigger than “As I get ready for work…”

Perhaps if we were to go back to our tennis example, our system might look like this (I know nothing about tennis):

  • If I hit a forehand swing, I will hold my raquet in <X> way.
  • If I hit a backhand swing, I will hold my raquet in <Y> way.
  • After I hit every shot, I will return to the center of the court.
  • When serving, if my throw is more than 30cm off, don’t force the serve.

(As an aside, notice how this one seems to be more so a list of trigger and actions, whereas my coding example seemed more like a flowchart. The way you structure your systems will depend on the activity and what suits it best. I think trigger and actions work better for things that require real-time decision making like sports and gaming, whereas flowcharts and step-by-step processes work better for more slower and structured processes, like drawing and coding.)

How to Use Your System

Of course, after making a system, there are also several strategies that you can use to get the most out of it. Here’s what I’ve come up with so far that works for me:

  1. Break up your work into small chunks
    • Each chunk should be relatively small and easy to complete.
      • The length really depends on the task at hand and your own preferences. In my case, for Overwatch, it’s the length of a game. For coding, it can be the time it takes to understand a single concept. For drawing, it can sometimes be upwards of 3-4 hours.
    • The point is to have short, repeatable sections of work where you practice the same skill over and over with feedback (self-directed or otherwise).
  2. Read your system before each chunk, and reflect after
    • And make a conscious effort while doing what activity it is to follow the steps outlined in your system.
    • After the session:
      • Think about what you learned during the session
      • Think about what you’d like to do differently for next session
      • Think about whether your system is working, and if there is anything you’d like to modify about it.
  3. Spaced Repetition
    • Spaced repetition is a scientifically proven way to review material in order to move things from level 3 to level 4.
      • The idea is that to commit something to memory, you must review it many times.
      • The more you review it, the longer the intervals between reviewing can be.
    • There are a couple ways that I’ve found that help me do this, though I’m sure there can be others as well:
      1. Using Anki
        • This is a flashcard app that automatically works out the optimal time to make you review a flashcard. Once again, based off the principle of spaced reptition
      2. Having a log / journal
        • The idea is that every time you write down your new findings for the day, you spend just a couple minutes just to check your findings from last time as well. This effectively simulates spaced repetition.
        • For Overwatch, I have a text document where I write down lessons after every game.
        • For drawing, I have a private chat with just me where I post the day’s progress to myself, and then write down the things that I can improve about it.
        • For general life stuff, I have a label titled “Thoughts” in the Google Keeps note taking app, where I just write whatever insights I’ve made into self-improvement / learning.
      3. Talking with friends
        • After you’ve learnt something, talk about it to someone who is interested.
        • Framing your experiences or the thing you learnt in an interesting or funny way can be a great opportunity to cement your understanding.
        • Not to mention that your friend may ask questions that prompt you to do further research yourself.

So returning to our tennis example once more, before every session, we’ll have a look at our system, making sure to read every dot point. As we play, we’ll focus on implementing each step in the process. It’s okay if we falter and forget, in fact it’s normal and to be expected. As long as each time we keep centering ourselves once more on our system, we are guaranted at least a certain level of results as we play. Afterwards, when we aren’t caught up in the middle of a game, we’ll take some time to reflect on how we did for the day, what parts of the system worked well, and what didn’t. We write down these thoughts, and review them at the beginning of the next session. Over time, we will find that following the system becomes more and more second nature, and thus we can safely graduate the parts of the system that we’ve internalise. In their place, we’ll replace them with deeper nuance into skills that we seek to understand more thoroughly.

Summary

  • Why are systems good?
    1. They are a fallback that you can use to guarantee a certain amount of results.
    2. They allow you to iterate on your skills.
    3. They complement the Adult Learning Model by reminding you of the skills that are in level 3.
  • What makes a good system?
    1. Systems are organic
    2. Systems are short and simple
    3. Use Triggers and Actions
  • How should you use your system?
    1. Break work in to small chunks
    2. Reflect on your system before and after each chunk.
    3. Review your system with spaced repetition.
      • You may use anki, logs, or friends as a means to do this.

I definitely felt a little more rambly during this article, so congratulations on making it all the way through! As with all my blog posts, I’ll finish by encouraging you to reflect on how you can apply this to your own life. Choose an activity that you are currently trying to improve at. How might a system benefit some aspect or subskill that you are working on?