Earlier quoted context omitted.
It's a weird feeling when I don't know how to do something so I practice a lot and I then still don't "know" how to do it but somehow I can do it.
Then the best part comes next: you read some more theory again, and suddenly it connects - the abstract becomes understandable in the context of pains and solutions suggested by gut. And now you have a solid piece of understanding you can reason from.
Ask HN: How do you learn complex, dense technical information?
121–130 of 181 posts
Re: Ask HN: How do you learn complex, dense technical information?
#122I guess my method for new frameworks / languages / etc is sort of a combination of top down and bottom up. I start with very high level overview, followed by a very simple tutorial, then work my way up in the hands-on path, and work my way down in the reading and theory path. One reinforces the other, so the reading does not remain abstract, and the practical has context.
Re: Ask HN: How do you learn complex, dense technical information?
#123Re: Ask HN: How do you learn complex, dense technical information?
#124I 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 bi…
That makes so much sense, thanks for the advice. I struggle with this too much nowadays, I just try too much to reach perfection too soon when learning new technologies. Thinking about this made me realize how this wasn't how I started when I was younger. I wasn't going for perfection, I was going for something that worked. Slowly afterward I learned the more technical parts, mostly by need, and the best practice, first by need, but then by desire. Nowadays I think that because I can handle some pretty technical knowledge, I can start by learning that, but seems like I waste quite a bit of time doing this and it just doesn't stick in my head.
Next time I'll learn something, I'll start that way, a crude experimentation, and then see from there the next steps. Screw the best practice, that'll just be another experimentation down the line, could even be some rewrite of previous experimentation.
Re: Ask HN: How do you learn complex, dense technical information?
#125Here is a concrete example how I learned Kubernetes:
1. I tried to get an overall sense of what is it: "Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications." - Ok that makes sense, but don't know what big part is it made from.
2. What problems does it solve and why? what are all the solutions? What features does it have?
3. What is the overall architecture? What parts does it have? API server, scheduler, controller managers, etc...
4. I installed it so I had to learn networking. What is a network plugin? How do they work? Learned most things which needed to running them.
5. What is the structure of it's API? You don't need to go into great details, just to see the big picture, like main api endpoints: /api/v1, /healthz, /logs, etc, etc...
6. Kubernetes Objects model high level overview. What are objects in Kubernetes? What Fields do they have? What are Controllers, Pods, Labels, Deployments, etc.
7. Authentication. How does it work, what methods does it have?
8. Services
9. ...
And so on. So basically you take ONCE concept at once and read everything until you feel you got the thing. For example, if you already understand the overall concepts, you can dive into what a Pod is by reading the article about it. I usually try to read the minimum number of manual PAGES until I confidentially grasp the entire concept I want to learn about.
By splitting huge and complex systems into small subsystems like this, you can become productive much sooner. Don't try to understand the whole thing at once.
You said you want to learn "kernel development". That's not gonna work, because the kernel itself consist of I don't know, thousands? of subsystems. So try to get an overall feeling. What are those subsystems? How can you split them into easy-to-digest parts? What is a driver? What parts does it have? What data structures are in the kernel? So if you try to learn "kernel development" from day one and learn "kernel development" until you can "develop for kernel", it won't work. First, you need to know what you don't know. :)
This is to verbose, but hope it helps.
Re: Ask HN: How do you learn complex, dense technical information?
#126Earlier quoted context omitted.
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 jo…
With enacs I find if it is not in my muscle memory it doesn’t matter if I consciously know about a feature. I can think “there must be some way of doing this” and then googling it and finding it as fast as I can stop my work and recall that in 2005 I used to have some good method of dooming this obscure use case of editing/process management.
Especially now with everything changing so quickly I find paying attention to the deep constraints and reserving the possible solutions from those conditions is more effective than trying to memorize a bunch of library or platform specific capabilities.
Re: Ask HN: How do you learn complex, dense technical information?
#127This is mostly related to systems or data modeling, but what works best for me is drawing diagrams that have lines which connect all the related components. Whether it’s call stacks, data (or energy flows in the case of circuits), or data models. I usually use a pen and paper. You’ll probably make mistakes or run out of space on the first attempt but that forces me to redraw it a few times which helps with memorizati…
Re: Ask HN: How do you learn complex, dense technical information?
#128I 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 bi…
I totally respect your opinion, but I think I fundamentally disagree with the idea that learning = pain. Project-driven learning seems more effective when the project is something that excites the learner. I might suggest that your ability to learn test-driven development in Go is actually driven by the fact that you're interested in Fibonacci calculators.
I'm not OP and my interpretation is probably not what he meant, but when I saw that line, I wasn't seeing learning as pain, but more so as living the pain that justify the better practice.
> Project-driven learning seems more effective when the project is something that excites the learner.
I agree completely on that, but we can easily screw up that part by going too technical too quick. It transform a quick and fun project, into something much bigger (learning take a long time) with much less direct result. Fibonacci is a great example I think because it's so quick to achieve, there's so much potential to improve it in multiple ways, and it doesn't require much technical knowledge of the development environment.
When I tried learning React, I was going for a fun quick project, but then I thought, well if I'm going to do that, I'll go with some database to store my data, an authentication layer seems also an obvious requirement, all deployed in dockers, with some server rendering, etc... Which individually all could be quite simple to add in crude ways, but theses decisions all stemmed from the fact that I wanted to reach perfection from the beginning, which make all theses individual feature now become something much bigger and much more complex to reach. If instead I just do the same project, no database, just a big array that I modify, stored in a cookie, no authentication, no dockers, no server rendering, I can build it much quicker, and thus learn what I need to improve much quicker too. Afterward I can add a database if that's what I want to go for, and then authentication, maybe some server rendering afterward and maybe, a docker to deploy it easily.
Re: Ask HN: How do you learn complex, dense technical information?
#129I guess my method for new frameworks / languages / etc is sort of a combination of top down and bottom up. I start with very high level overview, followed by a very simple tutorial, then work my way up in the hands-on path, and work my way down in the reading and theory path. One reinforces the other, so the reading does not remain abstract, and the practical has context.
For an actual framework I always like to step thru a typical unit of work line by line in the debugger, from accept to write (I mostly do server processes). It is surprisingly illuminating to see how IO is managed and hoe the layers interact and fit together. It gives data to build a robust mental model of the framework. This is why I weep when I see some Spring backtracks with 100 or so stack layers.