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.)
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.
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.
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.
> 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.
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.
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!
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.
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.
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.
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 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.
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).
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.
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.
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?
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.
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?
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
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).
[+] [-] stickfigure|4 years ago|reply
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.
[+] [-] nwatson|4 years ago|reply
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"
[+] [-] andrewstuart2|4 years ago|reply
[+] [-] FalconSensei|4 years ago|reply
[+] [-] lawry|4 years ago|reply
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.
[+] [-] gonehome|4 years ago|reply
[+] [-] sizzle|4 years ago|reply
[+] [-] account-5|4 years ago|reply
[+] [-] rafaelgarrido|4 years ago|reply
[+] [-] ecnahc515|4 years ago|reply
Mentoring/helping others helps solidify your own understanding.
[+] [-] robbiep|4 years ago|reply
[+] [-] ai_ia|4 years ago|reply
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.
[+] [-] adamnemecek|4 years ago|reply
[+] [-] __henil|4 years ago|reply
[+] [-] atlacatl_sv|4 years ago|reply
[+] [-] Trex_Egg|4 years ago|reply
[+] [-] cvhashim|4 years ago|reply
[+] [-] susam|4 years ago|reply
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...
[+] [-] AnotherGoodName|4 years ago|reply
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:
https://rawcdn.githack.com/AReallyGoodName/RDM/5391c5a90fe39...
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.
[+] [-] vardhanw|4 years ago|reply
[+] [-] avgDev|4 years ago|reply
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.
[+] [-] whalesalad|4 years ago|reply
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
[+] [-] Viliam1234|4 years ago|reply
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.)
[+] [-] jl2718|4 years ago|reply
[+] [-] a11r|4 years ago|reply
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.
[+] [-] luxuryballs|4 years ago|reply
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.
[+] [-] ChrisMarshallNY|4 years ago|reply
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.
[+] [-] tharkun__|4 years ago|reply
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.
[+] [-] DDR0|4 years ago|reply
[+] [-] CodeGlitch|4 years ago|reply
https://www.freeplane.org/wiki/index.php/Home
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).
[+] [-] JayeshSidhwani|4 years ago|reply
[+] [-] LanceH|4 years ago|reply
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.
[+] [-] dweekly|4 years ago|reply
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.
[+] [-] PaulHoule|4 years ago|reply
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.
[+] [-] Too|4 years ago|reply
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.
[+] [-] quequeque|4 years ago|reply
coursera course: https://www.coursera.org/learn/learning-how-to-learn
a previous thread: https://news.ycombinator.com/item?id=23211184
[+] [-] jasode|4 years ago|reply
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.
[+] [-] dempedempe|4 years ago|reply
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/
[+] [-] kiba|4 years ago|reply
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.
[+] [-] chipuni|4 years ago|reply
> 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.
[+] [-] maximus-decimus|4 years ago|reply
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.
[+] [-] epwr|4 years ago|reply
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
[+] [-] neurotrace|4 years ago|reply
[+] [-] pricees|4 years ago|reply
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.
[+] [-] jdauriemma|4 years ago|reply
[+] [-] binnyva|4 years ago|reply
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.
[+] [-] robmerki|4 years ago|reply
[+] [-] nohr|4 years ago|reply
[+] [-] rg111|4 years ago|reply
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
[+] [-] tombert|4 years ago|reply
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).