Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Do you also feel you retain nothing after reading a technical book?
57 points by dondraper36 on Jan 23, 2022 | hide | past | favorite | 52 comments
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?




What I learned from my time in grad school (physics) is that at least for the hard sciences, reading is not enough, you must DO.

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.


What I learned from my time in grad school (physics) is that at least for the hard sciences, reading is not enough, you must DO.

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.


I have a master's degree in applied mathematics so it goes without saying practice is far more important than just reading.

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.


I recommend this course [1], it's 4 weeks long, but I did it in 3 days and got 97 [2].

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


I take notes when I read a book then review those notes and shrink them down further. Same for videos and articles online. Otherwise I'll just forget it within a few hours.


Same.

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


Do you use something as simple as Google Docs for that purpose?


I recommend handwriting notes. See my other comment here[0] for the reasoning.

——-

[0]: https://news.ycombinator.com/item?id=30047675


I handwrote notes for my uni exams and agree it worked well. I like text files for searchability and portability though.


A folder of text files on my Dropbox. Google Docs would be fine too. Tried other stuff but keep coming back to plain text files!

Anki is great for foreign languages, chemical names, country flag to name mappings etc.


The free version of Remnote or Anki would also work.


I don't read everything or for the sake of reading. I read what I find interesting.

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 plan to use the knowledge then I either apply it immediately or take notes so I can apply it when ready.

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.


This is exactly what I have noticed as well. For example, when reading Designing Data-Intensive Applications for the first time I had absolutely no exposure to distributed systems and concepts like partitioning or replication. Even though it wasn't that difficult to understand the chapters, I couldn't truly appreciate the information.

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.


I reduce the amount of stuff I read and spend a lot more time contemplating. If I happen to binging on a given day, I’m forgiving myself for not remembering 300 pages of new information and I’m just trying to enjoy.

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.


This is a good question and it is going to depend on your learning style. That being said, I feel like this quote encapsulates some wisdom that I've used:

“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.


Yeah that is just like that, imagining that simply by reading you will get proficient in something and remember all kind of stuff is a false premise.

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.


I can read all day, but if I do nothing with what I read, it's mostly lost. If you don't have some project ready, try to pick some broad, long-term idea that you can steadily use as a mental focus when you're reading (and it doesn't matter how ambitious, this never has to go beyond plans). This helps me to connect my reading to my goals and previously retained knowledge.


I found the best way I learn from books is if I have already been immersed in a project for a long time and have accrued a long list of unknowns, then the books and videos become more interesting as I gather information on tackling those long standing issues. For my style of learning, trying to become an expert (and memorizing everything up front) is a doomed strategy. For example, I've been working on an electron, c++/wasm and typescript app for around 2 years. I interface with a large c++ program and I knew diddly about c++ for most of those 2 years, just doing the least damage I could do if I did need to modify the code. Lately though I've been soaking up more technical content about it and really enjoying it, as more and more of those questions I've had for a long time are getting answered, and I'm starting to feel more competent and satisfied when working with c++. Maybe this example can give you some ideas on how to get more engaged with the content by already having pressing needs.


>What are your tricks and methods to maximize the mental output of technical literature?

Use the "socratic method" of asking questions. You don't actually neede Socrates around, you can just ask questions yourself. Before you start reading, ask yourself questions about the subject, and try to answer them yourself. Although you might not have any answers, trying to come up with some will make you far more receptive to whatever the contents of the technical book are.

As an example, suppose you were reading a technical article describing the state of the art in searching for twin primes. Such as this: https://www.emis.de/journals/SMA/v12/p12_17.pdf

I am bored to tears by the very idea of reading that article and despite its abstract promising to make it more lively (the article starts: "The purpose of this paper is to gather as much results of advances, recent and previous works as possible concerning the oldest outstanding still unsolved problem in Number Theory (and the most elusive open problem in prime numbers) called ”Twin primes conjecture” (8th problem of David Hilbert, stated in 1900) which has eluded many gifted mathematicians. This conjecture has been circulating for decades, even with the progress of contemporary technology..."

Rather than just read, think for a moment and try to solve the twin prime conjecture yourself in your mind right now! Obviously without even being a mathematician, you're not going to solve an open area of mathematics that tens of thousands of actual machematicians spent a combined hundreds of thousands of hours on. What you will do, however, is after you give up after a few seconds, be far more open to actually reading the article. You'll actually get way more out of it than if you had never asked yourself a question on a subject you didn't know anything about.


The problem I see is in the question itself.

1. "reading a lot", don't read for the sake of reading or learning for the sake of learning. Choose what you find interesting and read that.

2. "feeling of not memorizing". Read slower, know what it is that you're learning. Try to internalize every little 'oh' and 'ah' moment. Read critically thinking along the edges, wondering if it does or doesn't apply to similar cases. Think them through and decide if you feel it should or shouldn't apply. Learning is not about remembering. It should be about connecting new information to information you already know. Take the time to find and make those connections as you're reading. It's not likely that this will happen on its own--perhaps if you read the same material before and after a related experience, but that can't be planned.


Most technical books are useless. They're not written by educators, they're written by hackers. And hackers aren't good at explaining themselves. It feels good to buy technical books, because it feels like you're converting money into progress. So the tech book industry stays alive.


You should immediately start applying what you learn. Even before you finish the book. Type out and modify any example code, write little practice programs, etc. Passively reading is no way to learn technical material. Also, take notes (in your own words) and periodically review and condense those notes.


It used to happen a lot with me while I started coding and was learning the concept of OOPS. The concepts were just so abstract and I never could think in abstraction. I used to sweat and run around the room a lot because everything used to go over my head and as you said "Create a mess in my head." But I still kept going at it even when things were not making any sense. My goto was youtube and reading about the same topics but from different sources and understanding any immediate pre-requisite which was required to understand it. Then after like a month or so the concepts just clicked.

I still feel lost sometimes when I encounter something new but now I actually have the confidence that I would be able to understand it if I keep going at it and have a pen/paper with me.


Two tips I have are to handwrite notes on the material, and, to reread the material at least once a later date. Taking notes by hand has been shown to increase retention in college lectures as compared to typing notes on a laptop or not taking notes at all, while rereading is essentially taking advantage of spaced repetition.

I can’t emphasize the value of handwriting notes enough. It was that “one weird trick” that got me through college. I actually never looked back at my notes, but, I got the benefit just by writing them.

Oh, and, one thing to note here: highlighting stuff in the book or paper you’re reading is great for when you come back and read the material again, but doesn’t do much for retention on the first read. Write that shit down if you want to remember it.


Yeah, don't bother with too much technical reading without practicing whats inside. It won't get you that far. Its much better to slog through problems yourself. As an example, following directions from GPS reduces the spatial comprehension because it diminishes your experience of navigating through a space.

A big part of why memory works the way it does is because experiences are what get processed and catalogued when you sleep. If that experience is lacking, i.e. simply reading by itself, then the only thing you get are the words-"memes" running through your brain. What you need is that lived physical experience to be imprinted into memory.


Find your edges: read at the edge of what you're familiar with. When you have holes that need filling, you inhale the new information like a dry sponge slurps up water. Reading something just because you think you "should know" that area, regardless of how far afield it is from your existing knowledge base, makes it more foreign, hence more difficult to absorb. I've gotten enormous benefit from re-reading the manuals of systems I already use but have mastered haphazardly.

It's a challenge to find material at the frontiers of your knowledge, but the effort pays off in efficacy.


Technical books is an instrument for learning something. Usually you should not read all book. I prefer to read technical books only if I need something. But there are books, wich I define as "computer science", this books are fundamental and maybe I will read a big part or all book. Also, I've never see, what technical book was read in one go. Example books: Tanenbaum OS or Designing Data-Intensive Applications.

Our brain cant remember a lot of technical information at once


I run into the same problem, be it technical or otherwise. So I read less to _know_ and more to be aware. Once I'm aware, and I retain that awareness, then I can reach for that thought when I need it (e.g., grab the book, or search for it). Do that enough times and it'll sink in.

Put another way, go back to your college or high school years. We didn't just read. We had to study. We had tests. It was about repetition. Being an adult doesn't change that process.


Bingo. Don’t read to “memorize”; read so you know where to find the relevant information later. If that information is frequently relevant, you’ll eventually learn it and won’t have to look it up as much.

Great example: when was the last time you had to look up how to append an item to a list in your favorite/most used programming environment? You probably don’t remember when that was, because you use it so often, but, there was a time when you did have to look it up (when you were first learning).


It turns out that my approach to reading is very similar. It sort of reflects the famous series of videos on YouTube where a concept is explained at 5 (or 6?) levels of complexity. Probably, I shouldn't be worried that some concepts (for example, SOLID or the onion architecture) take a lot of rereading and time to internalize.


Practice is important for subjects like math and coding bcz it help you choose the right tools needed for the task sometimes you might need the combination of two and more tools which wasn't mention on theory part of that tool.

Also, for subject which requires understanding of things (like Operating System). Try building a visual model in brain. If u already know some of the parts then connect those part visually with the new concept you are learning.


Usually, this is the best I can do. It's like revealing the map in a computer game. You start with a set of absolutely unfamiliar concepts and then, as you learn more, the connections between them start to appear.


For something that I really want to learn, then my approach is to create presentations or training material on the specific topic.

Like recently I wanted to learn HTTP/2 and gRPC, so I wrote some PowerPoints explaining those concepts and know I grok the fundamentals of those topics. My core mantra nowadays is "You don't know anything until you can explain it".

If I forget something I can always go back to my presentations, that are now the same as my notes.


I really like this idea. Do you actually present the items or do you prepare the presentations just as a note-taking mechanism?


Yes, I do work a lot as a trainer and doing presentations, so most of the time I actually do present them. Perhaps 80% of what I do is actually presented once or many time. Often I create a class or presentation in something that I am curious about, for example for 2 years ago I went deep into OpenID-Connect, creating training material and also continued to keep my knowledge fresh by answering questions on Stack overflow in just that specific topic, earning me a bronze badge in the topic recently.

Its a challenge to break down a complex concept into suitable "parts" and create a good story, but as time goes you get better and better at it.


I’m not sure I’ve the confidence to present every deep topic I get into but I may still give this a go and I’ll have the slides off the opportunity presents itself.

Thanks for ask the details though, it’s given me a lot of food for thought…


I was in the same situation for 10 years ago, I did not want or like talking in front of people. But I today have the mantra "You should do the things you are afraid of more often!" and of course I started easy, learning beginners programming and if you know your stuff then the fun is how to break down a concept and try to explain it,.


I come away with the same. I switched my learning style from read and understand to code and understand. Here is how I typically learn something new now.

I go to stack overflow and look for poor questions in the new technology then I figure out how to answer them. This gives me an unending stream of micro-tasks to accomplish and introduces pain points in new tech.

Now, I read tech stuff only at the conceptual/architectural level. Stuff not typically asked by noobs.


I'll give you an example of something that's helped me memorise technical books better. Let's say I'm reading something about security, I'll try to think about how the points the writer is making apply to my current employer. I find linking the theory to the real world really helps with internalising the information.


It’s not about memorizing. Technical material needs to be used to understand. At least take notes and at best do problems. Keep a google doc or other notebook while you’re reading. Review chapters after you finish them. Review the book when you finish it. You’ll need to put in time above just the time reading.


Sounds like what I'm going through. In my case, I just don't care enough right now. I'll come back to it eventually.

As for retaining the info, it's all spaced repetition now https://fs.blog/spacing-effect/ .


Too bad Anki is still so awful UI-wise :)


There are plugins for vs code, vim, and emacs that make creating cards a lot more pleasant!


> Don't just read it; fight it! Ask your own question, look for your own examples, discover your own proofs. Is the hypothesis necessary? Is the converse true? What happens in the classical special case? What about the degenerate cases? Where does the proof use the hypothesis?

- Paul Halmos


Most software books describe a narrow, ideal subset of some problem. The entropy of real systems is orders of magnitude worse. You are often solving bad decisions made by humans -including yourself-, and considering tradeoffs, as opposed to finding a textbook solution to a problem.


I have some bad habits that I think come from reading so much fiction as a child as a way to pass the time, just plowing through...and I am trying to refocus toward making my goals primary and treating books, etc., as reference material that I dip into somewhat more random-access.


Depends on your definition of "reading".

If you're treating a technical book as a bedtime novel, then yes, chances are you won't get much more than a warm fuzzy feeling out of it.


even if you can't manage to consciously memorize it bits of information gets stored somewhere in your mind. then let's say a few years later you're thinking about some seemingly unrelated topic and the old memory of that thing you read way back pops up.

you go back to it, reread a bit to refresh your memory and it all somehow clicks.

at least that's been my experience so far so i don't bother with retention too much. perhaps information you ingest simply needs to age a bit to mature and develop.


It depends on how you process data. I got used to reading a lot and being comfortable with not retaining a lot. I just keep reading more stuff and eventually it sticks.


For technical subjects, I lean on references. To me, learning is a lot about just being aware of concepts and knowing enough vocabulary to look things up when I need to.


Bad students in physics and math (which I've taught) think that the subject is like history, you need to memorize facts to please the professor. Successful learners develop skills similar to playing music.

If you are doing some combination of (1) reading textbooks, (2) attending lectures, and (3) doing problem sets, I'd say (3) is essential and the others only supporting.

My son and I were talking about probability yesterday, he was calculating odds with mental arithmetic, I was writing algebra on the blackboard. He never really "got" algebra and so he looks at math really differently than he does. I keep one formula in my head

   exp[i theta] = cos theta + i sin theta
and with that I can derive any trigonometric identity, angle addition formula, etc. that I want. What could look like a mountain of facts can look like very little when you've got the underlying fluency to disturb things.

When it comes to programming languages and frameworks (say Spring) I tend to read and re-read the manuals while doing cardio, reading the bus or something like that. The goal is not to memorize information but to develop familiarity with the manual. In a language with a good manual, say Java or Python (but not Clojure) there are many arbitrary things you need to know such as how to look up the length of a string, where to find random numbers in the standard library, etc. You are really doomed if you are looking up these things in Google or Stack Overflow

Then there is the "technically interesting" stuff I read which is often about electronics and energy technology. This stuff I read nonlinearly and repetitively and I suck it quickly and can fluently talk about many fields that I've never worked in. When I really get down to doing something, say for Arduino projects, I find my difficulties often are in a few areas like (1) converting voltage levels, and (2) connecting and fastening parts in a reliable way to form a whole.

I have been doing an art project for the the last 18 months and found so far that I've learned most things the hard way and usually had a hard time looking things up in the literature or really incorporating what I read into my practice until after I 'discovered' the answers.

I am doing an extensive reading project that covers literature, psychology, sociology and related fields and there I read books cover to cover. The limiting factor is the emotions that the books stir up and how that affects my ability to do the practical work that goes along with that reading. For instance I finished this book

https://en.wikipedia.org/wiki/The_Collector

this morning and was shook up by it. I had a subproject where I had rewired my emotions and motivations for a 3 month period which vastly improved my artistic output but reading one Morton Hunt book caused the spell to break over the course of 48 hours and I saw it come apart exactly the same way that the book I learned the spell from said it would come apart.

In the practical work I sometimes think I am an idiot such that it takes me three tries to learn something I really should have known 30 years ago but that's the reason why I am doing this project. Based on consolidated book knowledge, however, I'm starting to talk a very good game on this subject and can sometimes say more in a few sentences than practically knowledgeable people can say in 1500 words.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: