Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Do you have a process or a framework to learn specific skills quickly?
247 points by hypnotist on July 31, 2021 | hide | past | favorite | 114 comments
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.

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 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.

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.

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.

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.

It's Paiget - cognitive disequilibrium - it's how all learning is achieved - nice article https://teacherlearnstocode.com/2015/03/31/what-to-do-with-d...

Thank you! It’s so great to finally have a label to put on this. Much appreciated.

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)

Do you have a blog where you write about the stuff you learning or your notes ?:)

I like the programming exercises :) I'll take a page from your book when I start programming in a new language!

I learn a lot of songs, both lyrics and performance on other instruments. I've memorized 500-800, and I have a couple hundred tunes I routinely perform in front of people.

Slow, perfect practice of component parts in all things is the only easy way to gain skills, IMO.

Long-term periodic repetition is the easy way to keep skills.

So, for instance, I can learn most generic country songs in about an hour. As with most skills I break it into smaller chunks...

I memorize and perfect a song's first line, Then I do the same with the second line, then I return to the first line and re-work it if I haven't got it full memorized.

When I have the first and second lines memorized, I turn to the third by itself, and when that's done, I turn back to the first two lines.

This process has a second level, in which I do the same for each section of the song (chorus, brides, variations): learn a small chunk perfectly, move on to another chunk, return to the previous chunk.

Learning a song like Willie Nelson's "Mamas Don't Let Your babies Grow up to be Cowboys" takes about 30 min or less.

By definition you return to the previous chunks less and less frequently. That's a structural part of this method; the second part is to play the song 20-30 times in the next couple of days.

However, once you've done that, if you start increasing the period of performance, I've found it's pretty reliable to double the amount of time you can go in between performances and still have the material memorized... if I do this process, then I only need to play the tune every couple of days for the next week or two, and then once every week for the next month or two, and then once a month over the next year.

Using that method, I've been able to call up stuff I haven't played in 2-3 years. And if I'm playing things even less frequently than that, well, I dunno if I really need to know it.

I've found my other skill sets, at least the ones that don't rely on being in a specific physical condition like rock climbing, generally benefit from this periodization.

If you're not already familiar with the term, it's "spaced repetition" - And is big in learning/memory.

Yeah, this method is not original to me, for sure.

Neither the "slow perfect practice" nor the "break down the skill" nor the "spaced repetition" is my invention.

on piano, I do the same but rather than working on components in chronological order, I order from most to least difficult. So the hardest parts get the most practice.

For singing, where my technique is a lot more advanced and it's more about memorization, I learn components in reverse chronological order, ie start with the last four bars, then the last 8 bars, then the last 12, etc. That way the piece is increasingly well memorized as I go along.

Seconding "slow, perfect practice of component parts".

It is a thing that the good teachers I have had in many skills have emphasized. Dancing. Martial arts. Drawing. Start slow, train your muscles to put this part of your body right there, with good form that minimizes the chance of injury. Once you can do that reliably, start doing it faster.

For most of out lives, we are taught to learn subjects in a linear manner - pick up a book on Calculus, read it from start to finish, and you can do calculus. This breaks down when learning something like React. There are a lot of tangential technologies that can throw you off in this process.


I have a 3 step process for learning new frameworks and technologies in ~1 week with a 10-15 hr time commitment. This specifically works well for web development tech but it is easily transferable to other mediums.

Prepare: Spend 1hr Mon. - Thurs. watching videos

Plan: Spend 1hr preparing a small project idea on Fri.

Project: Spend 4-6 hrs executing the project on Sat. Repeat


Example workflow with learning React.

Prepare: The best way to start is to watch a ton of videos and sleep on them. This will build an internal mind-map of related technologies like Hooks, React Native, TypeScript, Class vs Functional Components, Redux, etc.

Plan: The worst thing you can do is not setup a project and do all the misc. work required to be productive. You want to keep that weekend timeframe to JUST code.

Project: This is self-explanatory. Just finish the MVP, google the "right" questions by utilizing your mind-map and build confidence to learn more the next week.


In-depth Video Explanation: https://www.youtube.com/watch?v=8HYvPQOTBNo

I've tried watching technical tutorial videos but I often found people making them aren't really experts in the domain, so I end up watching impressions of a mediocre developer trying to wade through some topic.

There are good videos (usually experts giving talks) but I wouldn't start with those.

I built a process for myself when self teaching coding that generalizes pretty well (have used for it for coding, basketball, 3D art, and most recently cooking).

Revolves around Dr. Strange quote: “mastery comes from theory and practice”.

I start by finding books/resources for absolute beginners. Examples: (Salt fat acid heat [cooking] blenderguru [3d art] Murachs intro to Java [coding].

Next I go through the entire resource cover to cover, and as I learn I add interesting projects to an ongoing list. I find the more I learn, the more interesting the subject gets and the more I want to learn.

The key to getting this cover to cover completion to work though is habit building. I force myself to do the activity every day for at least ten minutes. It sucks in the beginning, but after 2-3 days it becomes super duper easy and I find myself working for hours over that ten minutes.

Once I finish the intro resource: I find the next resource that suits my level… rinse and repeat after that :).

Other stuff that helps/optimizes the process:

Focus on meta learning. Figure out what works for you as you learn. Reflect often.

Surround yourself with experts on the topic if you can.

The problem is not so much how to learn something quickly, but how to remember it for a long time.

From personal experience I would say that in most cases both goals are mutually exclusive. Learning slowly and repeating something often, which takes time, helps to form a lasting memory.

What also helps is an intense emotional context. It does not matter so much whether the emotion is positive or negative. For example, if I had to solve a sever IT problem under time pressure, I might remember the details quite well. But when I worked calmly for weeks on an implementation, may it be simple or complex, I start to forget the details almost immediately after shifting to something else. However, I discovered that I might often quickly immerse myself back into it again at a later time.

There is also this phenomenon that I can reproduce in detail knowledge that I learned decades ago at school or university, but that I am not so good in reproducing what I implemented in the last couple of years. On the other side, I am nowadays a lot faster in adapting new things that are somehow related to my old knowledge, such as looking at a piece of code in an unfamiliar programming language and understand the algorithm.

What also helped a lot in creating a lasting memory was writing explanatory essays or tutorials. I mean not quick notes, but really intense thinking and optimization of the writing up to the point where it would even please your enemy.

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.

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.

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.

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 learn the hardest things first, not the easiest thing (ie I flip right to the Black-Scholes formula when learning options, gradient descent in neural networks, etc etc).

I find that by going after the hardest things first, you learn the most information in the quickest way as all supporting things must be researched on the way.

If you only go after easy basic things and try to work your way up, the pressure (and rate of growth) will never compare.

This depends on what's being learned and the scope of it. We don't start teaching kindergardeners math by diving into linear algebra.

The main thing to me is to practice constantly, and to practice doing it properly. There's also the psych factor, making a little bit of progress every day encourages you to make more progress. Keep the ball rolling, etc.

The post specifically asks about learning things quickly. This is directly proportional to how uncomfortable one can be without quitting.

If someone is dissuaded from learning something because they need to be encouraged, then that is contrary to learning things quickly, at that point its just regular learning.

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.

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.

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.

100%. Good grades don't convey real deep thinking and understanding about a subject/skill. IMO.

No. You are over complicating things.

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.

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.

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.

My general approach for learning human languages, and for programming, is to start practicing as soon and as often as possible. You can spend years reading about stuff, but it's actually putting what you know into practice where real learning happens. I like the phrase, "Anything worth doing, is worth doing poorly."

It's not much of a "process" but it really works. In terms of more methodical things I do: checklists in markdown to keep track of practical steps I want to take, and spaced repitition flashcards with Anki for anything I need to memorize.

Beyond that, lots of coffee, physical activity and sleep to boost my performance and motivation.

Work very hard, every day for weeks, months and years until you get it right; then work even longer until you can't get it wrong. I've found that to be the "secret".

This is it. There are no secrets, no short-cuts. If there were we would all be using them.

Techniques like spaced repetition and even the good-old "programmed instruction" that was popular into the 80's might help a little if the information is amenable to that. Some folks do better with certain techniques and not others. Some folks are better able to pivot previous skills into learning new ones faster. All of these require focus and planning-- which is just another kind of work.

I do believe however that having a mentor, someone that can challenge you in the right way, evaluate your progress, and direct your attention is more valuable than any self-help hack.

It's sad that "quickly" is such an important condition, though. Why quickly? Some things just aren't quick.

Next you’ll be telling me to use a paper todo list and just bloody well get on with it! And you’d be right.

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

20% of passively reading/watching materials, to understand the why, how, and avoid any bad patterns, and 80% actually creating/doing something I've wanted to do with that skill.

This 20/80 mix works for me well and keeps me motiviated.

I'll also notedown in a .txt file in dot points things that seem important, especially things that I feel are important and would be easy to forgot.

You will find lots of information on this topic on this blog: https://commoncog.com/blog/tag/learning-techniques/

Also if you want to level up your skills, and learn about learning in general, these are some books you should check:

- Practice perfect

- Peak

- A mind for numbers

- The inner game of tennis

- Guitar zero

- The art of learning

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).


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.

Start from the highest level, wrap all low level concepts into black boxes to call on demand from the higher level without understanding their internals. Unwrap black boxes for understanding only as needed.

Pretty much the opposite of "higher" level education.

Start a glossary. I like a spreadsheet. Just write down any and all words you can't define completely and reference it frequently. This isn't a full framework or anything, it isn't sexy but very helpful.

I wish I could do this for mathematics. Quite often terms/factors/symbols/variables in equations are only defined once and then I forget a previous definition, not understanding the current equation that I'm looking at.

You can and should! Post it notes are good for stuff where you need to summarize symbol names that are sort of haphazardly distributed across a page. I'm a fan of a separate note section where I write plain English explanations of things, it's helpful in the moment for better appreciating and understanding something, and it's helpful six months in the future because it serves as bread crumbs on the path you first used to understand something, it feels very natural. If you wanted a spreadsheet you could have columns as name, equation, definitions, note, page reference. You might have to invent a name for some things but that's fine.

Usually Study & Practice in parallel

Different skills will require a different blend. Learning a new snowboarding trick is going to be far more practice than study, where as learning how to store your bitcoin safely will be almost entirely study.


1. Find the experts (this isn't always the most popular person in the field, but that's where I start)

2. Find books, blog posts, and courses

3. Read, and study them, and take notes while you do of all the important points

4. Transform notes in Anki cards

5. Study anki cards


1. Figure how the best way to get quick feedback on your skill. (this would be running a cold email campaign, practice the snowboarding trick)

2. Set a schedule to practice, then practice

I’ve been teaching myself org-mode and filling other gaps in my elisp knowledge lately and I organically arrived at this. Except I’m doing zettelkasten with org-roam instead of Anki cards.

Constraint, emotion and time.

Over the years, this is I have found that worked best for me, but it is not fast. :-|

Constraint/limitation/dogfooding: Replace any convenient tool, service, etc with what you are trying to learn.

Specific skill: Feel comfortable in a terminal

Example: Use Word or Excel? Replace with unix text coreutils, vim/emacs and/or perl/py library. When limitation is imposed, things get more concrete, less abstract and easier to process. Step by step self-enforced incremental challenges that layer atop one another. Chunk, Chunker, Chunking!

Emotion/motivation: What do you really want to learn that is so important? Things I really wanted to know add emotional salience. I was invested intrinsically, not for external gain. The more motivated I am and USE what I learn, made/makes the next learning step/challenge easier. I think this is underestimated. Otherwise what is the point? If you are compelled externally (such as a job) see the Constraint step above. Make notes (learning) yours: https://www.scientificamerican.com/article/a-learning-secret... Specific skill: Learn Jira Example: FTS! Use other tools that you enjoy more, ie VimWiki or another DIY issue tracker that maps to Jira fields then transfer to satisfy external demand.

Time: This is the glue that binds the above of constrain/limitation and emotion/motivation. The only discovery here is that we have more time that we think/waste we have. Small caches of time really do add up. I think the Duolingo IPO is onto something ;-)

There is a great book that goes over how to learn information, retain skills, and be able to share it. What Smart Students Know by Adam Robinson. I read it as an adult and it has been a tremendous force multiplier. Wish I actually had it when I was in school.

It’s was written a decade or two ago written by the guy who started Princeton Review. If you can overlook the bits about school, the methods are rock solid.

Read a book and/or blog posts in a speedy way so I roughly remember the pitfalls and places in the book where I will go back to later. I normally don’t do the excercises. Then implement the thing I want to implement and go back to the book.

Learning from videos is kind of tough for me as I cannot skip the content as fast as compared to reading

Find a good doc / book / whatever, and then read the TOC.

When there is no TOC, instead speed read the headings in a doc - hit page down (spacebar) a bunch of times as fast as you can to get the main keywords / concepts to stick.

For me knowing that a particular concept / tool / technique / thing exists and where it's documented if I need to know more is the primary technique. Go deep on a few fundamental things next, then work out what you want to do with the tool and work on that and the surrounding necessary topics to achieve that task.

Often ramping up fast is akin to finding ways to traverse the knowledge graph of prerequisite knowledge. Knowing how to speed up that is the best meta skill you can develop.

In my 20 odd years as a software developer, I've found it very rare that I'm working on a task where I start with the knowledge to complete it.

That approach works for me - it might for you too?

You may find this helpful: https://fromtoschool.com/why-most-programming-tutorials-are-....

A general framework that has helped me a lot in the past.

When learning a new programming language syntax will be the least time consuming thing to learn.

You can skim the syntax on https://learnxinyminutes.com

Instead use a day or two on learning tooling and best practices and then try to implement a small toy project.

I’m a huge fan of learnxinyminutes! Even if I’m planning to go through the larger guide/docs, I find x-in-y is the best way to get a general feel for the breadth and style of the language.

My current method of learning new languages/frameworks is to read the theory (documentation/book) and write questions as I read. Then, I would try to apply the concept (exercise/project). The next day, I would start by reading the questions I wrote. If I know the answer, I just quickly answer it in my head and move on to the next question. If I don't know the answer, I would look it up. Also do add some sort of tally mark next to questions you have successfully answered so that you don't have to keep reading them each day as your list of questions grows (though it might be worth answering a few times to commit it to long term memory).

I think this incorporates spaced repetition and active recall well enough while not being entirely theoretical.

I usually skim through it for the first time. Then I implement a todo app from blogs/documentation, or Clone something from GitHub. I understand the flow of data, once you have the mental map of the data flow, everything becomes easy, atleast in my case. Once I understand the data flow, I wing it. Once that's done, I'll dig through all the best practices of the technology, merits and demerits. I guess I do this for web technologies, maybe this can be ported to some other use case.

While learning a new language, I get my hands dirty, all you need is the logic, you can do a quick Google search oh how loops are implemented, how JSON parsing is done, etc.. After sometime you'll be familiar with it.

This is how I usually learn on the fly.

- prediction. Write down what you already know of the topic. sentence of a mind map. Dump it all out. Look at that and w rite some predictions or questions that interest you about gaps.

- deepis dive. Watch through videos, go down the wikihole, read many abstracts. Whatever, just lightly wash lots of information over yourself.

- read the thing: choose a limited number of key points per section you will remember as you go. Write a progressive summary, or map it out. Write quiz questions for yourself as you go.

- then: apply it. Compare what you learned with your predictions. Review your quiz questions and summary periodically.

That was a method I tried a few times.. it was a lot of overhead, but had its merits in terms of trying to work with the brain.

I try to put everything into the context of other concepts that I have already understood. Find parallels, identify the differences and what they mean within my context.

When encountering completely novel paradigms, like FRP, I experiment and play around with them until I develop an intuition. Not having an intuition for a concept feels quite bad, like an itch that needs scratching. The downside of this approach is that many concepts are very hard to learn because intuition requires deep understanding; the upside is that I rarely completely unlearn a skill.

Taking notes might speed up the process for me, but I’d never go back to them since I prefer to instead skim over another blog post and gain more insight.

I start with a very simple, small project to get the basics down. Then I build upon that. I think doing something helps to make it concrete and thus helps you learn it fast. I also try to document key parts I got stuck on as a cheat sheet of sorts.

What works better for me is to try to do it every day in small amounts rather than herculean efforts a few times a week. As others have mentioned, spaced repetition is key. A habit is much easier to use for learning than just the constant reapplication of discipline. I'll highlight what I've learned about learning and what try to keep in mind.

* Proper sleep is highly important for memory consolidation and recall.

* Exercise (even walking) improves learning efficiency, mental clarity, and motivation.

* Pomodoro technique (I prefer 43-7) allows one to do sprints of learning and sustain the overarching session for longer. Unless I'm in flow, in which case I let it carry me forward without stopping.

Not the answer you’re looking for but hopefully it will help: the best time to learn something is when you don’t need it. You should set aside time, each day to play with something new and to learn. The lack of time pressure will help you take the new thing you’re learning and anchor it in your existing knowledge.

When the time comes to use this new thing you will have a pretty good idea on how to handle it and you’ll only have to brush up on it a bit.

Last, but important: you never want to learn something just to learn it. Build something with it - understand why its’s useful and apply it, even on a small scale projecy

I think for the examples of skills you mentioned, taking notes would be key. Use one of the tag-based or tree-based note-taking search-friendly apps that often gets mentioned in HN. The act of organizing your thoughts and information in order to take notes would help internalize that skill. In all likelihood you might never look at your notes again, except once or twice, and that's fine - it was worth it from the beginning.

You could even write blog posts about these things you are learning, that would go a step deeper into helping you internalize these skills.

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 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.

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 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.

Step 1: Learn It

Step 2: Practice It

Step 3: Do It

Step 4: Teach It

Step 5: Repeat

“If you don’t use it you lose it” has been true for me.

With each step you’re evaluating yourself and repeating steps as necessary until you feel like you’re ready to move on to the next steps.

So for Cold Emails, maybe:

1. Learn - Research techniques online

2. Practice - Send some cold emails to friends or marketing colleagues for feedback, or post to a marketing / sales subreddit.

3. Send cold emails to a real contact list

4. Write about what you learned and how to do it

5. Keep finding ways to improve and new optimizations

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 don't know about quickly, learning takes time.

The process I learned is from video games in the 1970s and 80s. Do your reading. Learn from the experts, watch what they do. They're not your heroes, you're going to have to top them at some point. Practice, but don't even start to practice until you've done those other prerequisites. Losing is not failure if you learned something from it.

If we're talking about a skill that can be written down, the following works for me:

- read the manual and summarise as I go

- using the table of contents of my summary, I rewrite the summary in another document

- I repeat this rewriting the summary a bunch of times over multiple days

- this works for text, diagrams and code

For me, the act of trying to recall from minimal input (a topic heading) gets the job done.

It's really just a variation of the techniques already mentioned here.

Goal-based learning is a fairly generic framework that can help to learn to many things.

Want to learn a snowboarding trick, set a goal or series of milestones to get there.

Want to learn a programming language, set the goal of creating a small application or plugin.

Want to learn how to pass interviews, set the goal of trying 4 interviews in the next month and get feedback.

It's one of several tools, but tangible goals always help learning.

1 gather good learning resource (videos, tutorials, teachers...)

2 pick a interesting project (if you're learning programming, create a software or an app, if you're learning an instrument pick a song, woodworking, a chair...)

3 have fun doing it

That's how I do it, not that I'm an example of anything, but people usually say I learn quickly.

I'm actually pretty terrible at learning new things, but one thing I think has been effective is to immerse oneself into the community of practitioners. Be social about the thing you're trying to learn, you at least get a pretty good understanding of the current "meta", if nothing else.

I use flashcards to note down most important things I want to remember while scanning the subject. Than I take a flashcard and deepen the knowledge about the part of the subject. That is why I have created Summon The JSON. Flashcards boost my learning pace and I am more enthusiastic about learning new stuff

I bet my method beats most others.

Answer basic questions for every step of a topic: what, why, how, who, when, where

Sleep in it

Review with spaced repetition

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

"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.

As a developer I do the following(mostly):

- Pick a technology/tool/language of my interest.

- Check Youtube videos about it.

- If I find I am able to grasp the gist of it quickly in 15-30 mins then I further explore it.

- Visit official docs

- Check examples.

- Come up with a use case and write a blog post that makes me to dig deeper because I am now serving as a teacher.

For any given atomic “skill” you can learn in the body of knowledge: Watch one, do one, teach one.

Keep this in mind the next time you are scheduled for surgery. :)

When learning a new programming library or framework I start by reading the reference manual from cover to cover (figuratively, I actually read it online). I don't retain it all but somehow it works for me. Then I start the tutorial or prototyping.

What I'm starting to do is find a few good books. Read and re read them. Then dive in. I've found this is far less frustrating than just figuring things out with a series of attempts and google searches when something goes wrong.

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.

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.

Quick learning or quick mastery? Seems like you're already good at just "quick learning". Mastery takes time, dedication, and effort - no way around it. You gotta drudge through it.

If the objective is to learn a new skill or subject, it may be more effective to learn in a group setting w a subject matter expert for some subjects (i.e. Shakespeare or philosophy or law)

This video by Huberman labs shows the scientific way to learn optimally: https://youtu.be/uuP-1ioh4LY

I teach others.

It forces me to understand the material because I have to actively recall it. I invent multiple ways to explain the concept which deepens the encoding.

I design and solve exercise of increasing difficulty.

You might want to consider seeing if there is any work on using the skill your username claims to have to help with knowledge acquisition and retention, by the way.

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.

May I ask what is the urgency for? Spend consistent, quality time doing the thing and learning about the thing. The quickness will sort itself out.

- videos: udemy.com, youtube, etc

- ebooks: libgen ... other sites

- chatrooms: IRC, discord

- forums

- documentation

When learning, I've adopted the practice of picking one of: a new technology OR a new domain. Never both at once.

I do:

3 times watching somebody do the thing

3 times doing it supervised

3 times doing it unsupervised but with results checked

Try again.

Fail again.

Fail better.

printf, For/while loop, array handling, linked list, hash table, tree.

Now do a technological domain transfer to any new skill set.

Basic building block, work your way up, ???, profit!

So many ways to learn. The the specific learning 'work-flow' varies for the task and the person in training. And note that Learning is Training, so regardless of the intellectual content of the learning program, there is some level of muscle-memory for most stuff.

In the middle of boot camp, all the madness stops for two weeks to focus on shooting a rifle (marksmanship is a religion in the USMC and some other military organizations); that is you live at the rifle range, and spend most of your time with marksmanship instructors (the DIs remain at the periphary). While there are lectures on interior and exterior ballistics and other related stuff, most of the first week at the range is hours of repetitive dry firing, where you pay attention to your body's form and function required to correctly pull the trigger. Your breathing sequence, your sight picture, your trigger pull become muscle memory. It becomes a zen thing. The second (live-fire) week on the range is very (mentally) stressful, so muscle memory attained in the first week is important because you have many other things to do and respond to during the indeterminate periods of live fire and eventual qualification(and if you do not qualify, you get re-cycled into another platoon or you get kicked to the curb).

Military technical schools tend to cover basic intro stuff using 'programmed' instruction; that is, self-taught, then subsequently tested by the instructor cadre. The tutorials must be approached methodically and incrementally. Never jump into the next session because you are bored. Most of the people that fail military tech schools fail the easy stuff because they do not have structure to their approach and do not have the discipline to operate independently. This also appears to be a common reason for people flunking out of the first two or three semesters of university.

Post-school house learning in the military (new systems, new techniques, updated systems, etc) is done independently by the first learners (NCOs) and is individually-based, with occasional help from the respective vendor's technical rep. I approached learning new avionics systems by first studying the spec, then reading the applied physics theory, then drawing block diagrams from the schematics for power and signal and control flows. So divide an conquer, then put the pieces back together to form the original system.

Learning new programming languages, after the 3d or 4th one, becomes routine. While it is ok to start with quick over-view of the language, the first hard study should be the syntax closely followed by structure declarations. For some languages, this is a good point to stop and look closely at low-level details for memory management and/or allocation techniques. After syntax, structure, and memory models become muscle memory, just dive head-first into solving a series of simple problems. Solving problems is the only way you will learn the libraries. The only language I did not functionally learn in a week or two was Rust. Rust was freaking hard for my aged mind, but it brought back the lost joys of my first two languages learned (Fortran and C).

Learning complex machine tools is similar. Get the basic muscle-memory stuff learned, then extend into the intellectualized stuff. Formal instruction, or pairing up with an experienced and skilled person, for welding and lathes should be done before you self-learn stuff. The same for computer security stuff - as you will probably hurt yourself if you go the independent-learning route for stuff such as penetration testing.


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.

read the 4 hours chef

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact