All Posts

Studying Techniques

In my experience, I’ve found several ways to become a more productive developer through practice and repetition. As programmers, we’re taught to break our problems down into manageable parts and then into steps. From there, we can sort the value of the priorities to tackle each problem individually. This process provides us road map where we have starting point and an end goal.

You can develop T-shaped knowledge in a variety of subjects only through years of experience and study but there are many techniques that can help you along the way. I’m going to go through the pattern of study I’ve developed since finishing school.


Feynman Rubber Ducky Technique

Here is a method that use which is combination of the Rubber Ducky Debugging and the Feynman Technique.

Step 1

Write the name of the concept.

Step 2

Write down an explanation of the concept on the page. Use plain language. Grab your Rubber Ducky or whichever object you use and begin to explain the concept to it.

Step 3

Write down the concepts that you don’t seem to understand. Go back to and look at the source material. Go back to step 2.

Step 4

Remember to keep your language as simple as possible. Einstein often gets misquoted with something that Feynman said: “If you can’t teach something to a 6 year old, that means you don’t really understand it.”

Defining the Source Material

I realize that source material can mean different things to different people. From my experience, I think gone are the days of having a textbook reading a few chapters and doing a few exercises. There too many mediums available online these days to be stuck with only one. I’ve broken down my own definition of ‘source material’ into 3 parts described here:

1. Fundamental Text

Fundamental text is one of the most important pillars to lean on when studying something. The internet is filled with medium posts and blog posts (like this one) that will tell you how, when and why you should do something in a 10 minute read. Its detrimental to read the opinion of other people unless they are esteemed author of that subject. I’m guilty of this too. I love to read Hacker News and Lobsters comments. Its interesting but to read but not beneficial for acquiring knowledge.

For example if you’re trying to learn about general programming, SICP is regarded as the first fundamental text when computer science students are introduced to programming. This text is praised by professionals and institutions in computer science.

Whatever the subject is, there has be a defining piece of text that everyone can point to. There are too many to list in Computer Science. When it comes to code quality, there is ‘Clean Code: A Handbook of Agile Software Craftsmanship’ by Robert C. Martin, ‘Code Complete’ by Steve McConnell and ‘The Pragmatic Programmer: From Journeyman to Master’ by Andrew Hunt and David Thomas.

Fundamental Text is one of the three pillars I’ve described when trying to learn more about a subject. It provides a solid library of ideas that need to be understood, a reference from someone more knowledgeable than yourself and a serves as a syllabus and guide to how you should be learning things. More often times than not, difficult concepts have layers that need to be understood before moving onto the next correlated subject.

2. Sandbox Environment

Second, is a sandbox environment where you can test, play or build your ideas. Programming is a bit broad, so say you’d like to learn React. You’re going to need to a React sandbox or a project where you can test out components or start a personal project like a blog. If you’re learning node, a fresh express project or simply typing $ node in your terminal will give you an REPL immediately. This environment or playground is fundamental to learning, students needs a visual feedback to solidify the principles learned from text.

3. Writing

Writing has been defacto standard method for solidifying educational concepts as long institutional educational has been around. Its often cited as the most efficient way to remember something, especially if the notes are written by hand. Writing in this context can be seen as more extrapolated version of Rubber Ducky Feynman technique. When you write 300-500 words on subject you need to form strong arguments to convince your audience that what you’re saying is true. To be convincing, you need truly understand the subject matter. When you understand the subject matter, there is natural economy of words that flows on the paper that can be seen as more technical form of explaining things to a rubber duck. Great American authors like Mark Twain and Ernest Hemingway were known for this type of writing. Simple and Concise. If you feel you’re explanation in writing is lacking, you can always go back to the source material!

To summarize, what I have laid out is simple let of iterative techniques that you can you use to study. There are no hacks or shortcuts here, its an accumulation of time spent going over the core concepts and solidifying them.

  1. Feynmen Rubber Ducky Technique to understand the concept
  2. Creating an environment in multiple mediums where you can reinforce the techniques