There are a ton of articles written to help new programmers build their skills and succeed in a fast-changing and high-paying industry. The ability to learn new and complex things quickly is key to succeeding in the tech industry, which is always changing at a fast pace. One day the language or framework that you are using will go out of style and eventually you’ll need to pick up a new skill set.
Most of the articles giving advice to new programmers is a bit redundant. You’ve read a bunch of articles on the importance of the pomodo technique, deliberate practice and long stretches of uninterrupted work as tools to become a 100x developer. Ironically none of these articles mention the oldest and most effective tool for learning.
That tool is handwritten notes.
Notetaking may seem like a tedious and old-fashioned task, especially when you're jumping back and forth between your keyboard and monitor, but it is the best way to learn lots of new material quickly.
We didn’t evolve using keyboards, these are a relatively new tool. Writing on the other hand has been around for much longer and it is simply the most natural way to learn.
Obviously, you don’t want to handwrite 100+ lines of code. So what should you take notes on?
I break my note-taking down into two aspects: the explicit and procedural aspects of programming.
Explicit knowledge are straight facts like the capital of Rhode Island or the 33rd President of the United States. Procedural knowledge is the knowledge of how a process is carried out. An example is how to start a car engine.
In programming explicit knowledge is the foundation for any programs that you will write. If you don't know what a function is or what the difference between an array and a dictionary is then you can't do much.
Taking notes on explicit facts is a proxy to deepening your own understanding. For example, When I was learning how to conduct regex searches with Python I would have trouble remembering which symbols represented what.
To make it easier for myself I would write down the symbols and what they meant. For example I would jot down that .* matches everything after and that /d is used to match numbers.
Unlike in school I never have to review or look over my notes, notetaking is just a way to help me get information into my brain more easily. If I ever forget what a certain regex symbol means I can just jot that down quickly in my notebook to help me remember it for next time.
As a novice programmer you are writing things down for your own sake, you want to learn concepts quickly so you can create more programs. Unlike “learning” for school you don't have to force yourself to regurgitate material every week or so on a test. I like to save handwritten notes for when I am having trouble learning a hard concept, there is no point to me jotting a million different notes down on things that I already understand.
Procedural knowledge is the most widespread and important type of cognition that we engage in. If you know that you can use wood to make a fire, but don’t know how or when to make a fire you’re pretty much useless.
A task requiring procedural knowledge can be broken down into smaller steps, say writing a function, returning the processed data and calling the function within the program. Breaking larger things down has a two advantages: 1) it makes the procedure easier to understand and 2) it makes it easier to remember the order in which you do the steps.
There are two components to performing a regex search. The first being that you want to define the pattern you want to search and the second you want to run this pattern over a string to locate the data. In python to declare a pattern you would create a variable with the compile function and to find this pattern within the data you would (ironically) use the search function.
For some reason, I would always mess the order of these two things up. I would think that search was the pattern that I was searching for and compile was used on the data that I wanted to sort through. I sorted this out not only by practicing regex searches but by writing down the procedure for initiating the search and writing down what each of the re functions are used for.
In conclusion, you can’t possibly write down everything, so only take notes on the things that are important to you. When taking notes as you learn how to code you need to understand that this type of notetaking is different from taking notes in school. You won’t be tested on things, you don’t have to spend hours reviewing your notebook. This is simply a way to learn practical information faster.
Create your free account to unlock your custom reading experience.