Ask HN: What is your system for learning new things?

108 points by newsoul ↗ HN
It can be a new programming language, or learning a new subject or subtopic or whatever. What rules do you follow to pick up the new unknown thing?

71 comments

[ 3.0 ms ] story [ 136 ms ] thread
I'm interested in something and then I read or watch about it or something.
Skim whatever seems to be the official documentation, like the Rust book. Keep an eye out for interesting new terms.

Find a tutorial where you build some simple thing.

Then start coding, see what roadblocks you hit, and hopefully those words you indexed will come in handy.

If I am serious about retention I will summarize learnings and write them down with pen and paper.
Most new things I learn, are somehow related to solving problems that have piled up in the years. So, I just pick out that problem, try solving it with this new thing I've learnt. I start with watching a video on its simple usage or, read some sort of documentation on it. I wouldn't per say call them rules, but more of a guideline.
I like to build side projects. As a general rule, I always have a few "in the works".

And when I do, I always find myself making the same mistake-ish: trying a bunch of new things, as in languages, libraries, paradigms, concepts, whatever.

The bad part is that it usually derails the whole project as I hit roadblocks, unsupported features, abandoned dependencies, etc.

The good bit is that I get to keep learning things even if my day job is with a very stable and boring tech stack. And I'm usually familiar with the cool shiny toys before they become mainstream.

So that's when we're talking about tech stuff. For the rest, I procrastinate a lot here on HN and on Wikipedia and similar places, so I just read a lot on whatever seems interesting.

Build my own project with it, ideally for fun -- if it's a tool or a programming language. Try to apply it immediately if I'm learning something new.
I read, I play, and then I write an interactive page about the thing. E. g. https://wordsandbuttons.online/complex_numbers_and_conformal...
Nice interactive plots. How you made them?
Plain JavaScript, plain HTML, very plain CSS. You can do the "view page source" in the browser and actually see the whole page source :-)

This way, I may be spending some extra time on reinventing the wheel. But I enjoy programming and this is a hobby project.

A small correction : irrational should be replaced by imaginary. An irrational number is a number that cannot be represented as a ration of two numbers, like sqrt(2)
My newest way is actually YouTube! Often there’s a talk by someone good introducing or describing the technology which is greatly informative (I typically don’t find tech YouTubers to be worth the time though).
(comment deleted)
Actually, could you point me to any article that explores this topic thoroughly, or any post where more people have discussed it?
Anki + practice.

1. Find a good textbook on the topic that is around the right level for you, and that also has many practice questions in it. 'Good' is determined by a combination of reviews plus an initial skim of the book.

2. Read and work through the textbook. Use Anki to memorize the key points/equations and do the practice questions as you work through each chapter.

3. Continue to use Anki for several months/years to review the things that you learned. This only takes a few minutes a day, but the benefits are astounding.

Anki is great. I have a default deck named 'Stuff I want to remember', that I can just throw in anything that at some point I wished I remembered. Works great
I set up a project, and ship something. I may find a sample project, somewhere (usually a personal blog, or Medium article, as opposed to Stack Overflow), and crib off of that.

That always works.

How I read and parse informtion:

1. Print the page/article/book as pdf

2. insert printout in OneNote

3. Read printout on iPad: highlight important info, add my own notes on the side, add tasks if I need to look up sth

4. Collect my notes in OneNote page, look up tasks.

If I am learning something new, I usually start with Wikipedia and grow from there. Lately, I am also using ChatGPT to look up stuff I am curious about. Prompt I usually use: "Explain to me XYZ from first principles". I write stuff down in OneNote and query stuff I dont know + supplement research with other sources.

Do you trust that ChatGPT will give you the right answer? It often messes things up! It told me that the Catalan language spoken in the west of the island of Minorca is influenced by the language spoken in the west of the Iberian Peninsula, which is completely stupid. ChatGPT does not understand the concept "west".
Anki is my number one tip. For anything you need the basics nailed down to build more knowledge on top and spaced repetition keeps your foundations solid.

More ideas: https://www.learningscientists.org/

A shortcut that I use for learning new technologies is to learn their pitfalls and tips.

For example: I want to learn the PostGIS PostgreSQL extension. I install the extension and make a sample database with PostGIS datatypes. Then I will make a bunch of the following searches:

"postgis gotchas", "postgis tips and tricks", "postgis common mistakes", etc. Open everything you find in a new tab.

Then I will edit the sample database to try to reproduce each of the bugs or tips, and understand why they were problems and what the correct thing should have been.

I learned this when I was learning C++ in college from the book "Effective C++", which is basically a list of common pitfalls paired with a discussion of how to avoid them. This hones the parts of my mental model that were wrong or underbaked.

Related to studying the pitfalls and how to avoid them, I really enjoyed SQL Antipatterns by Karwin. Sounds like the same format, but for RDBMSs.
This is what I really liked about Paul Hegarty’s iOS dev course. His projects sort of deliberately walk students into the common pitfalls so that you can try to figure out a fix on your own and then he explains what/why/how Swift behaves that way.

He doesn’t deliberately teach you incorrectly but he’ll set up the project in such a way that when he asks you to add X he expects the vast majority will think “oh I just do this” which doesn’t work because the real answer is a bit more involved. Bonus: when you start spotting the pitfalls ahead of time it’s super motivating!

My go-to for learning new programming languages is project E. The problems progress very nicely, from simple loops to combinatorial search and beyond. But my favorite thing about it is it's all math. I can't really be bothered to solve someone's train routing problem, but you don't have to ask me twice to sum the factors of a 150 digit number.
It depends on what you've learnt, the way is different. According to my experience:

1. If you are learning something small, like a function API usage or a language sugar, find a suitable doc, and write some simple test cases to verify that you understand it correctly. Absolutely, you can write down some notes about it.

2. If you are learning something complicated, like mastering a web framework, or master a new programming language, such tasks cannot be done in one day. You need to break down your learning goal into several smaller goals, and make a feasible study plan. That way, you'll get closer to your ultimate goal every day.

I have to sit with something and consume content around it and then play with it.

Then I do the Feynman method and explain it to someone else.

For things that require pure memorization I do spaced repetition with flash cards and katas / koans.

I think creating the system for learning the thing is part of learning it, and the system will differ for each thing. Sometimes there's already a system I can download, borrow or buy. Sometimes I'm not happy with that so I come up with something else.

For example when I wanted to learn how to read music, I looked up all the information I could on how to read music, but I wasn't satisfied with it so I came up with my own system for learning to read music without using note names, then later I found that someone had done something similar because after I had developed the system I kind of had different terminology to search.

But when I wanted to learn Chinese, I downloaded a few apps and found a good one I liked, and I use it every day. I also found a good Chinese podcast that I listen to while walking, running or driving. I didn't have to come up with a better system, the apps are good.

When I wanted to learn how to swim better, I looked on YouTube for good swimming techniques and ultimately found Total Immersion, so I practised that by following the video instructions and swimming all the time. But then I found I couldn't speed up and there are no coaches for TI swimming, so I just took some advice from faster swimmers.

When I wanted to learn how to touch type as a teenager I just used a touch typing application that I found in a big box of old floppy disks next to the computer.

When I wanted to learn about MMT I read books, watched hours and hours of YouTube videos, communicated with academics, created my own content about it explaining it to others and discussed it online.

When I wanted to learn about physics I watched all the Leonard Susskind Stanford lectures on physics.

When I wanted to learn how to eat more healthily I listened to some podcasts while walking, I did take a couple of notes on some things, but then I immediately put those notes into practise by finding a couple of simple recipes I could work into my daily routine. I'll never forget those things, because I practised them immediately.

Another example of this type of learning was when I wanted to improve my chess: I didn't do lots of study, I just learned that using openings and defenses was more useful because a good strategy sets the board up better than trying to fight tactically all the time. So I learned one opening (Queen's Gambit) and one defense (Hippo) very thoroughly, and then practised chess a lot by playing simultaneous games in an app. I minimised the amount of information I would need to remember, then did lots of practise. My chess playing improved a lot!

I don't usually bother taking notes on stuff in any sort of structured and searchable way, but sometimes I write about what I've learned, and I will quite often share the most interesting parts with people in conversation, sometimes I can't quite remember something, so I'll look it up again.

If something's really interesting and I consume a lot of content about it, then usually the same concepts pop up time and time again, so I don't really have to bother note-taking, it just sticks in there because I hear it over and over again. A good example of that is Mixergy: when I first started listening, I worried about how I would remember all this amazing information, but then Andrew as nice enough to have a chat with me via Skype (in 2011!) and he told me "don't worry, all the best info comes up over and over again, it'll be in your brain when you need it" and he was absolutely correct.

Usually it's enough to know the thing I forgot exists, because I can just look it up again online more easily than I could search it in some notes that I'd taken.

(comment deleted)
1. Find the best book (or books) about the subject

2. Read it. Probably do some hands-on stuff while reading (e.g., writing simple programs if I'm learning a new prog. language; install a db in a VM and execute queries if i'm learning about dbs, etc.)

3. Let it sink

4. Read about the subject in blog posts, articles. Stuff like "best practices", or something like that

5. Let it sink

6. Come back in 1 year, and do it again. In the meanwhile keep doing some practical stuff, but not much

7. Profit

The good thing about this approach is that it's lightweight so I can do learn multiple things in parallel. After 3 or 5 years, all the knowledge accumulated pays off really well!

"After 3 or 5 years, all the knowledge accumulated pays off really well!"

I call this "compounding knowledge." I take any excuse to learn new skills, tackle new projects, and accumulate new information. After a long enough time, those disparate skills become complimentary and connected.

My analogy revolves around collecting keys that unlock future doors.

I read similar chapters of several books on the topic simultaneously, when tired of reading, watch several youtube videos on the same topic.

More points of view --> better understanding

I remember that I don’t learn by doing, I learn by doing and then resting. That way I don’t get frustrated when something doesn’t make sense: I know that if I keep trying, eventually I will come back to the subject and realize I already know what I was struggling with before.
For technical stuff that's more on the practical sid of things I usually build projects. If it's from a guide, I try to switch out things to force me to think.

For example, I read a book about smart contract development.

They used JavaScript, Truffle and web3.js, but I did it with TypeScript, Hardhat and ethers.js.

Took a bit longer, but helped tremendously.

Building stuff, mainly.

I built a blog and several side projects to learn React, GraphQL, and ended up using them to get jobs.