Code is the kind of thing that the fewer words used to explain it, the clearer the lesson.
The solution? Forget about traditional note-taking.There are two tools which are at the heart of my workflow (right next to Github and Sublime):
- Repl.it: Great for taking down examples of code and saving them. This not only lets me save the lines, numbered and commented, but also run the examples I type on the spot. No opening console, no need for node on the Terminal. Just code and illustration. Perfect.
- Gists: We’re constantly being prompted with riddles and logic puzzles. How to retain the lessons learned? Keep the solution tucked away in a Gist on Github. The next time I’m asked the same or a similar question, I have a working snippet of code I can refer to. Not only does this help me commit the logic to memory, but it makes refactoring and code reuse much easier.
These two powerful tools get the most daily use when it comes to active note-taking. Plus, not only are the Gists useful as a reference, but I use them as homework. I just read the description for it and then try to recreate the same code from memory. I do this until I can do them on the spot without need for reference.
So what to do when I study? Repl.it and Gists allow me to focus on writing code. But there’s more to learning programming than the code.
Learning the Language of Programming
I use Evernote for memorizing the language of programming. I keep lists of the concepts, methods, keywords, functions and objects we learn in class each day. I might look up something new each night when I get stuck, but I try to make sure that my list of terms from class are prioritized in my practice (the teacher brought them up for a reason, right?). That way, I know at the end of the day I know what my goals are and what I should be familiar with.
A typical day goes like this:
- Class notes: Write down key terms and concepts into a quick list. Don’t define them. Just write them down.
- Problems: Write down any chunks of code that I had a problem with. Especially write down solutions instructors give and save them to Repl.it
- Mini-projects: If we learned functions for the day, practice writing functions when we break or think about how today’s lesson could be used in yesterday’s lesson.
- Start the lab and homework.
During lab, I spend the entire time working on problem after problem. No memorization, only skim reading and all solution seeking.
When I go home I immediately go to my notes and fill out the definitions for my Evernote lists from class. Most of the time, I’m able to look at my code afterward and see why things didn’t work because I now understand what the terms mean more exactly. Finally, I refactor the problems I worked on using my new knowledge. I clean up my Repl.it examples if necessary and save the links to them in a nice list in my notes. I put any crucial problems in my Gists for future reference.
That’s my general workflow at this point. It varies day to day, of course, just depends on the amount of time I have and the number of things I have to do. But I’m finding this helps me keep up with class and it’s a process that makes sure I spend most of the day coding, not reading and memorizing.