For many years, it felt as it I was bashing my head against a wall when learning new material. Originally, I tried to learn MEL scripting (an embedded programming language for building tools within the 3D Digital Content Creation (DCC) Software App Maya). The first two years of my career I would read tutorials and no matter how hard I tried, and how many tutorials I read, it wasn’t sticking. I would follow along with a tutorial, mirroring what the steps were, and the end result worked. I felt like I understood it. However, when it came to making something new of my own design, my mind drew a blank.
Was there something wrong with me? Other people could sit there and write MEL scripts all day. I had accepted that I just wasn’t ‘talented’ enough, that I didn’t have the ‘right brain’, and that I should probably stick to 3D modelling, UV-ing and texturing.
Fast forward to now 18 years later and I can quite comfortably write MEL, along with c++, houdini vex, python, HLSL, GLSL and even be confident that if another language came along, that I would be able to pick up enough to get by.
What changed? Did I suddenly become smarter overnight? Did I use performance enhancing drugs and stimulants to get better? (No, I’ve never tried that, unless you count coffee which yes I’ve had a few of those over the years).
What happened was that I discovered a few ways that made my brain retain and understand information better. Here I’m going to talk about those techniques I’ve used which hopefully you can try and see if they helps you.
From A to Z
So the reason that I was having a lot of trouble in the beginning was that I was reading the source material (documentation, tutorial etc.) in a linear order and expecting it to go into my brain and stay there.
Reading linearly makes sense right? Ultimately everything has to be digested by your brain in linear order, because well, our brain can only concentrate on one thing at time.
But there’s the problem. Information sometimes isn’t just a big linear dump of information. Trying to learn something difficult usually involves learning a lot of concepts that interrelated in complex ways.
The brain can’t concentrate on multiple things at once. That would be a brain working in parallel which it clearly can’t do. We need the information to be serial, so the information has to be serialised. So many resources have serialised that information for you and present it to you in what the author thinks is an intuitive order. How very helpful of them. However this robs you of discovering for yourself the hidden overarching structure that will help you in understanding the bigger picture.
There are situation where ingesting information linearly works for a lot of people. Mainly because of repetition. If you go over the same material over and over, then your brain will form neural pathways that will stick. This is known as rote learning, and you can technically achieve your goal of remembering the information. I just don’t find this way of learning particularly satisfactory and its easy to miss connections that deepen your understanding of a topic.
It was pretty much the only way I could learn when I was younger because I didn't know any better. I would just usually read material or use software enough times that it became muscle memory…
Too much information
The issue arises though, when learning a topic that is just objectively more complex. So how can we apply structure to resources? Well one of the constructs that is already used is the Table Of Contents. If information is just a linear stream, then that can be considered 1 Dimensional. Table of contents add shape to that content by applying a tree like structure to the information. This is like adding a second dimension to the data.
How can we apply this two dimensional concept to our learning? One area that uses table of content extensively is documentation. It primarily lets us get to the topic we want to get to, but it also implies a relationship between the individual components, through its hierarchy and the topics that are on the same level.
Here is an example of a hypothetical list of topics that you would come across when learning Unreal Engine’s Simulation framework, Niagara. (You can simulate particles and operate on voxel grids and arbitrary data to create visual effects for games, films and interactive experiences).
UI
Systems
Emitters
particles
grids
render targets
Modules
Dynamic Inputs
Module Graphs
HLSL
Renderer
ribbons
sprites
volumes
Events
Applying meaning to the Tree
Now that is one way to lay out the information (I’ve probably missed a lot). There’s nothing fundamentally wrong with this layout of topics. It does its job and allows the reader to see everything at a high level.
However, to a newcomer, this might seem quite daunting and look like just a bunch of ‘things’ they have to learn. The issue is that they have to read each topic, to know what an Emitter or Module even is. Can we improve the naming nodes of the tree themselves to kickstart our understanding of each topic before we’ve even read them? If we instead change the wording a bit, we can guide the reader into navigating the tree based on what they want to do.
Navigating Niagara’s User Interface
Grouping effects into a single effect template (System)
Defining an effect from emission to rendering (Emitter)
Types of effects you can create
particles
grids
render targets
Emitting and modifying your effects (Modules)
Create custom behaviour in the top level UI (dynamic inputs)
Use node graphs to define particle/grid behaviour (module graphs)
Use custom HLSL within a node graph
Communication between adjacent systems and blueprint
how to talk between emitters and exchange information (events)
how to read data from another particle emitter (particle attribute reader)
how to call a blueprint function from Niagara (callbacks)
This is essentially the same tree, and the same amount of ‘stuff’ the user needs to learn, but the navigation into the documentation aids the reader in it’s understanding, rather than having to learn the material in each one and having to ‘assign’ that meaning back to the tree.
Maybe there is more noise here, Maybe there is a middle ground between the two. The idea though I’d like to get across is that you can play with how much detail you put at each level to help the understanding from a birds eye view.
Planting the Seed
There are major advantages to using trees to organise your concepts.
They allow quicker navigation over linear information (similar to openVDB!)
They give context to the current bit of information by placing it within the larger structure. You don’t have to hold the rest in your head whist you are in the details of the current thing.
They are a structure that imply importance and weight.
They allow you to wrap up a concept in a bundle so that you can understand the dependent units of information. Once you understand a topic well enough, your brain can safely put it to the side and you don’t have to hold it all the sub details in your head.
Ultimately Trees reduce mental noise.
Hard things are hard
One of the examples of a topic I found difficult when I first encountered it are the The Navier Stokes Equations. They are the mathematical equations that describe how fluids and gases evolve over time. There are a lot of prerequisite mathematical concepts you have to learn to be able to understand what they describe and more practically, how you then actually compute and solve the equations on a computer.
I first encountered these equations in a book called GPU Gems (one of the books that changed my life). However, on my first read, there was no chance that I could’ve understood it all in one go. Maybe bits of it I could get the gist of, but a deeper understanding was not an easy grasp.
I faced three main problems…
The mathematical concepts involved actually needed a bit of reading up on. the article assumed that you knew them already. So it was up to me to find out what I needed to know in order to continue with the material and have confident ghat I understood it. It's all too easy to trick yourself that you understand it during the process, but your brain can deceive you.
There can be just too much to have in your head in one go to get an understanding of the whole. Reading the whole article in order didn't help because it was a lot of interrelated concepts that aren't linearly dependent on each other.
There is an emotional component of it being overwhelming and not having any confidence that I would ever learn something that hard. "This was clearly meant for graphics programming professionals, and I didn't have any right to be learning this, it was above me. There are usually no articles that explain in plain English what the symbols mean and how they represent actual physics. I wasn't part of the maths club. so I guess I had to join the club?
Adding another dimension
What I needed was to instead of going away and learning each thing individually to its full extent one after the other, I needed to to arrange all of the topics, get a rough idea of their concepts, and how they related to each before going deep on them. That way, I didn’t need to keep it all in my head. Too much in your head at once will just confound you and make it hard to understand everything. Bundling each topic into a ‘chunk’, and connecting links between them gives your brain a high level view to be able to navigate the whole and be able to understand which bits of information depend on each other so you don’t have to search through your memory in linear order that you learned it in, making recall faster.
This is actually akin to a ‘Graph’. Not the kind of graph that you see in maths with and X and Y axis. This is more of the mathematical definition of a graph that has nodes with connections between them. You might have heard of it as a mind map. Mind Maps I’ve discovered are like a superpower once you start using them.
They engage a spatial part of your brain that you might not have been using before. Think of your house. In your kitchen you probably know where the cheese grater is. You probably know where the cereal is. Your brain has this physical memory that you can use to help remember things. Why not apply it to your learning. A mind map will let you know that this pieces of information is ‘down on the bottom left in the green box’ and you will also know that its ‘near the other thing in the red box’.
The future is bright
I’m a little bit annoyed that I ‘learned how to learn’ a bit too late in my life, but I’m excited for the future for all of the things that I’m now able to learn in a much easier way.
Have you tried these ideas before or have any other tricks and hacks to accelerate the ingestion and recall of information? Feel free to comment!
Thanks for reading :)