Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How Do You Learn?
274 points by ggktk on Sept 10, 2021 | hide | past | favorite | 171 comments
Do you use techniques like spaced repetition? Do you prefer to learn from books, articles or videos?

What's your process?

I'm 48 and have gone through this process countless times, it feels like familiar rote:

1. Explore the subject almost randomly. Neither depth-first nor breadth-first; just follow threads that seem most useful or most interesting. Books, articles, videos, classes, whatever - it doesn't matter as long as you don't get bored. Dabble in all of them. If there are any practical skills involved (motion, writing code, etc) start doing those immediately.

2. At some point you get the ah-hah! moment. It is like the fog lifts and you can suddenly see the landscape. You don't know everything but now it seems like further knowledge is just a process of filling holes. You wield your knowledge to accomplish what you need by filling specific holes on-demand. Everything fits together like jigsaw puzzle pieces.

The time between #1 and #2 can be short or long depending on the complexity of the subject. But the experience of #2 is a massive dopamine rush. The main thing you need is patience; don't get frustrated and give up, you know that if you just keep poking around, eventually that dopamine rush will come.

I'm home-schooling my daughter in math because Zoom and it not agreeing with her. She did great last semester and tests several years ahead and has a very intuitive sense of why things work the way they do, I'd like to keep her interest.

However, we're now on to pre-algebra and using this book [0], "Prealgebra: The Art of Problem Solving". The first chapter is all about axioms, proofs of some sort, breaking down "obvious" conclusions back to their constituent proof-from-first-principles and it's not agreeing with her at all. Since this is the first week I'm struggling to find a way to have it all make sense, and I've concluded we need to kind of skip much of this first chapter (we'll look at the summary) and get to the later content which is more intuitive and applies "obvious" principles, and come back periodically to revisit the more mechanistic content in the first chapter. I think the parent post's description of exploring a topic matches how my daughter will come to understand the whole "algebra stack." (Wish me luck.)

[0] https://www.amazon.com/Prealgebra-Richard-Rusczyk/dp/1934124... , Amazon: "Prealgebra: The Art of Problem Solving"

I tutored algebra students and I reccommend the following approach with Khan academy/Openstax resources.

Order of Operations(No Variable)

Order of Operations(One Variable)

Advanced Order of Operations (One Variable)*optional

- Logs, Roots, Exponentials

- Polynomial multiplication/Factorization

Change the variable to random symbols

- Greek characters, shapes, animals

Order of Operations(Multiple Variables)

Introduce functions

- f(x) = mx + b

Connect Order of Operations with Functions

- Simplify an equation and plot as a function

Introduce units (basic physics equations)

- Simplify to formula and Plot

The goal in formal classes is to introduce order of operations with variables, the concept of functions, and how to manipulate those functions. If you are stem oriented, then this is the perfect time to introduce dimensional analysis(units) and physics-based functions. Instilling a sense of confidence and comfort with algebraic manipulation is critical. Prepping her for physics and working with functions is just smart.

Breaking things down to their basic axioms and rebuilding them with proofs is arguably quite an advanced approach. By Terry Tao's three stages of of rigour classification [0], this perspective isn't typical until undergraduate study.

It doesn't seem like a bad idea to give a taste of it significantly earlier, but I don't think it's surprising if someone without a more mature relationship with mathematics doesn't find much value in 'going back to basics.' If your daughter is doing well with a more intuitive approach it sounds like a good idea to stick with it for now.

[0] https://terrytao.wordpress.com/career-advice/theres-more-to-...

This feels like the math equivalent of learning to program by reading an assembly spec document, to be sure.

Art of Problem Solving is great - I think they take credit for the US Math olympiad team's performance. I use books from the same organization at elementary school level and find them very good and fun to teach. I would recommend going a level lower among the books published by them [1] to see if that is a good starting point for your child. Their website also has some placement tests etc. to evaluate the right level for a student.


There's two hurdles for the pre-algebra student: numbers being generically represented as letters and the idea of axioms being generic rules for numbers. Check to see which issue or both is misunderstood. If it's numbers as letters, show them any interactive programming environment and demonstrate the idea of letters as generic numbers. From there, axioms are just more interactive demonstration.

I remember my mom struggling to teach me pre-algebra ahead of the school curriculum. My uncle (a math teacher) mailed us a bunch of "part-is-to-whole-as-part-is-to-whole" word problems of increasing complexity and various forms, and working through those made a lot of things click. The concreteness helped, and it also made me understand the equivalence between proportions, fractions, decimals, percents, and their real-world concepts, plus it has some simple solve-for-x attached to it. And it's learning-by-doing instead of learning-by-reading.

Use a basic text book, TAoPS series is intended to be quite advanced.

To expand on 1, I think it's been important for me to have some anchor points along the way. Some things I can "accomplish" however small they may be that, if nothing else, help me feel like I'm making progress I won't lose, even if full understanding takes much longer. Otherwise, backsliding in interest can mean the next time I get interested, I'm faced with the prospect of starting over from scratch, which can sometimes mean I just move on to something else.

Completely agree. I usually start with a trivial step and then build from it. Keeping notes on paper, in a markdown doc or jupyter notebook as appropriate is also useful. I have notes that I still look back at to remind me of details of areas I haven't used in a while.

The don't get bored part is really important. If it's not something you are required to learn, but instead you want to, then keep being interested and passionate is the best thing. There's no use in trying to optimize your learning at the very beginning if you drop it entirely in a month

It's fairly similar from what I've observed myself, but I'd say the ah-hah! moment for a given subject is not a singular event, but can be repeated if you look at the same subject from a different angle and get a different insight, deeper understanding of the solution or even of the problem. But maybe that's because learning in my case often is very much intertwined with trying to solve a problem.

And there's:

-1. Come across the solution by talking to people, reading books, articles, videos... long before actually needing it, sometimes not even being able to recall it in the next steps until the ah-hah! moment.

0. Have an actual need for that solution due to a problem you're trying to solve. And having that feeling of "there is a solution for this" but not being able to put your finger on it.

Talking to people helps a lot to speed up the process because everyone will have their own view on things which helps to shape your own understanding of the subject.

An issue I have is often shortly after 2 the excitement is over for me and I like going back to 1 in some other subject.

Exercise increases blood flow to the brain and improves cognition as you age.

I agree with this. I would add that for me part of 1 is almost akin to pain. The frustration and annoyance I feel makes this part painful, but also when I get to 2 it's amazing. I hate feeling around in the dark but when the light comes on...

This resonates to my own experience! I'd only add that the step #2 (ah-hah! moments) are not singular, but milestones in a cycle. Being patient and pushing through #1 is definitely rewarding and expands to new fronts.

On point 1), sometimes an approach to this is helping others. That might mean answering stackoverflow questions, or helping someone on IRC or Slack.

Mentoring/helping others helps solidify your own understanding.

This mirrors my own experience over a 5 distinct fields

> But the experience of #2 is a massive dopamine rush. The main thing you need is patience; don't get frustrated and give up, you know that if you just keep poking around, eventually that dopamine rush will come.

I completely agree with you. I remember feeling the dopamine rush when I saw the 3b1b's video lectures on linear algebra and Andrew Ng's Machine Learning Lecture.

Although I strongly feel that simply reading books and watching video lectures are not the best way to learn on your own. You have to re-read them, use them, do the exercises and talk with peers to really get the underlying ideas. Maybe some better explainations exist, but hoping that you randomly stumble upon them as you browse through online articles is not a good idea, IMHO.

I like this quote from Prof. Michael Jordan:

"the first time you barely understand, the second time you start to get it, and the third time it all seems obvious."

You have to work with the material and come back to it again and again to really understand.

I have created a conversational learning medium, Primer, that is designed for self-learners. Our goal, right now, is to create conversational undergraduate-level computer science courses for anyone to learn on their.

It's primary focus is to bring resumability in play which books and video lectures lack. What I mean by that is that when you learn something from a book and video lectures, you start forgetting about it the minute you stop. After a month or so, your memory of the topics are maybe less than 30%. And if you haven't created flashcards or notes, then you have to skim over the book or watch the lectures to recollect.

On Primer, flashcards are automatically generated and your responses stored in the platform along with inline completions help to retrace & recover what you have learned. You can do the course for a while and resume again after quitting for a couple of months or years. Your responses act as memory breadcrumbs to help you retrace what you have learned.

You can test our two free courses over at https://primerlabs.io. ( No signup required ).

I have also created two comics-post about conversational learning that some of you may find useful.

1. Introducing Primer: https://primerlabs.io/comics/introducing-primer-comics/

2. Memory Breadcrumbs & Memory Trails: https://primerlabs.io/comics/memory-breadcrumbs-comics/

In the end, you have to treat everything as something you will eventually come back and update. That's why I like networked-thoughts tool like Roam and obsidian, a little too much maybe.

This looks cool. Your product overlaps somewhat with Oppia (an open source tool for creating interactive 'explorations'). If you haven't seen it, I recommend you check it out.

This is really cool, https://github.com/oppia/oppia

Reminds me a bit of HyperCard. What is your interest in Oppia? I dabble in these things, but was thinking of working on some shared "decks" with my kid.

I'm interested in anything that has the potential to improve education, especially if it can do it at scale.

I'm not involved with the Oppia foundation, but I know Sean from my time at Google.

I started creating an exploration about accounting at https://www.oppia.org/explore/pepGU0qbyoUm but it's not complete and I haven't improved it since I created it.

Following through your oppia quiz, it reminds me of interactive fiction. I could see one being used for the other here.



In the exploration I linked, the only types of interaction offered to the learner were either ok/proceed, or 'answer this textual multiple choice question'. This may make it seem like Oppia doesn't do much more than software for interactive fiction.

BUT Oppia has lots of other interaction types: https://github.com/oppia/oppia/tree/develop/extensions/inter...

For example, you can input music notes: https://github.com/oppia/oppia/issues/4842

Or ask the learner to enter a fraction, or to sort some objects.

There are more similarity between things like Oppia and interactive fiction, I don't see them at odds. It is is wonderful that Oppia has a musical notation interface.

If you zoom out far enough, everything could be considered a quiz.

This will all be on the test.

This is the best way. I hate that school doesn't let you do it this way. School is too linear.

This reply made my day!

Thank you for your response.

Thank you

Great advice

I have recently got myself back into studying mathematics as a hobby. The last time I studied mathematics for a considerable length of time was 18 years ago! I picked analytic number theory as the topic for this new hobby. I did a Tell HN [1] too about it 6 months ago. Thanks to that post and the awesome HN community, we now have a book club around it that has been going consistently since then. In fact, incidentally I published a new blog post about it discussing the learning experience about half an hour ago. [2]

I talk about this book club here on HN often, so at the risk of repeating myself, I do want to mention on this thread that as a result of these ongoing book club meetings, I realized something interesting. I realized that studying and learning in a social setting like this ensures constant progress. The risk of discontinuing the learning activity due to other priorities of life becomes lower. No matter what, barring exceptional circumstances, I know that I need to sit with our book club for 40 minutes everyday and work through a few pages of the book together. I think that kind of consistency is very important while learning an abstract topic like this that we are learning purely for the joy of learning! Further, the insights that the book club members share with each other during the group study is a nice bonus!

[1] https://news.ycombinator.com/item?id=26366464

[2] https://offbeat.cc/blog/our-trip-to-the-prime-number-theorem...

I'm doing the same thing with a different approach. I'm rubber duck debugging my learning by typing things out and going into lots of numerical examples with the help of Python.

It's a very verbose way of learning but i can say i now truly understand Euler's theorem and Fermat's little theorem. I'm continuing this right now. The end goal will be to go deep on everything about RSA including the state of the art factorization algorithms.

Current start documented here:


Edit: All my formatting was messed up. I'll fix it when i finish, i'm sure it's not a mystery that the powers are meant to be superscripted though.

Can you do rubber duck learning with any topic? I always wanted to learn Fourier transformations and related topics, but I completely forgot all high school and uni math, so I have to start from scratch and it seems like a huge commitement.

Sure, just type what you need to know, an idea for how to look at it and start playing.

The play part is how i get it. eg. Writing python code to generate exponents... Oh now i get why exponents loop under modulo!

I have just the book for you :-)

Buy yourself a copy of; Who Is Fourier?: A Mathematical Adventure (any edition will do) and study it. Check reviews on Amazon and elsewhere. This is a great book written in Manga style which is highly approachable.

I created /r/teamdo to enable something like this in general as I felt there is nothing existing. Perhaps there is but I am not aware. Unfortunately just creating a subreddit is not enough, there is hardly any traction.

I unlocked my learning through working on cars and programming.

Learning theory is useless for me, at some point I used to think that I may be dumb. It wasn't until I reached college and was top of class in all CS classes. Not bragging I honestly used to think I was not intelligent.

I learn through books and videos. However, the real learning happens to me when I am given a problem and need to come up with a solution.

As an example, I didn't know anything electrical about cars, I also had just an idea of how a fuel system works. Until, I installed an engine in my car and it would not start without any error codes. I went and studied the complete fuel system and how it works. Everything was just clicking as I had a faint idea of it.

Then, I did a bit of troubleshooting after reading, I figured out part of the puzzle, the fuel pump on the engine was not powering on. Therefore, it was power issue. I started reading about everything electrical, how to test if the fuel pump is getting power.....and discovered that it was lose ground.

Today, I am complete car nerd, I know how to use professional scanners and read data from different sensors. I no longer replace things in the dark.

Plus, this boosted my programming skills. Building business applications I never encountered a problem I could not solve.

I even studied negotiating techniques before car buying to practice. This allowed me to double my salary in 3 years as a software dev. I am ice cold during salary negotiations and can recognize tactics potential employers or recruiters can use to gain an advantage.

Long story short, when I was a kid I attended a school that was operated by Scientologists. L Ron Hubbard had some strong feelings on how to learn, and so the curriculum at my school followed suit.

I do think that a lot of what I did as a kid - clearing misunderstood words, using clay models or drawings or physical blocks to understand concepts - has been instrumental to my ability to learn new stuff.

I do not endorse or support Scientology by any means, but a lot of this is true: http://www.studytechnology.org/sh1_1.html

Some of the ideas are useful, as long as you don't dogmatically insist that they apply to all problems.

People using words they don't understand, that is definitely a problem. Actually, two different problems: either they believe that the word means something else, or they just parrot words without thinking about their meaning at all. Both are problems, but require different approaches to fix.

Sometimes you understand each word in the sentence, but you still don't understand the entire sentence. Maybe the sentence is unnecessarily complex or abstract. Or maybe it is a statement of "what", but you don't understand "why"; like if you read Fermat's Last Theorem.

And sometimes (and this is the part Scientologists don't want to hear), the statement is just plainly false or nonsensical, and learning the meaning of every single word in a dictionary is not going to help with that. Though you can force people into submission by making them read the dictionary long enough that they give up and pretend that the statement now makes perfect sense to them.

Similarly, engaging multiple senses is helpful. Describe by words, make people repeat using their own words, make them write notes, show a picture or an animation, let them draw their own pictures, use Lego pieces or clay models, whatever. It is not the magic of clay (although the clay is quite flexible), but the magic of approaching the same concept from many angles.

I suspect that most low-level Scientologist teachings were created by taking some respected ideas (of given era) generated by someone else, and making them simple and dogmatic. (The high-level teaching about removing evil spirits from your body are unrelated to anything practical.)

Knowing nothing about Scientology, it seems to mix a lot of practicality with mysticism as a complete system. Coming from that sort of background, what would you say is the best single source of guidance for a ‘complete system’ of modern practicality?

Pick something controversial on the subject, explore alternate viewpoints and dig deep enough to form your own opinion. For example, when learning about nutrition, whether Keto works or not is a good controversy. One might start with Gary Taub's book, read its reviews and criticisms, read the source material that is cited by the proponents and detractors, read papers cited by those papers, until one is comfortable forming their own opinion.

Controversies are found at the cutting edge of most fields and analyzing arguments that take the "settled" knowledge in the field and still reach contradictory conclusions provides a lot of insight into the body of knowledge in the field and how much of it is really settled.

> whether Keto works or not is a good controversy

is it good? from the very little research i did, it sounds like it "depends on the person"?

One thing I’ll add, regardless of the medium of information, I absolutely have to have a big picture real-world view of the context or it’s incredibly hard to learn. I may memorize things easily but it’s just data until I understand how all the parts fit together and see it working. No matter how it’s explained, until I see it for myself it won’t click or I’ll imagine something that makes sense but isn’t the same as the actual reality.

It’s a blessing and a curse, I have great big picture creating thinking abilities, seeing things that aren’t there but could be, however I also often have to “learn the hard way” in many areas of life because I don’t internalize things second-hand very well.

I learn by do.

I set up a project, and assume that it will require whatever it is I want to learn, then, I figure it out as I go.

This is what I plan to do with SwiftUI. I have taken a number of courses, and read a bunch of stuff, but these have only a transitory home in my noggin.

I won't really know it, until I have done a few projects with it.

The project that I'm currently working on, is based on "classic" UIKit. I was not confident enough in SwiftUI to do it. It's fairly ambitious, and the fact that I don't know that much about SwiftUI, was the reason I chose not to use it. I have had projects, in the past, where I banked on an unknown, or partly-known, technology, only to have it hit a block, further in.

I already know what I'll be doing for the first couple of SwiftUI projects, but it will be a while, before I get there.

I learn by doing as well. It's the only way to learn for me really.

So I just dive in and do. Looking up stuff as I need it. There's usually a lot of crap info out there but I just need enough to get around a piece of bad docs here or unintuitive UI/commands/syntax there.

The thing is that I learn best like this when I'm not 'on the clock'. If I need to get a project done in a particular timeframe and use something new I'll fight against it. Don't want to do it. I don't know enough about it.

If you give me the time and leisure to work through it I'll get it done in the time it needs and I'll learn whatever needs to be learned to accomplish it.

I'm not deadline driven. Deadlines lock me up. I'm value driven. I know most people need a deadline to work against to not procrastinate and cram at the end. Doesn't work for me. I turned in my masters thesis weeks in advance.

Same here! I'd have done very well with an apprenticeship vs schooling, I feel, but it was never really an option for me. Although… I guess all that open-source software I helped with kind of was an apprenticeship in the end. Hm.

If it's a subject that can be delivered by textbook, then I'll build mindmaps using FreePlane:


The way I author the mindmaps is to form trunks of major subjects which then distil down to the details. I'll add questions to myself into the subtrees.

When it comes to revision, I'll "contract" the entire map (there's a button in FreePlane to do this), then I'll take each branch in turn and try and answer (on a piece of paper) the questions I've left for myself. As you progress through the mindmap, you are expanding all the branches out.

This works for me for 2 reasons: - reinforcement learning through the questions I've left myself - remembering places / locations is something the human mind is very good at, and fits well with the current theory of the mind (reference frames, etc).

This is a great strategy. Can you post a sample mindmap?

Sure, this is my attempt to learn CompTIA Network+ :


(This is a onedrive link - hope it works!)

I keep a pad of paper next to me. Though I do nearly everything on the computer, I use paper to write down anything I need to look up later. The list isn't for things I need to learn, but for how to do something I need to know how to do on a regular basis. If I were studying math, and I knew how to use a theorem but didn't understand how it worked, I might write that down. The point of the pad is to keep on task and only take a brief note.

For any programming language there are two other things I do. First, I make a repo with a bunch of nested directories that I'll add to. So I'll have something like Array -> Iteration, and that might contain 5 different programs going through different types of iteration. Yes, a book will have that, but actually coding it really helps it sink in.

The first place I look for resources (even before something like <language>.com) is stackoverflow. Search for the tag of the language (like "[go]"), then click "Learn more...". I've found these lists of resources to be the best jumping off point, though the language may vary.

Again I use the pad for details of the language. There are times when I know I'm doing something that works but is maybe slow or looks ugly because the language has facilities to do it more cleanly.

Then there are the personal differences. I've reached a decent level of fluency in 2 other languages. I really struggled early on with typical instruction until I tailored study to my style of learning. Where most people seem to learn new words through use and context, I did so much better by learning them on paper -- to the point where it was a substantial departure from the rest of the class. So my point here is to figure out what works and don't be afraid to do things differently.

0. Find your search term! The thing or field you are looking to learn about almost certainly has a specific phrase that describes it that may or may not be intuitive; if you're building an internal search engine you want to look up "information retrieval". If you want to build an internet airplane, go search "high altitude platform systems". If you want to remind people to take their pills it's "medication adherence". Removing background sound from a recording is "denoising" and "speech enhancement". Finding the right terms lets you discover what others have done and pose your questions well. Search for papers and posts that mention the "plain English" version of your query until you find your actual search term.

1. If there's an introductory textbook on the field, grab it and read it. Almost nobody does this in professional life - how often do you see people reading books in the workplace? By analogy if there are solid "overview" papers recently published that outline the state of the art in a field, read through that.

2. Find experts in the field to help you pose your problem well. Papers literally have the email addresses of the author and it's not hard to find book authors. Reach out through your network and cold. Practitioners love to talk about their work and get people excited about their field.

3. Find online classes and tutorials; Udemy, Coursera, or even speciality ones like Harvard Medical. Be willing to drop a few hundred dollars to educate yourself.

4. Tinker and share. Start with "toy" or modest projects. Don't be embarrassed at having extremely limited scope. Small things (IT setup issues, misalignments, etc) are going to consume a huge amount of time but grind through it and don't be afraid to ask for help and ask dumb questions. When you find bugs or typos in others' work, speak up. See if you can get some even basic PRs landed. Start contributing to the community. Write about what you've learned so far: what's surprised you and what it seems is maybe missing.

5. Convene: is there a conference or meetup for folks who do this? Show up. If there's not, put this together. The first DevHouse we threw was a dozen folks in my living room but we kept throwing them until we had 2,000 folks taking over two blocks of Palo Alto. Convening isn't hard to do but few do it and it gives tremendous value both to the community as well as to yourself as host. Get people to give short (5min) interesting talks. Get to know folks and connect them with each other. Don't be mercenary, just seek to help however you can.

The hard way.

Actually a few processes that are combined depending on the domain.

(1) Reading. At this I am relentless. I used to read technical documentation (say the manual for the Spring framework or maven) on a tablet while doing cardio at the gym.

If at all possible I like to know the official documentation for whatever toolset I am using like the back of my hand. I learn how to find answers quickly in, say, the Python manual, and avoid wasting time with Google, Stack Overflow, Spam Blogs and other places you find wrong answers.

In some cases there is no official documentation, it is not good, or it is a book you buy. (Buy Hickey's book on Clojure!)

Lately I hurt my leg and had more time to read, I so read enough books about love that I had to take a break and read trashy SF instead. This project has had the structure "Read book A", "Scan the references in Book A, get references (from 5-80%) from the library, look at the areas in the stack close to the references, read those, repeat." This project is unusual because it has a high fraction of fiction mixed in with the non-fiction.

(2) Doing. Here it is a matter of having a gradient of tasks. I hate to break it to you but spaced repetition, flashcards, etc. are useless when it comes to math. Instead you solve problems.

About a year ago I challenged myself to print something on an inkjet printer every day to keep it from drying out. I had no idea how that this would turn out, the kind of problems that I would run into (I felt I hit a "crisis" of some kind every two months), that I was developing for the metaverse before people started talking about the metaverse, or that with 15 cents of materials I could make somebody spend $1500 (not by causing property damage!)

For a while I made prints of anime characters and then art reproductions, now my main activity is developing a repeatable workflow for photos I take myself. Personally I find it a "hard problem" that there is "something missing" in the prints I make from my camera but I realized I couldn't fix this problem one print at a time but it was something I'd get after doing a long series of them.

Yes. Simply reading the official documentation (not the raw api-reference) is often underrated. Doing this avoids getting trapped in some third party blog or tutorial where the author completely misunderstood the topic, explains some old version, adds more dependencies than needed, or don't use best practices of the tool (W3Schools anyone?). Offical docs often have more explanation of the internal architecture and not just a cookie-cutter template to follow. Finally it eventually helps you get more acquainted with the official api reference which you are more likely to need in the future.

It can be quite daunting at first though. My strategy lately for this is

1) Accept that the documentation is big and will require some dedicated time for reading, not just a 10min elevator-pitch-tutorial between two meetings.

2) Skim through the table of contents, then continue reading the first paragraph of ALL pages and give each page glance. Write notes on which pages that you need to read and now and which ones you can save until you are web-scale. This step is important before you really start reading. It will teach you which topics that are important and give you a sense of exactly how much you need to learn, see it as some kind of internal progress-bar. You will also categorize which topics requires trying things out hands-on vs which topics you can bring to the tablet and read on the bus.

This step also helps you avoid traps you might end up in when reading things in order like "Congratulations for finishing tutorial 1, this was actually the old deprecated way of doing things, in tutorial 2 we will show the new better way of doing things and you will now truly understand the beauty of this improved design., or missing the last page on important security differences between debug and production mode.

3) Read. Now that you know the important topics and you've allow yourself to just sit down and just read them top to bottom. Allow jumping between topics if you get stuck somewhere. Set up a local environment to try things out on the way, confirm your assumptions, otherwise read more about that topic. Check the api reference if there are classes not described in the topics and figure out why.

From here you can transition more and more into innovative exploration and implementation of what you want to create, only reaching for the docs when you get stuck.

In previous iterations of this thread I think various people recommended the "Learning How to Learn" course on Coursera. I think the consensus for learning tech related concepts in the aforementioned thread was that many people learn well by building things. I like to read books for most forms of learning, although for things like complicated algorithms I prefer to watch videos. I also like to use spaced repetition for more specific uses like vocabulary - anki/supermemo seem to highly recommended here for automating spaced repetition.

coursera course: https://www.coursera.org/learn/learning-how-to-learn

a previous thread: https://news.ycombinator.com/item?id=23211184

>Do you use techniques like spaced repetition?

I see spaced repetition tools like Anki and clones on the front page HN every month but in the tech world, I've never needed to rote memorize items that would require it. The challenge is understanding a new confusing topic rather than memorization.

Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.

>Do you prefer to learn from books, articles or videos?

All the above because they have different strengths.

- books: good for more foundational information (theory) but will be out-of-date on software tools and cutting edge info (e.g. latest machine learning developments). When using books to learn a subject, I always read 2 or more in parallel to get different authors explanations. Many times, one author will explain a topic in a better way than the other. A huge problem with books (and book publishing in general for all domains) is the avoidance to criticize or find faults in ideas. E.g. a Java book will not "point out all the problems with Java". To fill in that knowledge gap, you have to supplement with blogs/videos.

- articles/blogs: more up-to-date info on tools usage. Also because web articles have less "unspoken etiquette" about omitting criticism, you have a higher chance of reading about the negatives and drawbacks of whatever topic you're learning.

- videos: good for visual explanation of tools usage. E.g. Tutorials on IDEs.

So an example application of the above roadmap for me learning Javascript:

- book: O'Reilly book "Javascript in a Nutshell"

- video: watch a bunch of videos for learning F12 Google Chrome Dev Tools to inspect Javascript

- articles: learn what the new Javascript runtime Deno is about because books won't cover that topic.

Like many other tech topics including Javascript, I didn't have a need for spaced repetition techniques.

> Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.

I'll give a few examples of cards that I have.

> Why is the time complexity of Java's List#subList constant?

> Why are OOM errors common in Spark?

> What does EXPLAIN do in Postgres?

> How do you run a command on the command line in Vim?

> How are map entries in HBase/BigTable sorted?

> Why are HBase column families difficult to modify?

> When should you use a JtaTransactionManager?

> What makes read-your-writes consistency difficult?

> Why does ElasticSearch not have transactions?

> What is a common implementation for JPA?

> What is the observer pattern?

> What is syslog?

It's definitely helped me as a software engineer.

Here is a guide on making better prompts: https://andymatuschak.org/prompts/

Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.

That's the easiest and most known use case of anki, but hardly the only things suitable.

In any case, memorization is always made easier if you understand a concept, and yes you can ask conceptual questions in anki.

For example of a conceptual question: Q: What is the purpose of an aileron? A: To control the roll of an aircraft.

Then you ask the question: Q: The roll of an airplane is on what axis? A: longitudinal axis.

Or maybe this prompt? Q: What component controls the roll of an aircraft? A: The aileron.

Then you can continue to ask question like what forces limit the speed of an airplane, or what makes it fall, or what control surface do you need to use if you want to increase elevation of an airplane, and so forth.

I'm going to agree with @dempedempe , and throw out examples of questions (not company-specific) that I've added in the last week:

> The git command that returns the .git directory that's controlling the directory you're in is git rev-parse --absolute-git-dir .

> In Scala, you have an array, a. What's the best way to turn a into a String? a.mkString(" ")

> In HTML, how do you tell an li tag to start at 3? <li value="3">

> In Scala, how do you do exponentiation? Use scala.math.pow(). Do not use Math.pow().

> In Scala, you have a variable "val l: List[SNid]". How do you convert l to a ListBuffer[SNid]? "l.to[ListBuffer]". Note that it's not "l.to[ListBuffer[SNid]]" or "l.asInstanceOf[ListBuffer[SNid]]"

> In multiple linear regression, is it better to have a large or a small RSE? A small RSE is better. RSE is the Reducible Standard Error.

These questions came from things I got wrong in the last week.

> Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.

The only case I can really think of is learning the useful shortcuts for your IDEs, especially if you're switching between multiple IDEs for multiple languages. But even then I would rather just note them down and look them up when I need them. I tried Anki to learn emacs shortcuts and it's just such a slug. I don't want to spend time daily to maintain a mental database of senseless shortcuts.

I'm very much someone who needs to write things to understand them.

Trying to figure out some new API that gives gross error messages and has zero useful documentation? I start writing down what I _think_ things do. Yhis pretty quickly

This is a huge one for me. I jot down random notes as I go. Some are very descriptive and detailed. Others are as simple as "things of this shape seem to have this property." Just getting it written down seems to help solidify things more quickly. I rarely re-read these notes.

Last year I started to handwrite notes, in cursive when possible, after 25 years of typing notes. My memory is quite poor. Handwriting notes has improved memory/recall/remembering by multiple orders of magnitude. At least it feels this way.

I am currently learning Spanish. - Use Babbel to bootstrap conversational Spanish [learning enough to express myself, but also those quick wins that keep it fun] - I handwrite the conjugations to learn verb tenses and moods [diving into the specific details] - I use anki (spaced rep) for learning verbs and nouns [expanding knowledge] - And I talk to native speakers, who have been more than happy to chat. [feedback loop]

I am not the brightest bulb in the shed and doing this with deliberate practice has gotten me pretty far in 6 weeks.

If we're talking about skill acquisition, I like to learn through making up random projects to do. Usually I'll read until I get the gist, start going as far as I can go before hitting a wall, then read some more. I don't have the patience to sit through videos; in-depth technical writing with realistic examples works best for me.

This is my process to learn a new skill...

1. Research on the topic using multiple sources.

2. Collate all the interesting and useful information into one location

3. Condense this information into a blog post/article(optional: publish it in a 1. learning in public system - there might be errors in this)

4. Create a plan to use this knowledge in a project

5. Do a retrospective after using the knowledge and seeing results - What worked, what didn't work, what can be improved.

6. Add these points to your article

7. Use the knowledge in another project(ideally, in a different contexts) and do the last 3 steps. You might have to do it 3-4 times before you have a decent understanding of it.

I've tried everything, but the only reliable way I've learned hard things is by diving straight in to something way over my head. Grinding through something with a dozen StackOverflow (or equivalent) tabs open is how I taught myself Javascript/React, HTML, Unreal Engine, and even Audacity. Note taking is probably "better", and I use spaced repetition if I have to memorize things, but the core method is just grinding on something I'm deeply interested in.

I am similar but I cannot for the life of me understand game engine workflows. Other libraries and frameworks I get after a while of reading docs etc, but the workflow for game engines is so different than what I normally do that I get thrown off course lol. Any tips for unreal?

After spending a ton of time with React/Javascript/Html/CSS it worked in my brain like this: - Game logic is your Javascript - Animations/Models/Textures are your CSS - Game objects (i.e. the character you control, NPCs) are like React components - Levels/Maps are your "database"

Now that I've typed that out, it almost doesn't make much sense. But that's how it fit together in my brain.

I don't know about a engine workflow, but I was inspired to make a few games in JavaScript after reading the book/website http://gameprogrammingpatterns.com by Robert Nystrom

That helped me understand frame-tick/physics-tick aspect at least, and how you could offload some processing onto separate queues of events.

This is basically how it works:

1. I submerge myself into that topic. I read blogs, I watch YouTube videos, I watch recorded conference videos, I talk to people working on that topic. I basically familiarize myself with that topic like I familiarize myself with a new place or the food of a new restaurant.

I just let all the information flow in. Slowly but surely.

I don't bother about getting it. I just learn about it.

When I am thus superficially familiar with the topic, interest and motivation is generated.

2. I then study good resources, the ones considered the best and most helpful- as I find them on relevant forums from real people. I read, I understand. 1 goes on in tandem. I don't intellectually cheap out on learning resources. I take notes on paper and occasionally study them.

3. I do. This is the single most important phase in my learning process. You can only learn properly if you do. I get hands-on practical knowledge and learn things that books or courses cannot teach efficiently. Makes 2 make much more sense, and makes 1 make total sense. Why I am doing something is extremely important. In this phase, I start noticing people who just talk superficially about that topic, like people generally do that about hot tech or quantum mechanics or macroecnomics but they themselves don't understand them well- the influencers, advocate s, popularizers, and the people trying hard to appear smart.

4. I talk about it and/or write about it. With the knowledge gained from amalgamation of 2 and 3, I talk in small groups, I write blogs. Really cement the knowledge and help me bridge gaps.

5. Doing, talking etc. goes on. I sometimes forget too theoretical knowledge that were on top of my head when doing 2, but not needed in the real world. I just have to go back. I am thinking of spaced-repetition or some other technique to remedy this. I am not sure if I should even remedy it.

This is how I do it.

Familiarize -> Learn -> Do

Oh, and I be patient. If I don't immediately gain satisfactory understanding of something (my standards are very high), I just be patient. As I know that the topics I know well, I have spent 2, 4, or even 10 years with some of them. Some things come slow.

And I always remeber when it comes to understanding something-

You must not fool yourself, and you are the easiest person to fool

~ Richard Feynman

I have no idea if it is good for anyone else, but I've had a lot of luck using "build your own wiki" tools, and specifically Obsidian.

I feel like when I'm learning about a subject I'm not super familiar with, it can feel like "drinking from a fire-hose". There's a million different proper nouns that you have to learn, and each one can be a rabbit hole in itself. I feel like with Obsidian/Roam/Logseq/Athens, it helps me focus on the high-level and drill down on tasks as I grow more familiar with the subject. It also creates, in my opinion, extremely easy-to-read notes later, more or less like I'm just reading through Wikipedia.

I don't think it's for everyone, I couldn't get my wife using it, but I genuinely do believe it has helped my knowledge-gathering a lot.


In regards to your second question, if you had asked me three years ago, I would have said videos, but honestly as I've gotten older, I don't think I have enough patience for them anymore, and generally prefer books for conceptual stuff, and articles for practical stuff. Videos are often way too slow, and I end up having to listen to it at 2x speed anyway.

The exception to that is if I'm trying to learn something somewhat interactive (e.g. how to use Blender or something).

My process is to dig in and really try to apply the knowledge in some place where it is required to solve the problem.

This has never failed me, but it’s hard, because it’s WORK. You can’t just sit and consume material (though consuming material is important). My typical strategy for consumption of material is to do such when I hit a road block in the application of my knowledge.

A few concrete examples to get the idea:

Want to learn about how cars work? Don’t take your car to a mechanic, force yourself to fix it.

Want to learn about electronics? Build an electronics project.

Want to learn about machine learning? Build an actual ML powered software application.

Want to learn about math? Use it to solve a real problem (physics/engineering has some of the most concrete representations of applied math from algebra to through differential equations, etc)

More difficult subjects will take more “projects” in order for you to gain in-depth knowledge. However, nothing beats experience at applying the knowledge in order to achieve true mastery.

Where some folks get hung up is they think they need to pass some knowledge threshold before they begin to try to apply it. I think this is false, for any application where a lack of knowledge is not actually dangerous. The sooner you try to apply what you know, the sooner you will master the subject.

My best success has been when I read a book on a topic so that I have a general idea of the workspace, and then jumping into a project from there.

If I remember where in the book information I need during the project is I'll use that, if not, DDG.

I also enjoy reading/hearing anecdotes from others, though that's less to learn details generally, and more to learn what's out there to learn about.


No, really. It took me a long time to realize that my brain sucks, and forgets things all the time. Writing things down gives me a frame of reference and physical (or digital) token of my knowledge. A lot of people champion the idea of a 'mental library,' and I believe a good Zettelkasten system lives in the brain much the same way.

I'm currently learning a language (Japanese) and I use a combination of spaced repetition and immersion. Specifically, I spent time reading books and watching TV shows that are a little bit above my level of comprehension, and when I see or hear words I don't recognize, I add those words to my Anki (spaced repetition) deck. I don't do this for each and every unrecognized word; that would be overwhelming–I aim for 10 new words per day.

I've been doing this for about a year and have made steady progress. The main limiter has been having enough time to immerse (read/listen) properly. I can manage 30 min to 1 hour per day but it's not enough.

Spaced repetition works really, really well though. I've thought about using it for other non-language things I want to memorize, but haven't yet done so.

I am trying currently to develop a learning system. I am by nature very curious and love reading and learning. I read daily 10s pages, articles, books, watch videos in many subject. However, I find myself forgetting most of it. Yesterday, I saw a wonderful book which I read last year (The Righteous Mind: Why Good People Are Divided by Politics and Religion), and I realized I don't even remember the main thesis of the book! This was a book that had a strong effect on me. Something is broken in the way I consume knowledge.

I feel that the main issue lies in the lack of repetition. I read a book on a subject, think about it a bit, then move on to something else, and in a year or so nothing is retained. The spaced repetition theory seems to provide an answer to this.

I have currently stumbled upon the software SuperMemo. In addition to the usual card stuff from anki, it allows something called "Incremental reading". This feels like the solution to my problem. The idea is that you read to learn. You can read about it more here http://super-memory.com/help/read.htm#Introduction_to_increm... but the main concepts are that:

- you add your readings to a priority queue

- the software schedule for you the readings

- you read and distill the main information at the same time

- the software revisits the information that you have distilled in intervals, each time you revisit information you improve over your distillation and create flashcards from it

I am still learning this new approach. I have to say, the software is extremely complicated and badly designed. I would love something like this would exist as a plugin to roam. A way for you to at the same time:

- determine the priorities of your reading and orchestrate them

- build a wiki-like knowledge graph

- easily create flash cards

- extract knowledge from articles

My best learning situations have been times where you read a little bit (or watch a video), and then have exercises to complete to implement the information, and good examples to refer to. You think you know it just by reading/watching, but once you try to use it, you find out you haven't really learned it (yet). Some of the examples that come to mind are old (1990s), but still stand out to me as a great way to really learn.

1. Teach Yourself Access in 24 hours (or something like that). It was a book that had a chapter/lesson and then exercises to utilize what you learned.

2. Learning Perl (the camel book). Same thing.

3. Nand2Tetris (I did the first course. Still need to do the second one.) I watched the video lessons, then did the exercises and submitted them for automatic checking.

Keep reading material on the subject until intuition starts to gel.

Edit: The material, in this case, will often be a niche Internet forum.

Familiarity - Follow communities and discussions, or try things and see how they go. Spend some time passively reading. Books are good. Videos typically have a low time to knowledge ratio as they pander to the YouTube algorithm. Projects are fantastic, but they're mostly tech-based.

Spaced Repetition - For concepts that don't appear regularly enough to be familiar, but are still useful enough to be in short term memory.

Knowledge Management - I have a personal knowledge management system based on recursive concept definitions. I define my knowledge at the highest level that I understand, and let the concept definitions fill in the first principles that I forget; I intuit that the current crop of note-taking apps aren't working on the right level, but haven't had the time to productionise my setup, and I'm happy enough that I'm not going to look for something better. I suppose this is also an application of the Feynman method.

I keep papers in Zotero for reference.

Forgetting & Ignorance - A lot of knowledge isn't valuable enough to me at this stage in my life. It's a shame that I'm not going to have an appreciation for the Roman emperors, but that's OK. Time is limited and it's important that you don't spend too much time on theory at the expense of practice.

Reading the answers here, I should aim to join more discussions

>I have a personal knowledge management system based on recursive concept definitions.

Would you consider open-sourcing this, even if it's not productionised or intended for use by others?

I'd like to, but I'm snowed under with other OSS projects right now, and there are both security and copyright issues to sort out.

I'll think about it in 2022. I'd like to start off with a Show HN using it for technical documentation.

I'm trying to find the original source but I'm lost. Here is a good step I recently stumbled into and it makes good sense. So, here it goes (not mine) super-condensed into a list;

1. Learn the Basics.

2. Read key reading material/analysis. Read papers, analysis, articles, etc. in that space.

3. Seek out key people. Find all the key people in the space, follow them. Engage in conversations with them or see what they talk about.

4. If possible, hang out in the community.

5. Write in Public. Last but probably most important, document your journey in public.

Ritalin extended release, an empty stomach, lots of caffeine

Move fast and break things. Mostly your stomach and your dopamine levels.

^ This is the real answer that actually reliability works

It is amazing how much you can absorb

Repeated exposure by doing it and failing

I'm currently using the Foam extension on VSCode. It allows me to take all my notes in markdown and can see a kind of starmap of my notes which shows the link between related concepts. I tried Zim (a personal wiki software) and org-roam (same thing as foam but with org files instead of markdown and much more terrible "starmaps"). I still have to use it much to retrieve my knowledge, but I really like how it allows me to take quick notes so far and forces me to think of connections between things.

The problem I had as a programmer working on legacy systems intermingled with new stuff is I had trouble finding my notes about stuff. Confluence's search is basically unusable and there's quite some overhead in using it to take notes in the first place. Using Zim/Foam lets me easily find the information I need when I need it.

Basically, I'm just not gonna remember everything that might become useful months/years from now so I dump everything in my own personal wiki and make sure it's easy to navigate/find stuff I need when I do remember I saw something similar before.

I learned how to learn from playing arcade games in the 80's.

First of all, read. Read the instructions on the game cabinet, the instructions on the screen, read the video game magazines, read the books of arcade game tips.

Second, watch the experts. I would never put a quarter in a new game until I had watched multiple people play and learn from that. Watching someone fail was a quarter they spent that I didn't. I wasn't rich.

Third, ask questions. If you've got access to experts, ask them how and why they do things. This got dicey in the arcade/7-11 since it was pretty working class and you had to be careful not to bother people, but if you could get them talking, that was information straight from the source. Invaluable.

Fourth, practice. Went to the 7-11 every day before school in the morning. Another session after school. Figure out what your weakest point is and target that. It can be brutal because the weakest points can be the parts you dislike or are not good at, but you have to decide if you want to be good or great. Might not be worth the pain if it's just a hobby.

This isn't my whole approach or anything (it builds on a really good education) but I find my continuous, lifelong learning of things I want in my soul to know about has reached a stable, always-improving habit by having a few stacks of the right books in reach in the right places.

On my toilet is a stack of dual-language books; German and Old English, Latin, French and Spanish, Ancient Greek, Japanese, as well as Shapiro's Introduction to Number Theory. Lots of Dover editions. Wittgenstein.

Next to my desk (on the second desk) there's always an open math book or two (Knuth Vol. 1 and From Frege to Gödel right now), as well as a few open notebooks.

By my bedside, a few works of great literature and philosophy (right now Rawls, Joyce, Homer).

In reach of the couch a variety of books on art history.

By the reading chair, well... lots of books.

I read, skip about, get stuck, forget things, but every day I dip into these little piles for a few minutes here, maybe an hour there if I'm lucky.

One thing I never care about anymore is finishing. My mind can grow a bit more, most of the time.

> On my toilet is a stack of dual-language books; [...]

What are those? Is this a book that has the same text in two languages side by side?

I'd be very interested to see an example of such a book because I recently translated the one of my math books from English[1] to French[2] and I was thinking of releasing a bilingual edition too.

[1] https://nobsmath.com/ [2] https://nobsmath.com/fr/

That is exactly what they are, a book with original on the left, English on the right.

The publisher Dover makes a whole series across several languages, and it's not too hard to find Greek and Latin classics.

Recently I see more specialty publishers moving into the space.

There's also interlinear dual language books, with a very literal but you-do-some-grammatical work translation of each word below.

For weird biographical reasons all of the philosopher Wittgenstein's books are published with German-English on facing pages.


For me it's been mostly a holistic approach:

Making time for deep focus

Prioritizing important work (whether its learning or executing on tasks) for the morning right after waking up

Healthy sleeping and eating habits

There are a plethora of tools out there to optimize your workflow, but I think that is more a matter of preference.

Videos can be hit or miss. The right videos can jam pack a ton of information and get you learning complex topics very quickly. Books and articles have their place too, though I tend to read later in the day into the evening when I'm more keen to winding down.

One common thing I tend to do: I may end my day working on something that leads me to a new pillar of information or complicated topic that I need to grok. In those situations, I stop the day there, and plan to wake up the next morning to research the topic (over coffee), and absorb any videos, articles, material I can get my hands on. Your brain can do amazing things with a little bit of caffeine and deep focus after a good night's sleep.

By trying and failing, depending on what I’m learning I prefer to take in knowledge differently though. For something physical, say piano, yoga, fixing a drain: video, something technical: text, language : audio. But for any of these things I seek out someone better than me, Since the pandemic started I’ve done video guitar lessons in addition to YouTube, yoga with Adrienne on YouTube, French lessons with a native tutor to brush up and At work, i reach out to people that are better than me at any concept or skill to set up one on one sessions and always offer to do the same with things I’m strong in. With that being said, I spend more time doing things through articles but feel the time other developers share with me I learn more faster.

Sorry I’m rambling, but, when possible I think it’s great to get a person better than you to help learn. For me personally, that level of accountability keeps me from falling off (which I still do, but, less)

Spaced repetition works great for me. Especially because it binds well with a pragmatic approach of professional learning : if I encounter a problem multiple times it is worth it to learn the solution to have it quickly. If I only encounter it once I don't need to.

My process is usually this one :

- Understand learning space ontology. Once I am able to visualize the concepts associated with the field and their relationships, I stop digging the theory and go to practice.

- Start practice: try to solve a simple problem in this learning space. Maximally use all information sources available to solve problems as we go (articles, youtube, wikipedia, blogs, anything). If I get confused I recognize that I missed some theory and go back to square one.

- Solve real use case, go back to step 2 if I get confused or blocked.

I usually get where I need in less than 6 steps. I use this in Software Engineering, Physics and Mathematics.

When I encounter a problem in an Ontolongy space I already encountered, I go directly to step 3.

Lately I've been finding more and more that the exact techniques I use are less important than my motivation. When I begin learning something new, I try to start some sort of project right away. It can just be something simple for myself, maybe just reading a kid's book in a new language, but it helps to ground me when I encounter tons of new information. Once I get excited about learning something, then the tools/tips so many of the other comments have mentioned help me learn better. But if I can't get that initial interest going, those techniques don't do much.

I'm not saying to only learn things you're passionate about- almost all of us will have to learn skills that we aren't particularly interested in. But finding some goal to push for beyond just "learn x" can give me that motivation.

In software, every year there's something new to be an expert in. Then to forget it three years down the road.

When I need to learn a new technology, I create a new Anki deck and a new Markdown or org-mode file. Every discrete bit of information that I collect goes into the file, with the URL or book name and page attributing it. That's mostly complete sentences, terms with definitions, and code examples.

The most important-seeming points go into Anki as well. I have Note Types for complete sentences (cloze deletions), for terms with definitions (with acronyms and synonyms as well), and for code examples (description-to-code and also code-to-description).

The nice thing is that I can forget a technology for a few years, but if I need to go back to it the knowledge is already laid out for me in an extremely information-dense format.

I'm 35 with an interest in mathematics but found my learning hampered by the school system I grew up in (encouraging rote learning etc). Now that I have the luxury of not prepping for exams, here's what I am doing. I am reading math oriented non-fiction books like "Fermat's last theorem" and grokking concepts like elliptic curves , Pythagoras theorem proof (yes, this is not just a formula :) ) and in general a lot of things I wish my teachers had taught me. I intend to do this and also expose my son to the concepts without having to stick to a curriculum. Next up are probably "Prime Obsession" which talks about Riemann.

An oh , take notes and preferably link them up in mind maps. That's how anything stays with me anyway

I learn any way I can. Having a purpose to learn helps (I need this knowledge, I want this knowledge because I think it's cool, etc). I will try books, videos, whatever works.

Like folded steel and alloys, I find that I learn things from lots of different angles, and appreciate the amalgamation.

Veritasium did a whole video [https://www.youtube.com/watch?v=rhgwIhB58PA] recently pointing out that it's really hard for us to self ascribe our best learning methods.

I'll take whatever works and try as many as I can to keep the experience as rich as possible. If there's any unifying theme for me, it's "I learn by embracing Humility, and avoiding Lazy".

I find the most important step in learning is to figure out the best learning material for the subject (which book, author, research paper or tutorial to go through). If you are going to invest days or months of your life, it's worth first spending a fraction of that time choosing the material.

Obviously it takes at least a skim to judge whether you feel the material is worthwhile. But being picky on this will likely pay off. Certain textbooks are so far superior that it's almost criminal the others are being sold. In some cases they were clearly knocked off by a prof to sell to their students, rephrasing the same material in a more confusing way and trying to take credit for the ideas without contributing much of anything.

I agree and am hoping that you will list some of the learning materials that you feel stand out as far superior :)

Those were some examples in mind, but the broader point was it's worth spending substantial time finding material that works for you.

Very true, and I've also found that revisiting/discovering old techniques or initial approaches often yields new insights.

Crash course for a programming language, for hardware or something, pictures. I write down notes into my own notetaking app. Drawing/writing helps me sadly (rote).

Depends if I'm learning to get something done or leisure. I don't know why but I can't stand reading large blocks of text so I usually pass it through a TTS like Amazon Polly to listen.

I'm passively working on my own browser extension NLP, nothing new, I was looking at this text summarizer on Rapid API that seems to be pretty good. Though I have to compare what it comes up with versus what I would summarize from an article. The NLP/summarizer are not relevant, just related to condensing info/peaking without reading through it like a thread.

My current learning process:

1. Consume input 2. Extract key points 3. Map key points into a model of what I am learning -> repeat

I read books & articles on ReMarkable and I make hand written notices OR I watch videos/learn online and put my notes into Scapple. I keep my data in OneDrive to access it from all devices. I brainstorm and rearange in Scapple.

Then I put it into Notion to build a knowledge database there. If I want to publish or share, I pipe it into .doc or .pdfs

Edit: The points are: a) I have a flow that turns input (learning material) into unstructured data (notes, scribbles), which is then turned into more structured data. b) this keeps me constantly engaged with what I'm learning as I keep rearanging and expanding my map/model

With great difficulty and often at the expense of sleep, leisure and other activities. I unfortunately don’t have a set process and doing exercises and making progress seems slow because it is slow!!

I love videos and articles these are the most efficient way to absorb essential concepts provided they are written/released either by experts or great teachers.

Books are good references and great resources for problems/exercises but working through an entire book can be a chore.

The only thing I can claim to be good at is that I am persistent and I come back again and again either to same material or similar material for deeper understanding.

Now part me still wishes I should have continued on in academia after my PhD, because there I had license to read.

This is an interesting topic, but simply put one learns better when enthusiasm and joy is there... small children learn by playing and that is the natural way of learning, so i would say if you can play with your topic you can learn it and the knowledge will stick because there is an emotional attachment to it. Research on this topic has been done by Dr. Gerald Hüther professor and neurobiologist. Also you can look up how unschooled kids learn (since there is no school they play all day long) and even succeed very easily when they decide to pursue college degrees... that brings lot of insight on how we as humans learn about the world around us (and the topics we like too)

I've gradually learned that it is very important, for me at least, to learn with other people. I'm not talking about sitting in a class with them, but instead chatting with another person about a particular topic once or twice a week, independently reading/investigating and then meeting up again to continue the discussion.

There is simply too much that can be known about anything for a serial learning style to be complete.

Having said that, the 'other' person can be yourself, but separated in time, which necessarily results in more gradual learning. In that case it's important to have good recall for what was known at time point a, b, c in order to measure learning.

Pick a project I want to work on where I can learn the skill, after doing background reading.

I do the same. Read enough about the topic that I'm sort of aware of what's possible and to get some terminology right.

After that it's project time. If I don't have a project of some sort it's impossible for me to get going. Then picks the simplest sub-problem, and build from there.

If it is something I absolutely need to know how to do, then I do it over and over only muscle memory kicks in. When I need to learn how to use LVM I most have create, delete, recreated expanded, reconfigured and killed a hundred volumes.

Not "how I learn" per-se, but how I make time for learning (biggest problem for me, by far) is to do 30mins of $whatever before I turn on my work laptop, no excuses.

The book "Atomic Habits" mostly inspired this - the idea of setting both a clearly defined time and place for doing something + making it easier to do the right thing / harder to do the wrong thing. The "before laptop is turned on" is important for not drifting onto Slack and blasting through various notifications.

I've gone from spending literally years thinking "I really need to read more papers and these textbooks" to actually making solid progress on stuff I care about.

I struggled in my CS studies, especially the basic training was hard, because it was so abstract and theoretical.

Later in life I learned that I can grasp theory much better when I saw AND worked on a bunch of practical examples myself before diving into theory.

Generally a good tutorial, video with keystrokes, or blog/page format as long as they have the steps, videos without editing are more likely to not miss a step. I will generally only do tutorials that seem to be along the direct task I want to do, and I'll alter it to be the task I actually want to accomplish.

I'll also do 2 or 3 of them to see the task from multiple conceptual angles, it helps me to see how multiple people think about and solve an issue.

I have a lot of trouble learning things that are not related to what I want to do. Not sure how I made it through college but I think I generally had a good idea how many classes applied to what I wanted to do...

I recently wrote a blog post about "learning loops" which is the process of learning more when motivated by the progress you are making: https://minireference.com/blog/learning-loops/

This is how most autodidact programmers learned to code, and a really good way to make progress on one's own. Not because of taking courses, but doing projects...

For context: I've also been many many years in the formal education system, but all the actual useful skills I have developed came from a self-directed learning loop.

For technical topics, like an AWS service or a new programming framework, I dive right into a project. If it's personal, I create a new app or tool. If it's for work, I review code and start contributing right away.

For other topics, I pick a stellar piece of content to lean on. It can be a book, but it can also be a video primer or an introductory article. Then down the rabbit hole I go, researching terms and saving other content I need to understand the subject matter.

For physical activities, like baking or fixing hardware, I prefer video so I get the nuance or where things go or how the output of each step feels like.

I really like this talk on the topic called "Stop Treading Water: Learning to Learn":


I try to make whatever I'm learning fun and relatable. That means making it not boring. Usually I don't follow any technique I just set a goal and mindlessly try to achieve it by learning things along the way. If it's a programming language I start with a project. If it's a mathematical or physical concept I implement it, use it or explain it to someone else. I usually go to Wikipedia or a good textbook then slowly start diving into the literature. I usually then read a recent review paper and one of the old seminal papers related to the topic.

Ever since I adopted a Zettelkasten, I find myself learning and retaining much more effectively.

The habit forces you to distill insights in your own words and make connections to your current knowledge — mimicking how your brain learns.

Regardless of the source, reinterpreting it in your own words is key.

See Sonke’s “How to take smart notes” — or this primer article [1]

[1] https://www.bryanlee.net/blog/the-life-changing-magic-of-zet...

Read something and apply it as quickly as possible. Whether that's doing a problem set, working on a project, solving a real-world problem, making a decision, teaching someone else, or just advancing to the next section in your reference. Keep the feedback loop as short as possible.

Surveying the whole landscape by asking yourself: why this, not that? This is the single most powerful technique I know to reach deep understanding, but is very demanding to apply.

Can you expand on your second paragraph? I am at the stage where I start to ask the same questions and it would be educational for me to learn how others do it.

Unfortunately, describing the way I think and learn comes about as naturally to me as describing water does to a fish.

In this case it's really about perturbation: what changes if Y is substituted for its close analogue X? Why is a 4-40 screw used here, rather than a 6-32? Or M3? What, of all possible arguments, made this one the author's choice? (Is it really the best, or does it hide something inconvenient for them?) Why is the city here and not there?

You start to see the flavor. This form of perturbative or differential analysis can be extremely powerful. It can also be extremely difficult and lead one down many side routes... such as, say, chasing down the diameters of all inch standard wood screws, not that I've done that or anything, just to determine what would happen if that wood screw were replaced by a self-tapping machine screw....

I start with reading a theoretical textbook then move towards implementation (with the help of videos) if possible. Then come back to the textbook and implementation so on. Talking to someone who has an expertise in that subject helps too. Slowly the concept is formed in the brain and with more practice the concept solidify. At the end of the day the more you do and read is more you learn . Theory and practical are both important to me.

I like to jump in by doing. At first imitating exactly, then trying to customize some parts. Trying to identify major building blocks, and building something new from them. Establishing a trial and error methodology that I can repeat over and over again. Constantly looking up a reference for issues I'm encountering. Then later reading parts of the reference completely, to fill in the blanks I missed.

By doing exercises, and careful postmortems on the results.

In my experience, videos are mostly a waste of time, only good for getting an overview of the topic.

I tend to overcommit. E.g. take on a project or make a purchase that _requires_ me to learn the skill to be able to complete whatever that project is or use the thing I bought. I find having external "skin in the game" helps me focus on the parts of a thing I need to know. Then, once I can get into the conceptual level of whatever the topic is, I expand from there.

I've been doing a lot of reading, sitting here at this desk for the past year.

But the best way for me is to be presented with a problem to solve. I've learned how Cesium Beam atomic clocks work by fixing them, same with Magnetic Amplifiers, etc.

Small projects work best for me.

Especially if you include the fact that something can't be done.... that one really frosts my cookies.

I really like doing impossible things.

I'm a lazy software developer.

I can't take a book and make myself learn ("push"). Instead, I find a project I'm interested in and let it "pull" me in. Sort of the difference between studying a French book ("push") and actually going to live in France ("pull") with French people. You still bring the book of course.

I'm very much someone who needs to write things to understand them.

Trying to figure out some new API that gives gross error messages and has zero useful documentation? I start writing down what I _think_ things do.

This helps me find patterns, but also helps me say "there's no way that is what this does. No one would write a function for that, it must do something else."

This question reminded me of one of my favorite pg essays title "How You Know" http://www.paulgraham.com/know.html which is generally about how you acquire and retain information over time. A great short read if you have not done so before.

I feel like I learn best from the bottom up. Take a motivating example, work through it, then incorporate theory on why it is. I prefer to watch videos for the example, but reading for the theory. After that I have to do it a couple of times myself to nail it down.

I don't find spaced repetition helpful unless it is rote memorization of small facts.

If I seriously want to learn something, then only from books. Videos or the Internet distract me too much. I sort my notes into a Zettelkasten system and once a month I write an essay of min. 15 pages to deepen the knowledge. I turn off Internet, music and phone because I don't want to be distracted.

I often attempt to resynthesize unfamiliar concepts in analogous terms from other fields that are familiar to me. This helps in making sense of and categorizing information, but also often leads to situations where my analogy breaks, and those are very often key insights to the matter at hand.

Generally, I smoke a joint, and then I start with a few wiki's or news stories on the subject matter to try and find the hook that'll hold my sustained interest. At some point, I'll find that hook and then I'll go down the rabbit hole. Learning is then automatic and incidental.

I don't have formal methods, but I do prefer to read. Videos are OK for hearing about a topic in general, but especially when trying to follow a tutorial, having to stop/rewind/play when my pace doesn't match the video, I find it to be a painful experience.

Step 1. Live in fear of failure Step 2. Discover failure isn't _that_ bad Step 3. Fail upwards

Read, try, read, repeat, is the process I use. I read about a topic, then I do a practical attempt (which most times fails), then I go back and read the topic again. I then repeat this until I'm comfortable with the topic, both conceptually and practically.

I have outsourced my memory to zettelkasten/(second brain) type of notetaking. I'm focusing on trying to understand the fundamentals and core ideas instead of just memorizing stuff. Went back to school after 10 years, let's see how it works out.

Good q. Personally, a while back I started a "learning ladder" document to answer this question. It kind of went sideways as compared to how I thought it would end up.

At first I listed and ranked a bunch of methods of learning (see below) but I found that a general ranking isn't as helpful after a while.

The biggest takeaway for me was developing my own logging process. I always start a log on a given learning topic, to keep myself accountable and to allow myself to detach and reattach to the process.

The log template I use has headings like this (Markdown):

- Title

- Contents

- To-Do & Questions

- Tips

- Chronological Log of Lessons Learned

- Log (Meta) -- When log was last reorganized, etc.

- Resources (Web links, and so on)

Then I use my own task system, Task BATL, to help me select logs to work on and mark up the to-do lists (like that above) with symbols that establish clarity. I also use a basic tagging system throughout, with shortcuts like +lll for "Log of Lessons Learned" and +crp for "Current Position" (current philosophy / position / strategy in the topic--like how I trade assets, or write system scripts) so on.

In terms of specific methods--books, articles, and videos, I also tend to ask my intuition what it thinks the best one will be for each given topic. Usually one specific method comes to mind. Over time, I rank them for each given topic/log.

I'd also add these:

- Image search

- PDF search

- Reddit posts & other forums

- Slideshare

- Podcasts (useful in topic review or topic updates)

- Writing and publishing my own guides or tutorials on blogs, etc.

- Creating HTML start pages for the topic (friendlyskies.net/radio was one of my first)

- Online courses

- In-person courses

- Get-togethers (for ham radio this has been a really good one; I'd add nets to that as well)

- Volunteering

- Certifications

- Teaching courses

- Shopping/buying things related to the topic in a well-informed way

- Starting profit-projects / businesses

Anyway, good question, I think it goes super deep too.

I've found I learn best organically. If it doesn't spark joy, I'm not going to dedicate the time.

Recently, I've lost interest in tech/coding/math but motorcycle repair, racing, and engine internals are cool!

It's always been internal validation.

I’ve found more and more that I learn best when I talk to other people. It’s one thing to read or hear information, but it’s so much more enriching to be able to have a conversation and ask questions in real time.

I learn best and most from books - of course, some are better than others, but my ideal book is one that has examples and exercises that are designed for learning.

I am 46 but it has always been the same for me: books and exercizes. Tutorials work for me, video's are horrible inefficient for me: I prevent at all cost.

I use Science Research Assistant web browser extension for Chrome to find materials along with a snowball search/opportunistic reasoning search.

Do it before going to sleep. It is ridiculously effective.

web dev languages / frameworks: 1. read the instruction, docs. 2. watch all the 'how to' videos I can get my hands on. 3. try to build something with it.

more generic.

1. read as much as I can find on 'how to', 'tips and tricks', 'things I wish I new when I started x' etc 1.b watching videos on 2x speed. 2. practice

tests are helpful if I can find them, but there aren't that many, good ones

reinforce through different forms. reading something means you remember reading it. writing it means you remember writing it AND remember reading it, because you read it as you write. same goes for hearing someone else speak versus saying it out loud yourself. with multiple sources of input, once is enough for me generally, rather than repeating the same input type multiple times.

Anything that has actually stuck with me thus far in life has been learned by repeated experience. That is to say, practical practice.

Here's my system, when I want to know something forever:

1. Get a good article or book about the topic. Not a video.

2. Read it multiple times. Each time, highlight and leave notes in the margins. By the third read-through, there's usually nothing more to comment on. (I can't do this with videos.)

3. Turn those notes into new Anki (spaced repetition software) cards that go into the unseen pile.

4. Every day, Anki adds ten cards from the unseen pile to the cards I'm reviewing.

I've been doing this for twelve years, and it works very well for me.

Probably not what you're asking for, but it's been working for me great and I don't see many people doing this.

When I need to learn a lot of material quickly and it's not interesting, I do 1 hour learning and 1 hour mentally consuming entertainment (gaming, Netflix) interchanged, as long as I have to. 30 minute intervals if the subject is really boring.

Keeps me concentrated and I can sustain it for extended periods of time.

The secret superpower is: explaining stuff to others, preferably with a whiteboard session.

Handwriting notes, to condense the book contents, in combination with the recall method.

Not very well ;_;

the trick with learning is not trying to learn, just experience the material in whatever medium you can get.

No techniques, I just read. A lot.

How do you not learn?

I am a design technologist [1], so I end up doing things when specialists are too busy or unavailable or they don't exist. I do research, build prototypes, design interfaces, and even write growth strategies.

Over the years, I have to learn things ASAP to get things in place before world breaks loose. I follow an approach that I call : SPOTS. It stands for Survey, Prioritise, Organise, Test, Show. Lets go through it one by one :

1. Survey : Collect all possible things you need to know about a new topic or thing. Make a mind-map. Do not forget to check out academic sources for possible models. Reddit and HN are cool places to look. This should be done in a time boxed manner.

2. Prioritise : Now we bring the goal and see our mind map in context. So, you want to build an app and you know, say, Nuxtjs. How can you do it so you have to acquire as little skills as possible. Or you want to write a research protocol for conducting a simple user test for a product. This step will help you find possible ways to reach goal. Now, you have a prioritised way to achieve the goal and maybe have a sense of how things could be.

3. Organise: This step is very important. The prioritised 'knowledge elements' have to be revisited again and again. Using a small notes app or Athens[2] you can make a list of key steps or if its a tutorial, the major steps. In short, take notes. This will help you bring more clarity in terms of various approaches you can use the knowledge elements. Say, you need to use low power mode on ESP32, you have the documentation + sample code and you know how it works.

4. Test ( or Try) : Now you need to keep trying and testing the various arrangements of knowledge elements and what works and what not. Dont get attached to any particular way. Keep figuring out. With code etc it is easier, with research (and human things), test things with friends or cousins. The idea is to be iterative and see if we are able to get to the goal. Iteration is the key. Sometimes you might need new 'knowledge elements' that you might have missed out.

5. Show : This is the most important and something all good humans should do, as philosophers would say, further the epistemological understanding of humans— write a f#$king blog, post a documentation, or answer a stack overflow, heck at least make a tik-tok. This will make sure, if someone gets stuck solving the same problem in the future, your knowledge element will help them. Also, it cements the concepts for you as well. sings "You may say, I am dreamer...But, I am not the only one"

[1] http://rohitg.in/portfolio/ or http://rohitg.in

[2] https://github.com/athensresearch/athens

A process akin to Bogosort

Mostly, I read anecdotes.

Does that actually work?

Not OP but i find the story part is very useful when I'm in an unfamiliar space. The stories provide insight into how the teller thinks about the problem - this is helpful to make a mental map of the topic. It helps that humans seem wired to understand narative (or maybe just my culture) in a deep way.

Similarly, when joining a new team I like to gather war-stories because when people tell you those, they are also telling you how they work (and allow you to infer a good strategy for working with those folks while also learning about the warts of the system).

> How do you learn?

Nice try, Skynet.

We need to categorise different types of learning. I will use some examples to illustrate.

Maths / Comp Sci: Knowledge here is heavily theoretical and problem solving. For both, the only way to learn effectively is to take exercises and practice, practice, practice. I've studied both at university level and this is the only method that works.

Philosophy / History / English (ie. humanities): I (along with my classmates) have always been led to believe that the humanity subjects are about fact memorisation. Although memorisation is certainly a component of such subjects, it should not be the primary component. First and foremost, the student must understand the ideas and events. Thereafter, they can plug in facts they have learned off. To achieve understanding, the method is as old as knowledge itself - read and write. Read to find questions to ask, write to answer your questions.

Music / art: For the creative arts, practice is the primary tool to learn and progress. Mentorship is a critical part too, but secondary to practice.

Language: To learn a new language, only one thing has ever worked for me - complete immersion. Without being in the country that speaks the language and practicing everyday, I have never made any progress.

TOOLING - I have some thoughts on different tools for learning, but it is by no means extensive. I guess that each person is unique in how they learn - something we do not understand very well. I don't know of any test that figures out what kind of learner you are similar to a personality test.

Books: My primary way of learning. I read, write in the margins, underline, find a question and then write about it. Without writing about it, reading was a waste of time (for non-fiction anyway).

Articles: I regularly check HN each day for anything of interest. Most of the time, I can't say that I learn much. This is probably because I cannot write and absorb the author's writing like I would in a book.

Videos: I've given up with videos unless a visual representation is needed. In particular, programming videos seem to be a waste of time except for explaining basic concepts. That's not to say I waste a HUGE amount of time on youtube...but there you go.

Podcasts: My favourite way of picking up new ideas when I'm driving. I try to pick multiple podcasts at a time with the same topic so that something (but not much) sticks in my head.

Anki: Tried it - it reduced learning, which I enjoyed, to a chore I needed to remember to do everyday. I foresaw I would get burnt out from learning if I continued to use it.

Zettelkasten (software): For me, taking notes on a computer does not ingrain itself as much as physical notes. I tried Zettelkasten software and found it a similar experience to Anki.

Zettelkasten (physical): This has been my favourite method of note taking. By manually creating my notes and figuring out the system to link them up, the web of knowledge is created much faster than the software equivalent. However, something similar happened as when I tried to use Anki. My focus switched from "I want to learn this" to "I need to put this in a nice note". Maybe I didn't practice it enough to get good at it. I plan on returning to it again to give it another shot.

Writing blog posts: THIS. Following Dr. Peterson's essay writing guide, I find I am building up expertise quite quickly. This is my favourite and, frankly, best way of learning. It is strange because there are no tricks involved and it is the oldest method of learning. BUT, I do think it is the most difficult method. Maybe that's why it is so effective.


1. Read about it.

2. Try it.

3... Repeat.

The most important thing is being honest with yourself about what you're actually interested in. No fancy techniques are going to help you go fast if you're forcing yourself every step of the way. Obviously in school you have limited control over this, and heck, probably most of the time in work too. But I see lots of people trying to pick up skills they think they _should_ but which they're not really excited about. Passion and curiosity give you a leg up for free.

But assuming that's the case:

1. Follow the history of a thing, from its simplest early incarnations, through warring schools of thought, up to cutting edge ideas. Understand the forces (and people!) guiding a thing and you'll have a good way to contextualise everything you learn.

2. Have a project and dive into it straight away. Don't just learn to play an existing song on the piano, write a new song. Don't write another todo app, write a brand new app. Don't learn to ask for a cup of coffee in French, learn to argue about anime etc etc. This exposes you to more tensions, pitfalls, opportunities for failure, and therefore more chances to learn.

3. Skim texts a bit, then play around a bit, and stay in this loop until you feel you have a very high level map of the territory. You're trying to understand firstly what exists at all in the subject you're interested in, but also learning how to relate specific things to specific places/themes/topics. This phase is very much learning how to google in your specific domain, and you're welcome to use fancy note-taking tools and techniques here if they suit you.

4. Pick the most interesting or most challenging part of your project, and go deep on that area. Find examples of experts solving that problem, understand where they're coming from, why their solutions might be different. Pick whichever camp you feel intuitively at home in (maybe you want to be a gung-ho attacking chess player, maybe a slow, positional one), lean towards that solution. Let passion guide you even if you eventually decide you took the wrong turn - don't try and learn OOP and FP at the same time, try out being an insufferable bore about each in turn.

5. Once you've had a few failures and disappointments and proven you aren't going to give up, establish long term feedback loops and use them honestly. What are you trying to paint that looks worst? What words do you keep forgetting? What neural network architecture do you always copy and paste without understanding? Keep practising new things and learning all the ways you still suck. I personally wouldn't over optimise for this early on though, I would wait until you have a lot of momentum built up.

6. Don't let self improvement take over your life. Stop and smell the roses.


Andrew Huber man had a really interesting podcast about this. He cites an academic paper for basically every statement he makes on the podcast. What I remember from the learning and memory podcast was that repetition matters, especially for older people and it has to be the right kind of repetition. And also stakes matter. You learn much faster when there are real stakes involved.

I'm guessing you're talking about this podcast, which I also thought was great https://hubermanlab.com/using-failures-movement-and-balance-...

Projects and excessive notes. Books suck imo because they fall in two camps: not project oriented and just give away the answers or only look at things from an educational perspective, or written by some random schmuck who thinks their workflow is great and you should adopt it too.

Every book would be better if they wrote how to do stuff as if I was a moron and didn't know where step 1 was. While it's kind of annoying for people who've done it for a while, it's great because it covers EVERYTHING. Even that one little tid bit you are so used to that you forgot it exists.

Videos suck often because they are like 30 minute videos when they can just edit out the whole process of them typing and stuff. I want to see you get from point A to point B, but explain what is happening in between. Not see you type out the stuff. Just a waste of time. Not to mention reading off power points.

I have no idea - the fact that I'm here as opposed to being in the class for dumb people is because I read a calculus book by accident when I was 14.

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