Lately, I have been trying to follow the habit of reading a lot, be it books, articles or blog posts on the subjects I would like to improve myself in.
That said, the more I read, the more I get this awful feeling of not memorizing anything and creating a mess in my head.
I try to use some simple tricks like explaining a concept to another person or even to myself, but that doesn't seem to help a lot.
What are your tricks and methods to maximize the mental output of technical literature?
Unfortunately this isn’t easy. It takes physical effort and will power to resist just reading over the words and feeling you’ve internalised something vs actually forcibly mentally thinking through the steps.
If the subject is something like math or physics, do some related ‘homework’ problems.
If it’s programming, actually implement something in that language or framework.
If it’s foreign language, try putting together useful sentences with the words and language constructs in question instead of just racking up points in Duolingo. Better yet talk to a friend in this language.
If it’s philosophy or history, well then it’s less clear. In that case your idea above may be the best you can do, either explaining to someone or even pretending you’re explaining to an imaginary newbie.
This is just my two cents but what I found works for me over the past few years. Personally I don’t understand how people here on HN claim they can learn a math topic (eg quaternions) just by watching a YouTube video, or understand functional programming just by reading thru SICP but not doing a single exercise. Maybe they can, but in my case I need to work through some actual pencil-on-paper or hands-to-keyboard examples myself to really grok the subject.
I came to say that also. I find that just reading a technical book is the fastest way to get drowsy, while retaining nothing (or so little, it's a negligible amount).
I find that to learn anything I must have a project. Then, when I inevitably strike a roadblock, I refer to that technical book for the answer to my lack of knowledge so that I can move along with my project. If I subsequently forget that knowledge, I know that I did have an answer previously, and that I found that answer in a particular place.
Also, I find myself buying fewer and fewer technical books these days. Once upon a time, the only way of obtaining knowledge was via technical books. I used to buy dozens every year. Currently it's easier and faster (and less expensive!) to use Google or similar websites.
That said, for better or worse, software engineering is not as strict and formal as mathematics. There are a lot of opinions backed by somebody else's experience or, just, reputation (say, books like Clean Code or Clean Architecture).
Recently, I have been reading mostly not about programming languages or algorithms. It's easier to understand these by practicing, writing code yourself, etc.
When it comes to more abstract subjects, however, it's more challenging. For example, clean architecture, domain-driven design, different solution approaches in distributed systems.
It's not that one has to memorize, but rather internalize the principles. It doesn't help that there is plenty of opinionated advice on the Internet with mutually exclusive approaches and recommendations.
It was also discussed on HN in the past [3].
--
[1] Learning How to Learn: Powerful mental tools to help you master tough subjects
https://www.coursera.org/learn/learning-how-to-learn
[2] https://twitter.com/nivertech/status/1441657387325145096
[3] https://news.ycombinator.com/item?id=15092707
Take notes. Make sure you read them again a week later and reorganize them into smaller meaningful notes.
Those "Cards" can be re-read very quickly. And the simple notion of the few words a month later will replay and refresh the full context in your brain.
Works well if you don't have the time nor occasion to apply it
——-
[0]: https://news.ycombinator.com/item?id=30047675
Anki is great for foreign languages, chemical names, country flag to name mappings etc.
Sometimes I just can't connect with the author and their way of explaining things.
I read multiple times. First time, I skim quickly over everything to see if it's worth it and I want to dig into it. Second time I read a bit slower and take high level notes on areas I want to dig more on. Third time I read but make it an emphasis to pay attention to the areas I took notes on and dig into those with more references if I need to.
I expand my notes. I don't expect my head to retain it all. Make it easy to search. Figure out what works for you. If you go written on paper, figure out how to organize things.
I figure out a project in which to try new things and I try them. This goes back to, I don't read everything or for the sake of reading.
If I don't plan to use the knowledge then I take away an over simplification of the topic and any thought provoking key points.
Now, however, with more experience and the necessity to deal with these issues at work, I keep revisiting DDIA on a regular basis and this is when the book truly shines for me.
It just bothers me at times that even though I read quite a lot, the amount of information I can confidently restore even within a few days is not even close to 50%.
Taking notes is definitely something I should try, in addition to organizing a handy set of bookmarks in Raindrop whenever I encounter something useful.
If I read a technical book, I work more toward familiarization than memorization — I can just look back at the book or Google for reference.
When I was younger, I was able to memorize *. I can’t do that now, perhaps due to age, or because of experience. Now, I work toward mastery of the absolute basic fundamentals, and rely on looking up everything else.
“If you want to learn something, read about it. If you want to understand something, write about it. If you want to master something, teach it.”
- Yogi Bhajan
My technique involves reading the technical book and then writing down the most important parts of what I've learned. This is useful for reference later, if I need a quick refresher.
Another useful technique is the third part of this quote, finding some way to teach and explain the concepts you are using. Often times the best audience is a smart but non-technical person. Can you find a way to explain the concept you are learning in a way so that your audience understands?
Typically this involves a lot of simplifying and I think this simplification can frustrate the engineer part of our brains that cries out "But it isn't simple!" Try to fight this urge to reject simplification because it can become easier to work with concepts as simple discrete components. Think of Newtonian mechanics, it was a nice simple explanatory framework for how things work (good enough) until we needed to add electromagnetism and quantum mechanics to explain natural phenomena that didn't abide by the framework.
Edit: Oh and lastly, and most people have already mentioned this, build something useful with the concepts you are learning.
While grinding is looked upon as silly. Yes doing the same thing multiple times seems the only way to master it.
If you want to learn maths - best way is to solve equations by hundreds - solve math assignments by hundreds.
My latest approach to cyber security is just like that - while I do know how most of the attacks work theorethically going through the movements to pop simple box on HTB is quite a task for me. So only way to get better at breaking boxes is not reading about kinds of exploits and understanding them - it is simply bashing keyboard all the time until all the tasks are muscle memory and until I can get through iterations of ideas of how to pop a box as quick as possible.
Then you also start to build intuition which approaches work for which type of math assignments or boxes because you physically did the work to have working memory of what works and what not.
Which gives you specialization and possibility to skip stuff that you know won't work and being much more productive than people who are "theoretically" understanding things.
While reading about stuff you get pointers like "how to bake a bread", but you get slightly different oven, you get slightly different wheat each time and it is only your internal intuition that can adjust for unknown factors.