This is what I hope should be a growing blog post as I create a starting point for turning the Feynman technique into a usable and reusable piece of software. It’s something I have been thinking of multiple applications for but ultimately all rely on the same core functionality.
What is the Feynman Technique?
Essentially it is a mental model based on the technique used by Richard Feynman to learn, understand and remember concepts quickly and comprehensively. I was drawn to it by this post which will give a better description but I mainly want to focus on the defining steps of the technique; those which I will replicate in code.
Step 1 – Naming the Concept
Quite simply the title that covers a subject you want to delve into. This just acts as the starting point for the process but also puts some boundary in place to control the scope of the problem or concept.
Step 2 – Explain the Concept
Starting with just the information you know already, try to start explaining the concept in as much detail as possible to highlight your current understanding but also, and most importantly, begin to reveal things about the subject that you don’t know.
Step 3 – Review the Gaps
Using the explanation, pinpoint the areas that are unknown and begin a focused effort on learning about those things through research and using the same process as step 2, write an explanation of these areas with as much detail as possible
Step 4 – Simplify the Language
This step reminds me of a quote by Albert Einstein; “If you can’t explain it simply, you don’t understand it well enough”.
Now that your explanation covers the topic entirely, to check that you truly understand it; go back through the explanation and simplify the language so that it is written clearly and define any larger terms or jargon using analogy where possible.
Modelling this with software
Using these steps I aim to create in software something that allows for modelling the initial concept; organising it into sub categories and a set of defined terminology. Moreover, the software should be able to link terms to their definitions where one has been provided and highlight terms that have not yet been explained. When completed, we will have created a clean and organised network of data between the concepts subcategories and the defined terms that explain them.