Ask HN: Do you have a process or a framework to learn specific skills quickly?
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 ] threadOften 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.
xD nah I'm kidding. It's a good one.
The last step is the most critical, of course.
Fail again.
Fail better.
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.
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.
Passing math classes requires almost no understanding at all btw, even getting good grades in them doesn't.
- 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.
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.
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.
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).
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.
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.
- 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 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.
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.
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.
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 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 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...