Ask HN: How do you personally learn?
My short list of the skills that have helped me the most in my career as a software engineer is not sorted. But the ability to quickly learn things is easily on that list. With technology constantly and rapidly changing, small improvements in the speed at which I learn things can have a big and cumulative impact on my productivity. But we rarely discuss personal learning strategies. What are your personal strategies? Please consider mentioning even what you consider to be dead obvious. It might not be to others.
82 comments
[ 2.8 ms ] story [ 174 ms ] thread- Make sure it's something I'm interested in learning. There is no substitute for passion.
- Find a hero. Find someone who is already an expert and attempt to get as good as they are. But be realistic that you don't ever need to become as good as they are. It's just something that helps you focus on where you are headed.
- Have a list of other things you want to learn. You will get stuck a lot in the beginning and it's better to just quickly switch to something else when you are stuck and let your subconscious work on what you are stuck on. Sitting in front of a screen frustrated and trying to get unstuck is usually a big waste of time.
- Go for a walk. Some of my best thinking is during a walk. And there's mounting evidence that exercise generates new neurons.
This wikipedia article is one of my favorite discoveries. The list of benefits just keeps going.
https://en.wikipedia.org/wiki/Neurobiological_effects_of_phy...
I've experimented a lot with MOOCs, OCW, spaced repetition, paid courses, teaching strategies, etc. The specific ideas I've recently been most focused on when learning are:
- The depth of processing. I learn much faster and retain the knowledge/skills longer when I take a very active approach that involves deeply processing the material I'm learning.
- Making my studies more game-like. Games are fantastic, not only for motivation, but also for learning.
- Tightening my learn-use loop.
Can you give a concrete example of what that looks like?
If I'm taking notes, I'll do it by hand (which leads to better retention of information than typing), and I do it in cursive (which involves deeper processing than printing). In the past I tried taking notes in another language, but that was too slow.
If I'm learning a language, I'll try to spend more time listening to audio instead of watching video. When working on pronunciation, instead of just trying to say a phrase "correctly", I'll try to say it like a specific actor in the way they would with the same pacing and the same facial expressions.
If I'm learning a web framework, I'll take breaks from reading guides or docs to rewrite something I've previously written in an older framework. Then I'll go back to the guide.
I do however need a few months to _understand_ something. I have found that this "incubation" time works well for me, and I find myself far more comfortable with the subject afterwards.
I've tried going through books and courses, thinking, ahh, it's time to get serious, I must Learn JavaScript or Learn C or what have you, and this never gets me very far. But if instead, I decide to Make Thing, where Thing just happens to require C or JavaScript, now I have a point, a purpose, a destination, and though there may be headaches, I know that they are worth it, and I get where I'm going in the end.
Reiterate. Learn more. Reiterate.
I’m not easily frustrated by failure, starting over or general lack of progress. If I have an interesting goal I just keep going. It might not be the most efficient way, but it’s how I learn best.
That's one of those very obvious but super important things I was looking for. I would have never thought of this myself, but it's one of the most important factors in my own learning too.
This is not limited to IT. You can also apply that to other domains.
I think my most important lesson in uni was not to give up, even if you feel like the subject matter might as well be in a foreign language. I distinctly remember sitting and reading documents on cryptography for a larger project and it was all more or less unintelligible to me. When it was over I explained all of those concepts and more during my presentation, and even got the highest possible grade.
That was accomplished by simply repeatedly banging my head against all the theory while researching it and reading different explanations and trying to go at it from different angles.
Show me what we're doing/how we're using this knowledge, and very frequently I'll start thinking "hmm I wonder how they do that, I bet that's why we have to do XYZ first." Then you learn about it, you've had a moment to think through it in your own, and now you have plenty of context scaffolding to stick to.
And if people are arguing over which solution is better, its even more valuable, because then you get to learn about all the hidden nuances of each solution and when they matter.
The idea is that they're good enough for me to use to explain the subject to someone else; the old proverb about "You only understand something when you teach it to someone else" is really true.
- I really look for learning materials that have diagrams, or videos. Plain-text blog posts and documentation are really obtuse for me to actually grok what's up
- I've got into a good habit of writing (with a notebook and a notes app). I actually do weekly check-ins, almost like "sprint retros", just for myself. Sometimes they're silly, but they're handy to crystallize whatever I was thinking about the last week
- If I want to learn a programming language or framework, I try to build something I'd actually use, or something someone else can use. It's a useful motivator!
Also, checking HN is a good way to stay on top of things :)
I take a lot of notes the old fashioned way because I find it helps my retention, but they can pile up fast when I'm particularly busy.
Super simple, free, and the best note system I've used so far.
Then in the chapter 2019.
For notes on books, I still take those on paper
I for example cannot stand videos at all when it comes to learning - it is either too drawn out, or too distracting - and i actually prefer plaintext. On the other hand i have few friends who absolutely cannot stand plaintext and need a good video, or real life interaction to learn.
The one thing in common in most posts is your 3rd point - build something that you want to build - that's the best way to stay motivated.
On a subject of notetaking - i really like recursive approach to notes:
* summarize the source
* read the source(n-1) and your summary(n)
* do a summary of your summary and repeat this process
I do it few times, depending on complexity of the subject.
Now with math or science, video tutorials seem to better teach me.
First, learn to operate your "hardware" efficiently.
Look into NLP (Neurolinguistic Programming, it gets some crap for being pseudo-scientific, which is not entirely undeserved, some NLP folks play fast and loose with science.) I recommend this book, but there are others: https://www.goodreads.com/book/show/3803577-get-the-life-you...
Also, investigate self-hypnosis. The biggest mistake people make is trying to think with only their conscious mind.
Next, what kind of learning? Most of what you're talking about is "little stuff", really. Learning on the level of values or identity is much more powerful and far-reaching than picking up a new habit or skill.
Levels of learning, from most profound and general to most specific:
See also Gregory Bateson's work, this seems a decent source: "Bateson’s Levels Of Learning: a Framework For Transformative Learning?" Paul Tosey, University of Surrey https://epubs.surrey.ac.uk/1198/1/fulltext.pdfFun stuff:
"Programming and Meta-programming the Human Biocomputer" John C. Lilly (YMMV)
"Psycho-cybernetics" Maxwell Maltz This is based on self-image modification. Dr. Maltz was a plastic surgeon who noticed that some people had profound psychological changes from cosmetic surgery while others didn't. Upon investigation he discovered that the difference was whether or not the external change in appearance affected their internal self-image. The surgery was a (hellof a) way to effect change in the patient's self-image. So he started teaching people how to do that directly, so they didn't need the cosmetic surgery.)
"Super-learning" Ostrander, Schroeder, & Ostrander Old but interesting stuff.
this may be a personal observation (not sure it's industry-wide), but companies are averse to letting in-house people apply new skills on the job. They can even be averse to reading and experimentation during work time. Even when they're cool with it, the work day isn't structured for heads-down time.
Most managers have little patience for intentional 'try fail' cycles.
structured work is especially hostile to category jumping -- for example, I switched from high-speed finance to web, I picked up marketing & branding knowledge, from self-started projects. It would be hard to seriously try these at a job but they've paid dividends in my career.
there's a forgiveness / permission spectrum here but interrupting an ongoing job for 'mini grad school' has been the way that I keep fresh and make vertical jumps in my programming / tech management career.
I'm looking forward to digging your brain!
https://en.wikipedia.org/wiki/Martin_Heidegger
https://en.wikipedia.org/wiki/Alfred_North_Whitehead
https://www.youtube.com/channel/UCAYKrWW8wyjQX6qmL94zNLg
https://en.wikipedia.org/wiki/Commonplace_book
2. Keep a bullet journal[1] for learning new things.
3. Try explaining what you learn to your spouse, friend, coworker, and see if they can understand it. If you’re able to explain it in simple enough terms then most likely you have mastered that. Also, teaching reinforces your knowledge.
[1] https://bulletjournal.com/
A few days ago I wrote a post on what I learned from 7 programming languages over 20 years[0]. It kind of touches on the process of learning and takeaways. I almost always have a project in mind to build when learning something new.
Basically I'm not afraid to experiment. I don't think it's a problem to write code and then throw it away, or spend weeks learning how to use something to ultimately throw it away. You almost always learn something you can apply to something else which is really the main takeaway from the post.
[0]: https://nickjanetakis.com/blog/it-is-not-a-waste-of-time-to-...
For example: JavaScript. I procrastinated learning JavaScript for years. It was intimidating. Then jQuery came along, which is not exactly JavaScript, but it was easier to pick up. After several months, I was ready for the next step. I bought David Flanagan's book, JavaScript: The Definitive Guide, and just started reading it from the beginning. I don't know if I actually finished it, because the second half is reference, but I at least skimmed that part.
Copying snippets from the Internet will get you started but leave your knowledge patchy and even wrong. Eventually you need to read an organized and thorough tour. For example, I would never have understood JavaScript's prototypes by copying snippets.
On the other hand, if I had tried to start on page 1 of a thick book, without hands-on experience, it would have been equally unfruitful. It would have been too abstract. With some practice under my belt, the advice in the book had something to adhere to, in my mind.
At the macro-level, I try to learn things where I can transfer knowledge as much as possible. It's easy with software development, as critical and computational thinking and top-down/bottom-up reasoning can be used everywhere.
Writing down every word I don't know/understand and getting comfortable with them.
Playing with the subject matter.
Discussing the subject matter with people.