Ask HN: Do you have a process or a framework to learn specific skills quickly?

247 points by hypnotist ↗ HN
Any suggestions/ frameworks on how to learn specific skill, retain the knowledge and be able to share it(in for ex. written form)

I usually jump in straight away and start learning "on the job" but I realised that I forget too much and i do not have any notes to refer to later on.

Examples of specific skill: - How to write a good cold email - how to learn some snowboarding trick - how to store your bitcoin safely etc.

123 comments

[ 2.6 ms ] story [ 218 ms ] thread
Well am not sure how helpful this will be, but you would need to develop a framework for yourself. Normally a simple note taking while studying specific topic can help for later to refresh the knowledge.
check out the Feynman Technique. it works. to strengthen your new found knowledge, teach it to someone else. I personally like to watch a handful of videos on YouTube about a subject I'm trying to learn to get a feel for the vocabulary, then dig in to articles/documentation if applicable
This is not a framework, but I see tremendous value in going to people who already know the skill first. At least in my experience, there's a tendency for people to start learning on their own before they feel comfortable asking questions.

Often I try to skip this (rather tedious) process and go to someone who has knowledge in the area. Often I don't need an actual 'expert' but someone who's already intermediate. Asking the right questions can speed up the learning process tremendously! In addition, many people are willing to relatively cheaply (think: a meal; cup of coffee; etc.) let you pick their brain.

(comment deleted)
I think this becomes even more valuable when having a family means that one's free time becomes an extremely scarce resource. One usually already has some experience to be able to ask the right questions to clarify generic concepts in given context. IMHO given both sides of the dialogue are on the same "wave" nothing can beat Socratic method.
Pretend you're teaching it to someone else - try and explain it to a rubber duck every now and then, and if there's a hole go back and plug it. Just be careful it's not a rabbit hole else this wastes time.
There’s a class on Coursera by Dr Barbara Oakley https://www.coursera.org/learn/learning-how-to-learn? It gives you a basic model for skill retention. You should modify the style to what works for you. I’ve successfully retained what I’ve revised and practiced
Paradoxically, you're telling to learn a course that tells you right way to learn something. So until then you don't know the right way to learn to learn the course you suggested.

xD nah I'm kidding. It's a good one.

Search. Use the first few searches to refine my search terms. Skim a couple results. Pick 1-3 (max). Read (or watch) them. Do it.

The last step is the most critical, of course.

For someone self-studying mathematics: Do the exercises. Especially the hard ones. Struggle for hours. Don’t worry about solution manuals. It should be painful.
Along the same lines: in a math textbook or math-heavy paper, try to prove the Lemmas or theorems yourself, when it’s sensible to attempt it. Probably more suitable in a textbook where they build up to a larger theorem starting from smaller lemmas — try to prove them yourself. Even if you don’t prove them the first time, on a re-read you can try to prove it yourself, as a way to test your understanding, and of course this also deepens your understanding.
This is good advice. But for me, the hours’ struggle is more useful if not contiguous.

I get the best results from struggling with a given problem for no more than 1 hour continuously, and then going away and coming back sometime after my next sleep.

By struggling I mean “not making visible progress” - if progress is happening then just keep rolling.

This sounds like how I approach leetcode. Leetcode feels a bit like math to me anyways. Coding isn't the hard part, understanding the algorithm in conjunction with the data structures is.
Coding is the hard part if you are bad at coding but good at maths and algorithms. Writing accurate code for solving a hard problem in under 30 minutes requires you to be really good at coding.
This I think is the same thing as someone saying at the gym, don't stop until it hurts. People get injured and then never go to the gym again.

How about look at the solution, understand the parts. Solve the problem. Revisit, revisit, revisit.

This helped me breeze through engineering and also helped me professionally.

That is how people learn how to pass tests instead of learning the material. Passing tests is important in college, but if you want to learn on your own it doesn't matter.
(comment deleted)
No. There are optimized paths to reach the same understanding
Yes, but I'd argue that the path you took was a very suboptimal path to reach the same understanding since you almost surely didn't reach it. So now you'd have to redo almost everything in order to reach the same goal making it a very huge waste of time. Of course I cannot be sure of that, but I have seen so many people who learned the way you did and they had really poor understanding. In my experience only the people who try to challenge themselves actually gets there.

Passing math classes requires almost no understanding at all btw, even getting good grades in them doesn't.

No. You are over complicating things.
100%. Good grades don't convey real deep thinking and understanding about a subject/skill. IMO.
I started writing notes, so when I need some knowledge again, it is all there. However, now I have the problem of searching and finding in my notes.
I do the following:

- read, read, read about the topic at hand. I find that finding a good book on the topic gives me a baseline of information even if I do not understand or retain it all.

- use the information. Play and build what I am learning about.

- as I work through day to day issues and find things I will probably need in the future, I save them as a page in a zettlekasten using vimwiki. Writing these things down is new for me and it has already paid off when answering questions.

I write a lot. Taking notes, doing exercises and also making mind maps. Reading does nothing for me. I get distracted really easy and I end up with 4 pages and nothing in my head.
"One learns by doing." -First line of a Geometry book that I have long since forgotten.

There is no secret sauce nor magical technique to learning, memorizing, regurgitating information. Only repeatedly doing the thing is how you learn. And as always, "Use it or loose it" applies.

There's ineffective and effective learning, and some techniques are indeed better than other.

However, they always require works.

100 pushup a day is going to always be better than a single pushup a day, all things being equal.

Anki.
Anki is a good way to preserve progress made, and even make enormous amount of progress(in the medium and long term), but I don't think it was going to be a complete solution all by itself.
this. i think many people don’t get that spaced repetition isn’t for learning new things the first time.
I am afraid I have to disagree. The very act of creating Anki cards or any flashcards, for that matter, is unparalleled for learning new material. I would consider it similar to the Feynman method in that it forces you to dive deeper into what you do not understand.
I had to read a few answers before I understood what you could possibly be referring to. On the one hand, if you realize you don’t have notes because you don’t study, then there is your answer.

On the other hand I am happy to share what has been very successful method for me learning Python AND researching solutions for my scripting projects: Jupyter Notebooks.

Notebooks use Markdown which lets you cleanly collect links.

Code cells let you test code samples.

The success of Notebooks in my process has lead me to adopt Markdown in all of my personal notes (text-based).

A quick note on this last point—-a friend of mine recently commented they are developing on a Mac and using Notes app. I have a Apple laptop, so I’m familiar with Notes app.

There are just too many details making Notes app unsuitable to detail here. So, hear me now, and believe me later. Don’t use it. (except for convenience of notes between iPhone and other Mac products).

read the 4 hours chef
Yes, but first a quick note. So quick learning is not good learning towards mastery. It is a vague entry to a concept so that you can hit the ground running.

1. Remove time barriers. Understand that there are 24 hours in a day and that time is all your once removed from sleep, family, commute, and so forth. Understanding this may triple or quadruple your availability to learn.

2. Know your goal/mission/end state. This goal can be wrong, but at this point that correctness is irrelevant. This goal is where you need to be at the end of quick learning and you can pivot as necessary later.

3. Gather assets. Your team (if you need a team) should already be formed at this point. Gather your people, all necessary training materials, and a training location. The point is to cram together. Working with people like this slows your learning speed by about 20% but increases your comprehension by more than 40% and extends your focus further into fatigue. Remember rule 1 above.

4. Rehearse. Read and review all supporting materials. Frequently discuss things in the team openly. Practice and mind meld. With enough iteration the subject matter should transform from knowledge to muscle memory. Practice practice practice.

5. Eat. Focus on foods high in protein and fats to help with concentration. Eat good meals and have healthy snacks available while learning. Starchy snacks are a bad choice. Things like nuts, meat products, and fatty vegetables are better. Snacks also give you something to do while you study to help ward off drowsiness.

——

This is the pattern we use in the military. Having gone through numerous military schools and 5 deployments you do this so much the process itself becomes muscle memory. The idea is you have no idea what the actual technical requirements are until you get there but you have a vague idea of the skills needed. Buckle down, get pluses up, and keep an open mind.

Yes.

If I need to learn a specific product/tech, I build something with it. If I need to learn a library we're going to adopt, I'll take one of the ideas I have floating around implement using the specific product.

Not using any specific documentation, just try and execute an idea and figure it out.

Your list of specific skills is quite diverse, and I doubt that there is much in common with regard to learning them that goes beyond the basic "you have to put in the effort", "find a mentor" and so forth.
(comment deleted)
Yes for computer-based skills, I’ve got an effective method. I write executable docs as I go, where I can select sub entries of comments and instructions and execute them. That’s the meat of the technique but the devil was in the details of making the system quickly navigable, well formatted, terse, executable on all the platforms I use, suitable for all applications I work on. And just as important, it was in the details of the learning strategies and tactics.
I'm the same as you in that I just jump in and learn as I do, but I constantly write notes (Mostly in markdown that I save to a git repo, or in my notebook if they're throwaway notes).
I’ve a few different approaches I take depending on the task (and if I’m honest, my mood or levels of motivation):

- a new programming language, especially something closer to a systems language, I have a standard set of things I’ll try to implement. Read/write a file. Turn a structured object into JSON, parse JSON to an object. Basic script that can be run from CLI, parses flags/args, reads stdin. Send a HTTP request. Implement the most basic web server. An embarrassing amount of my career has been just building on those fundamentals in various ways. So if I can get those under my belt with a new language it becomes feasible to make an informed decision on whether I might incorporate it into my day-to-day vs just leave it languish as a hobby on the side. - read read read until I find something that just doesn’t make sense. I mean in not just a “I’m a bit confused” but a more “I don’t understand how this even works. It violates my very understanding of how the world is meant to work”. That happens surprisingly quickly in fields I’ve absolutely no idea about. And then I just focus on understanding how that one particular thing could be true. I’ll often find it forces me to correct some previously held incorrect assumptions, which may have blocked my ability to learn more productively because of the subconscious second guessing and the baby steps not matching my world view. - I write notes, and then rewrite them in what is kinda like a blog post to myself. If this is interesting info that I’d like to retain, but am unlikely to be applying regularly or immediately, I’m likely to forget. So I write the post I wish I’d originally found. As brief as possible. In a style that makes sense to me. To try and short cut the time it takes to relearn this topic in the future.

I like the programming exercises :) I'll take a page from your book when I start programming in a new language!
For me its always a website with access to a database and templating. It is insanely easy in Go to do it by only needing to import Gorm as your only external package. I really wish Rust would adopt a standard library HTTP server OOTB it just makes things so much nicer. People will always use other packages as they need to for example dot net has Sinatra, and Java has Spring and company despite both having JSP / ASP.

I do like your list and I agree, some bits that deal with CLI, web and parsing / making HTTP requests is the gist of what you need. I have debated making a project roadmap on GitHub that you can work on in any language and having a Swagger spec for an API so frontend people can implement multiple frontends and backend people can implement multiple backends.

Ruby has Sinatra, .NET has Nancy (which preceded Microsoft’s WEB API framework IIRC)
(comment deleted)
This is a wonderful response. Love the notion of reading until something violates your understanding of the world, I’m definitely going to try this. Is there any more satisfying feeling than ingesting a new, worldview-changing idea? I can almost feel my neural pathways being required when it happens.
I follow this pattern as well along with one caveat: I refuse to cut and paste code while learning.

I require myself to retype any examples, stack overflows, and so on in the process of learning. Along the way, I get a handle on the patterns of the language. And if I'm learning in an IDE, the autocomplete suggestions start to hint at the other functions within libraries, etc.

Yes, I love this suggestion. Building the literal muscle memory of how to write, I dunno, a for loop, is so critical -- it means you don't have to think for even a second about how to use that tool in the future.
Definitely. I feel like I force myself to ask the more fundamental questions relevant I am writing (i.e. why is it this way, alternatives, etc.) than if I were to cut-and-paste. Saw significant differences in learning new languages by forcing myself to do this.

And, my mentality in going through examples has changed. Larger blocks of code shouldn't seen as more of a pain to write, but larger sources of information (usually) for learning.

Do you have a blog where you write about the stuff you learning or your notes ?:)
Here is a meta-rule: Avoid learning skills if you can get away with it. This allows you to focus your time and attention on skills you cannot function without.

Maybe someone else has this skill and they can help you. Maybe there is software that does the skill for you. Etc.

The skill acquisition process is arduous and high opportunity cost.

It’s only worth going through the skill acquisition process if you are doing it for pure joy, OR you have no other way to get the benefit of that skill.

I say learn based on whimsy. It will naturally lead to deeper questions and you'll understand more. there's is no shortcut, only keeping yourself motivated.
Some years ago I learned to touch-type in a month, at twenty minutes a day—though of course actually getting used to it took some months more. Ever since, I'm struggling to recreate the same approach in different topics.

I used the app TIPP10, a completely no-nonsense program that just presents you with progressive exercises, rates your performance, and crucially, shows how far you're from the end goal. So I just clacked at the keyboard and watched the progress meter steadily go forward. Had to change my approach once when I was trying to go fast and kept making errors, stalling in the actual learning—after I slowed down everything went smoothly again.

Now, I'd so much like to have a progress meter for when I'll be able to extract meaningful sounds from the piano or the guitar, or reason about electrics, etc. For the mechanical music skills, I'm putting some hope into Synthesia and Rocksmith. For knowledge, I guess actual courses and exercises are self-measuring: either I can remember and apply what I already learned, or I can't. However the measuring gets harder with topics that don't fit into one course or which require banging at them full-time for ages (like chess).

(I've already tried to learn touch-typing about ten years before that, and the combination of my youthful impatience with the woefully misguided approach of the exercise app I then used, turned the experience into a wreck. The app presented me with the ‘persona’ of the author as the sage teacher: his virtual remarks cooed and comforted me after the mistakes, encouraged me patronizingly, and offered bits of psychological well-being wisdom, all of which just made me hate myself, the app and the endeavor.)

I learned touch typing some 15 years ago with "The Typing of The Dead" from the dreamcast era. This game was full of drills to make you practice every aspect of typing: accuracy, speed, etc. Also it made you practiced your worst keys which was very helpful for me.

I would have liked to see this kind of game used to learn other skills but I never saw anything like it.

I also hoped that AI/deep learning could assists us in learning new skills but it's not yet a thing apparently...

I have been using keybr.com and I am my last letter. It is good and they claim to use AI/DL