As an engineer, computer scientist, student, professor, researcher, or any other role, it is SACRED (as moral guidance) that you keep improving your knowledge and studying.
You will face challenges that may seem impossible, but the beauty of things is that we, as homo sapiens (and maybe some reptilians), can learn to overcome these challenges.
At some point in your job or your life, you will need to learn something new. Nowadays, with the pressure from stakeholders and in such a fast-paced engineering environment, you need to learn enough, as quickly as possible.
Learning as fast as possible is an engineering requirement!
Fortunately, there are tons of very good learning techniques that we can easily use!
In this post, we are going to focus on a very famous one, and extrapolate how to go even further with this technique in the AI era (which I hope never comes, but here we are).
Feynman Technique
Have you ever heard of the Feynman Learning Technique?
Named after Richard Feynman, it is a very powerful learning technique to study ANY subject.
It uses the concept of learning by teaching, and it can be represented by the following flowchart:
simple words"] D["Discover your Gaps"] S["Study"] T --> D D --> S S --> T
- Teach: Start by exposing what you already know. If you know very little about a subject, it is not a problem; you will soon realize where to improve. Use simple words, as if you were explaining to a kid.
- Discover your Gaps: You will realize a lot of things you don’t know about the subject when you are unable to explain it simply.
- Study: Now you know what you should focus your study on, and it’s time to do so.
- Repeat: Go back to teaching and iterate until you realize you know enough about the subject.
Reverse Feynman Technique
The main idea here is to reverse the way you explain things!
The “Reverse” here takes place by not explaining to a kid, but explaining to an “Expert” (The AI). This one is also known as “Feynman Technique with Feedback”.
You should still keep your language simple to ensure you understand the core, but you gain velocity by having your errors pointed out instantly by an AI agent. In the usual Feynman Technique, you can get lost while trying to “Discover your Gaps”. Think about it: you could possibly be learning (and explaining) everything wrong the whole time, and you only find out after many iterations!
It protects the learner from hallucination.
The AI is used to review things you missed and to make sure you are not missing the point.
The flow is exactly the same as the previous, but with a small change in efficiency:
simple words"] D["Discover your Gaps
(with Feedback)"] S["Study"] T --> D D --> S S --> T style D fill:#add8e6,stroke:#333,stroke-width:2px
- Discover your Gaps (with Feedback): You not only realize things you don’t know, but by giving context to the AI (books, repos, etc.), you can be more assertive about what you need to study. This avoids “unknown unknowns.”
- Study: AI can also help here to find specific content for your identified gaps.
Example: Learning lvalues and rvalues
My very brief abstract about lvalues and rvalues:
lvaluesare your average Joe variables:
they have owners, names, and fixed addressesrvaluesare the disciples of Diogenes:
they have no names, their addresses aren’t fixed, and they can move around freely.
The AI feedback showed me some critical points I was missing:
Conceptual inaccuracies found by AI:
- “They can move freely”: In C++, “move” refers to move semantics—transferring resources from one object to another—not literally wandering in memory.
- Missing subcategories: For full technical accuracy, I should eventually look into prvalues and xvalues.
And here I rest my case. You iterate it yourself if you want.
When to stop iterating?
- From an engineering perspective:
Learn enough to understand the implications of your solution. - From a human perspective:
Learn until your soul is satiated.
P.S.
This post was developed using this technique.