Learning How To Code The Olde Fashioned Way
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 pomodo’s, 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 being handwritten notes.
Note taking may seem like a tedious and old-fashioned task, especially when your 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 being how to start a car.
In programming explicit knowledge can be as simple as defining in your own words what a function is or explaining how a data type works. For example, When I was learning how to conduct regex searches with Python I would have trouble remembering which symbols were used to represent different things.
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, note taking 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 so that you may learn quickly. Unlike “learning” for school you won’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 withe the compile function and to find this pattern with in 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 note taking 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.