When you teach, you can take the paths you're comfortable with and gloss over the fuzzier concepts. When you code, you have to take every path, and get it right.
I write about German taxes and bureaucracy. A few years ago, I wrote a detailed guide about German health insurance. It went through several rounds of revisions with help from a few different experts.
Yet building a health insurance calculator exposed big gaps in my understanding. This happened again with two more calculators I wrote. I had to revise so much content after the unit tests passed!
This reminds me of the following quote from the Preface to "Structure And Interpretation Of Classical Mechanics" by Sussman and Wisdom [1]:
When we started we expected that using this approach to
formulate mechanics would be easy. We quickly learned though that
there were many things we thought we understood that we did not in
fact understand. Our requirement that our mathematical notations be
explicit and precise enough so that they can be interpreted
automatically, as by a computer, is very effective in uncovering puns
and flaws in reasoning. The resulting struggle to make the mathematics
precise, yet clear and computationally effective, lasted far longer
than we anticipated. We learned a great deal about both mechanics and
computation by this process.
I had many terrible teachers in college. The problem with teaching people as a "learning technique" is that people can fill in the gaps. Students will inevitably self-study to pass an exam, and have access to many alternate learning resources. I think, since not all teachers code, it is not more commonly known that teaching dumb computers requires that you understand more.
Great approach when trying to go into the weeds of a technical problem. I try to first build a conceptual diagram if it is about a process and then fill in the gaps. If it's a more logic based, coding (can be pseudo code too) has helped with understanding
> What if I also told you that memorising facts is not the same as learning?
That is hopefully obvious to anyone that had a decent education.
That learning through teaching works is also obvious to anyone who tried. I didn't know Feynman advocated for this, but I discovered it when I was an undergrad. To prepare for (oral) exams, I would find an empty classroom and repeat proofs and theorems and explain concepts to an imaginary audience. It felt easy and forced me to clarify the logical flow of everything I studied.
Another aspect is when I was giving private lessons to younger students in need of help. This was very cool because I reviewed subjects that I wasn't quite ready to understand when I first studied them. For example when teaching thermodynamics to a guy, that was the first time I really felt I had understood it properly, because by that point I had other tools (statmech).
> What if I also told you that memorising facts is not the same as learning?
It's interesting, I believe this but recently have come to a little bit of a modified conclusion. I might not fully grasp a particular concept, but the brain is clearly a very powerful generalizer. Feeding in facts, even if they aren't fully connected for you yet, can help your brain make that connection. I think the key is to not just accept that I will memorize x, y and z but that i will keep thinking about it as I ingest new data.
I did the same thing! Except I learned the material early and offered to teach fellow students for a math exam.
On the math exam, all of the students got the same question wrong in the same way. It seems I taught the material incorrectly.
I got called in front of the dean and educated about cheating. In the end, they suggested I don't do this anymore, but did not consider it to be cheating.
I’ve been studying machine learning for a couple years. Recently I decided to increase my practical knowledge by studying Kaggle notebooks, creating my own, and organizing them on GitHub; making them all public on Kaggle would create a mess IMHO.
I’m not actually planning on teaching the material but I’m trying to organize the material as if I were.
I’ve also created an outline of the topics I want to learn.
A shortcut for learning that works for me is that as I listen to someone speak, I mentally put myself in their shoes speaking to me. I notice that it immediately shifts my thoughts to better capture more critical information.
The hard part is that it takes half a second or so to do this mental shift, and they are still speaking, so I have to both listen to what is currently being said while reiterating the previous half second to myself at a lag.
takes a little getting used to, but internally i feel a closer connection to the topic similar to trying to teach it
I wonder if the technique can be flipped, by asking the student (who wishes to learn) teacher (in her role as a teacher) to 'teach' someone who actually has a more depth of knowledge and actually the teacher here (playing the role of a student). It would then be a more challenging task for both and hence provide a more direct path to learning by teaching the teacher.
Alternative to teaching directly to a student: write a tutorial or even an introductory book about the subject. Writing often helps me to recognize weak points in my understanding, because it forces me to be explicit.
Writing something for others to understand is different than writing down notes for myself because I cannot assume that the other person knows what I know and that they see what I see. Having to explain what I thought I knew in words that someone else can understand, in my experience often reveals that I actually didn’t know it as well as I thought I would.
Having said that, I learn best by following my curiosity, by experimenting hands-on, by drawing maps and diagrams and by challenging my understanding with difficult questions and what-ifs. I call this curiosity-driven learning: ask yourself a question first (before any “knowledge-ingestion”) and try to solve it on your own until you get to a point where you really need to know more to answer that question. It forces you to think harder (as opposed to being spoon-fed information) and become more strongly motivated to learn.
When you teach, you can take the paths you're comfortable with and gloss over the fuzzier concepts. When you code, you have to take every path, and get it right.
I write about German taxes and bureaucracy. A few years ago, I wrote a detailed guide about German health insurance. It went through several rounds of revisions with help from a few different experts.
Yet building a health insurance calculator exposed big gaps in my understanding. This happened again with two more calculators I wrote. I had to revise so much content after the unit tests passed!