Live data from Hacker News

Ask HN: How do you learn complex, dense technical information?

news.ycombinator.com

61–70 of 181 posts

Re: Ask HN: How do you learn complex, dense technical information?

#62

Similar to what others have said, do a quick pass once to get a sense of what the context/main concepts are. pass 2) read the headlines of each section. pass 3) read the bold words of each section and make note of them. pass 4) read the first and last sentence of each paragraph in the chapter. pass 5) read the whole chapter as you normally would. The increased/repeated exposure helps you to contextualize/relieves anx…

Something similar to this is the SQ3R method: https://en.wikipedia.org/wiki/SQ3R

Several other comments on this thread mention similar methodologies, as well.

Re: Ask HN: How do you learn complex, dense technical information?

#63

> I've been considering skimming through the whole things to get kind of a big picture of what the thing is and where I'm going and then going back a second time to catch then the details and experiment. This is what they recommend in "How to Read a Book". First one is called "inspectional reading" and can be anything from a fifteen minute pre-reading to decide if it's the correct book to read, to a read-through with…

I found that book quite superficial and superfluous. Content of few pages stretched out to a book.

Ha! I'm glad I'm not alone. I tried to take an interest in it as well but found the writing style to be extremely tedious and verbose. It's amazing that a book that professes to show you 'how to read' would be so poorly written and such a slog to get through. I'm only half-way through it and I'm not sure that I'll ever complete it. The content is good and interesting, but there's far too many words used to communicate what I think are concise, actionable ideas.

Re: Ask HN: How do you learn complex, dense technical information?

#64
post #24

I'm a big fan of the idea of using Spaced Repetition for this. The idea is that it allows you to both: - be able to keep your knowledge / understanding of an area around for the long term; but also - be able to gradually build up your understanding by first committing the fundamentals to memory, and then using that to build up your level of abstraction and get to the more complex ideas and principles. Michael Nielsen…

Personally, I am a big anti-fan of the Spaced Repetition. IMHO it is a wonderful solution to a wrong problem (i.e. memorizing random things). Sure, there are use cases: learning words in a language one is not exposed to on a daily basis or cramming for a medical school exam. When one actively uses something, there is a natural spaced repetition of the things that matter. With the frequencies as these things are used…

> When one actively uses something, there is a natural spaced repetition of the things that matter. With the frequencies as these things are used in practice. Everything else can be looked up later.

Disagree: There's a grey area in the middle where it is costly to always look it up, but you don't do it often enough to ever be ingrained in memory. SRS is a fairly effortless way to cure it.

When I started my current job (somewhat math heavy), I didn't know enough background material. So I got put on a "side" project while I learn the main material. Unfortunately, that side project became fairly big so I didn't have too much time to study the bread and butter of that job. I would read a little from a text book every few weeks. Without SRS, there is no way that I would be able to do it. The frequency is low enough that natural reading would not preserve anything in memory, and it is one of those books that constantly refers to prior theorems/definitions.

> For programming, maths, physics, etc - "I forgot" means more or less "it is more time-efficient to google it once a few years than put effort in storing in in my memory".

You really cannot do mathematics well that way. When proving a theorem, you often will not even remember there is a theorem that could help you unless it's already in memory.

I once took a course on measure theory where it was a given that at least one question on each exam would be to prove a random theorem in the book. This was frustrating - since when should math require memorizing? And memorizing all the theorems? Sheesh!

When I was preparing for the final exam, I did attempt to memorize all the proofs. And then it hit me: There were certain proof techniques that were common to many proofs, and I had not picked up on it by merely doing the assigned problems.

This was a decade ago, when I did not use SRS (did try, but failed that time). Looking back at my experience in math courses, I realize that memory was definitely a bottleneck. Remembering certain theorems you took in a course a few semesters ago just wasn't happening beyond a certain young age (20). If I ever were to go back to math, I would definitely attempt some SRS use.

Of course, SRS alone won't cut it. You still need to solve lots of problems.

Oh, and after a decade of very heavy Emacs use, I tried using SRS to get better. And I did. A lot. So even heavy use isn't much of a guarantee that things will stick.

Re: Ask HN: How do you learn complex, dense technical information?

#65
I do not have advice directly addressing your question about how to read, but I will say this:

A lot of this complex-dense-technical stuff is difficult precisely because it can get abstract. That is true for example in writing proper C for kernel development (your field) and physics (my old field) and chess (everybody's field).

My solution is to do lots of exercises and learn lots of examples before learning these big theories. Essentially I think learning is fundamentally Pain. You have to take on the pain before the learning can alleviate it, if you try to skip the pain then you have only a superficial idea of what you're talking about.

So like if I am learning Go, I am writing a command line Fibonacci calculator in it, then I am rewriting this ground-up with test driven development so that I can learn what testing looks like in Go, then I might try to build an HTTP server, then I might connect it to a database, then I might learn how to mock the database. Each of these tasks I am setting for myself needs to be answered by consulting tutorials and references, but if I just follow a tutorial I will not build true knowledge, I will just know how to do things when someone is holding my hand.

Re: Ask HN: How do you learn complex, dense technical information?

#66

I'm a big fan of the idea of using Spaced Repetition for this. The idea is that it allows you to both: - be able to keep your knowledge / understanding of an area around for the long term; but also - be able to gradually build up your understanding by first committing the fundamentals to memory, and then using that to build up your level of abstraction and get to the more complex ideas and principles. Michael Nielsen…

SRS is great for memorizing truly unconnected pieces of information, like names of capital cities. For anything where the information is connected, it's a lot better to use those connections instead of drilling it in a decontextualized fragments via SRS.

> For anything where the information is connected, it's a lot better to use those connections instead of drilling it in a decontextualized fragments via SRS.

It's a false dichotomy. You can, and IMO should, do both.

Re: Ask HN: How do you learn complex, dense technical information?

#67
post #62

Similar to what others have said, do a quick pass once to get a sense of what the context/main concepts are. pass 2) read the headlines of each section. pass 3) read the bold words of each section and make note of them. pass 4) read the first and last sentence of each paragraph in the chapter. pass 5) read the whole chapter as you normally would. The increased/repeated exposure helps you to contextualize/relieves anx…

Something similar to this is the SQ3R method: https://en.wikipedia.org/wiki/SQ3R Several other comments on this thread mention similar methodologies, as well.

Never heard of this before, thanks!

Re: Ask HN: How do you learn complex, dense technical information?

#70
Complicated things are the product of a system of simple things. To do complex things well, you need to be able to do the simple things without consciously thinking about them. Expertise is what happens when a large mass of related things become easy so you don't think about them, so you can think about complex things made from the easy things.

For software, it's often about decomposing problems vs infrastructure to work on them. There's a great xkcd about that. Someone asks for an app that can take photos and tell if they're in a national park (easy)... but also tell if the photo is of a bird (incredibly hard). Lack of expertise is why people don't understand this. They don't recognize that they are two entirely separate problems, jumbled together as if they were one problem.

An area of expertise for me is playing guitar. Now, melodies are for the most part made of scales and arpeggios. So playing scales/arpeggios efficiently can be isolated from "music". And they're tied intensely to physical technique. So for instance, playing two notes per string is physically much different from playing three notes per string. By isolating scales and arpeggios into small chunks and practicing them independently, we can then easily integrate those chunks to form streams of melody, without having to do conscious thinking, because when playing music, conscious thinking is the enemy. It destroys rhythmic flow. But with a collection of instinct-level arpeggios and scales in my hands, I can just play, with my mind focused on emotions, ideas, and musical shapes, rather than which finger needs to land on which string to hit which note.

Programming is a lot like that. Once you've learned effective data structures, control flow, conditional behavior, etc, you shouldn't have to think about it much while you're coding, so you can focus on the problem, not the act of writing code. Or as I like to say, "That's not programming, that's just typing". And then you learn things like unit testing and TDD so you can free yourself even more from the line-level anxieties of the code.

Post reply on HN