Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do you personally learn?
190 points by tchaffee 67 days ago | hide | past | web | favorite | 80 comments
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.



I only learn when I have a project in mind that I want to do. No matter if it’s work on or around my house, creating an app or designing something like a logo or interior. Then I just start. Walk into a wall. Stop. Look for learning material or inspiration. Start over.

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.


> I’m not easily frustrated by failure or lack of progress.

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.


In my experience, that's the best way to learn. I think a lot of people are scared off by intellectual challenges that seem insurmountable because they underestimate what persistence can do.

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.


Same here, and I'll add ask questions (to yourself or whoever you can). Lots of questions. When there is something you don't understand, find out first.

This is not limited to IT. You can also apply that to other domains.


I'll start with a few off the top of my head:

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


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


You may find the following guidelines helpful (in no particular order);

1) Be curious always. This is the key to build motivation. Focus on developing a "T-shaped" skill-set i.e. broad knowledge on a variety of domains with deep specialization in a few as required by a job or needs.

2) Do not focus on competing with others. This is a sure fire way to lose motivation. Always focus on persistent and incremental learning. You are only competing with your "past you". Calvin Coolidge said it best;

Nothing in this world can take the place of persistence. Talent will not: nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education will not: the world is full of educated derelicts. Persistence and determination alone are omnipotent.

3) Understand the difference between "learning for knowledge's sake" vs. "learning for a job". The former is what you should strive for. It will guarantee a lifelong occupation for the brain, however constraining your external circumstances might be.

4) Always spend some time Reading and Thinking before jumping into Doing. We live in a time in Human Civilization where almost all of the accumulated knowledge is codified in some fashion for easier comprehension (Scientific Laws, Theories etc.). When you Read, you get other people's experience for free which can inform your actions when it comes to "Doing". Remember the quote "Standing on the shoulders of Giants..."

5) Finally, learn to accept failure without falling into despair and losing self-confidence.


Some really random, obvious things I do:

- 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 tend to run when I take a lunch instead of shoving food in my face (I sit at a desk, I can do that whenever I want), and almost all my "break through" moments happen on the treadmill. It's a little frustrating, to be honest. All I'm trying to do is to not think about running, and consequently how much I hate it. BAM! Something clicks, and the solution to something I wasn't even thinking about comes to mind.


Plaintext vs diagrams or videos vary greatly by person.

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.


This is me- for learning 3d graphics (Maya, Blender), video tutorials are far more prevalent but less useful. I understand the ease of just starting a screen recording, but it's such a pain to pause the video every time I get behind. Text-based tutorials (with screenshots) require more planning on the part of the creator but seem more informative for me.

Now with math or science, video tutorials seem to better teach me.


Does anyone have a system they would recommend for organizing physical notes that backs them up in the cloud?

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.


I use syncthing across various devices and organize a group of folders with markdown files in them, then view / edit them with a markdown editor.

Super simple, free, and the best note system I've used so far.


I directly take notes online. See here: learnook.surge.sh

Then in the chapter 2019.


I have used the Things 3 app on ios because it lets me organize notes by area/projects.

For notes on books, I still take those on paper


Good idea for a personal sprint retro.


I don't have time to do a proper write up this morning but I've got a pile of brain dump for you.

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:

    identity
    values
    beliefs
    capabilities
    behaviours
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.pdf

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


+1 for the excellent Maxwell Maltz


Would love a proper write up.


I struggle a lot with learning due to ADHD but I found below heuristics/techniques helpful in overcoming barriers to learning: 1) OKR : Objectives and Key Results - especially hierarchical deconstruction of OKR [1] 2) OODA : Observe-orient-decide-act loop (similar to REPL in Lisp) [2] 3) DSSS : Deconstruction, Selection, Sequencing, Stakes - an accelerated learning technique promoted by Tim Ferris' Four-hour Chef book [3] 4) Outlining and Concept Mapping with Workflowy or Org-mode 5) 4DX : Four disciplines of Execution as described in the book Deep Work by Cal Newport

[1] https://www.amazon.com/Measure-What-Matters-Simple-Drives/dp... [2] https://fs.blog/2018/01/john-boyd-ooda-loop/ [3] https://tim.blog/2012/11/05/the-4-hour-chef-the-first-chapte...


I use my wiki (https://philosopher.life) to help me reason about everything. Some things take a long time to discover or digest, and I like that I get to structure the path that I take.



These are lovely gifts. Thank you. =)


I saw "stoic" and "bayesian" in the first 5 minutes of browsing your page. That's enough for me to decide to spend some real time digging into it later.

I'm looking forward to digging your brain!


this is fantastic.


I learn best when I make something as soon as possible, however basic. Then after a while I go back, find the best book on the subject I can find, and read it from start to finish.

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.


My strategy is roughly: Figure out what is the hardest part and do that first. Spend a lot of time to do it right. Then iterate until there are no hard parts left. Or in other words, don't waste time doing things you are already good at.


To anyone experienced and good at something, this is such an ingrained habit it's one of those obvious things we easily forget. Average musicians practice the song over and over, great musicians practice the hard part over and over.


Aside from learning by doing, I spend a fair amount of time building intuition. Reading a lot is the bulk of my strategy. Blogs, books, HN comments, reddit and the occasional YT video. This is all passive, so it's not as good as actually doing stuff, but I find that it accumulates (slowly) and helps me build more context, which ultimately leads to something of an intuition for whatever I'm working on. I've been doing this for about twenty years.

I've recently been experimenting with note taking and spaced repetition. Basically when reading, I try to add the occasional tidbit to an Anki deck. I don't think I've gotten the hang of this yet, I currently feel like I'm not adding enough entries, but I want to avoid creating too many notes. Suggestions about stricking a balance would be greatly appreciated.

Edit: typo


"Suggestions about stricking a balance would be greatly appreciated"

Michael Neilsen (spelling?) suggests adding something into your Anki deck if it's worth >=10 mins' time to memorise. (As that's the total time you'll spend reviewing it in Anki, if you keep using Anki forever.)


Deconstruction. The ability to break something down into its smallest parts, and understand how the relationship of those parts makes something tick, will teach you how it works. It also them gives you the ability to innovate, as when you put the parts back together, you can do so in new ways.


This is a great one. It's actually so important it's a separate item on my short list of top skills. I have it as "ability to debug", but "ability to decontruct" is a better and more general category. Thanks!


Sometimes the parts are so many that we still need abstraction to make practical sense of things. https://xkcd.com/1988/


I have to actually DO things to learn it well. Out of all the subjects I had in school, I was best in math and I think that's why. You can actually do math at home in your room and get immediate feedback (the answer is either right or wrong). You can't DO science in your room, you just memorize and see if you memorized correctly. You can do things like write English, but at the same time there's a lot of objectivity there and it's hard to get immediate feedback.

I CAN memorize well. But that is barely learning something. I do not learn by memorizing, I do not learn by being lectured at for an hour at a time. School was not very worthwhile for me outside of the fact that I had to collect signals so people will believe I'm slightly better than mentally retarded. I slept through much of high school - my teachers would pull me aside and say "please try to stay awake - your grades are great so I guess it's fine but please try."

I skipped half of my classes in undergrad - some of the easier business and science courses I only showed up for the tests. Some of my courses I went from an A to a B/B- minus because they penalized absences.

And I still ended up with good-to-great GPA's, a healthy number of academic scholarships, and a couple degrees.

If I'm not actually in it, building it and getting relatively quick feedback on if my solution is correct or not - I'm not learning very well. I'll memorize all day - but what a waste of time.


I have no strategy, learning just feels insanely good. Usually things I can't make sense of just get optimized away/drift into the ether and I don't care for remembering them (if it's important I will keep detailed notes of procedures, names etc at this point, but generally details/trivia don't cross my "care threshold"). <-- and honestly that is super important. It's just as much what you _don't_ learn, you know?

But things that change my understanding of a domain, let me contribute to something other people are building, or otherwise tell me how the world works?

Chances are I will spend hours non-stop talking about them relentlessly to anybody in range (or silently to myself) usually while moving, pace around so I can think faster, draw them, play around with problems that involve them, see everything in every domain as a manifestation of them for a while, and so on and so forth.

And apparently eventually it sticks. Like the first few notes of the song that was playing every morning of 8th grade or the color of grandma's roses. You can't fall in love with something for a while and then not think a little of it every time it's quiet.


If I decide to learn an entirely new skill 'X', my steps are generally:

1. Imagine how I would do 'X'

2. If I hit any walls, I look up that specific step

3. Eventually I end up with a complete idea of how to do X, so that I have a basic mental model of X to challenge and grow

4. I then look up videos/articles/books on how to do X - important to do this before testing step 3 as "1 month in the workshop saves 1 hour in the library"

5. Once I've seen a few different ways of X, then I try to do it. If it doesn't work I go back to step 4 and learn more.

6. (OPTIONAL - if I want better results) I first iterate on the 'final product', to see how tweaking various steps affect the final result. For example, if I'm brewing beer I'll do two attempts in parallel with one varied parameter, so I can figure out how that single parameter is affecting the result.

7. (OPTIONAL - if I feel creative) Once I have a good idea on how to do X with success and sufficient quality, I then consider if I can innovate.

8. (OPTIONAL - if I want to be a master) Once I'm done innovating on X, and feel satisfied that "this is good enough", I try to make the process more efficient.

9. Share results with interested friends, and use their feedback to go back to step 6.


After the fourth or fifth disaster, I begin to suspect I might be doing something wrong.


1. I can only learn by doing. If I can't turn it into a project, then I'll never internalize the details, and cannot really claim to have learned anything. 2. For it to be a project, there has to be a deliverable. Could be a repo on GitHub, a clock sitting in the living room, a blog article, or something repaired around the house. But there has to be an artifact I can point to when I say "I learned this." 3. Don't get stuck. If progress gets delayed on one part of the project and you have to wait for something - whether it's a part, or it's just going to take some time to figure something out - then work on another part of the project in the meantime. Keep moving forward, even if it's not the central thing in which you're interested, even if forward motion is slow.


Through a series of costly and humiliating mistakes


I like this because it's exactly what I asked for: don't leave out the obvious. Great point for brainstorming.


seconded this method for me. Hopefully more of the humiliating and less of the costly.


For me it’s 20% what everyone else is saying and 80% stack overflow. For real.


Yes! SO is one of my biggest learning resources. I'll go into a little more detail: the minute I want to learn something I start looking on SO for questions to answer. Yep, questions to answer. I can't answer any of them at the beginning, but I sort of try to brainstorm it a little and guess at an answer. And when someone else does answer, I learn a little. Eventually I can start to actually answer a question here and there. Sometimes I get it wrong and people correct me. And that's another learning experience. Repeat on a daily basis or even several times a day and it hugely increases my learning rate on any give tech topic.


What I love about stack overflow is that when you have a technical decision to make you can get a really thorough understanding of all of the pros and cons.

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.


My most productive learning has happened while I was deeply invested in creating something new. Being a bit thick, I would run into obstacles almost every step along the way, but being thick has its benefits: the obstacles break down before my skull does.

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.


I've been doing an audio blog on just that topic: https://alchemist.camp/learning-machine

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.


> when I take a very active approach that involves deeply processing the material I'm learning.

Can you give a concrete example of what that looks like?


Sure. If I'm reading, I ask myself what I expect the author to suggest or I ask myself specific questions I think the chapter could answer. Then, as I read, I update my priors.

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.


Start from examples almost immediately. If you start with the foundation or background, you'll lose me almost immediately, because I lack the context to tack the new knowledge onto.

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.


Personally. Spend a lot of time on a topic and choose a small amount of things. Don't let the list of things you want to learn grow too larger before things are ticked off.


I just try to start doing a simple example of whatever I want to learn, and after I realize all the things I don't have/know that I need, I start to build out a more organized framework.

For example, a few years ago I had the vague idea that mortgage rates were low and investing in real estate was a good plan. I didn't know where to start, so I just started looking at listings. Quickly realized I'd need an agent to get more detailed info about the properties I was interested in and to make offers, so I Googled "Buyer's agent <city>" and found the local association of Realtors. From there I found an agent who owned similar investment properties to what I was looking at. Once he started getting me more detailed information about properties, I realized I didn't know how to analyze profitability well. Talked to my agent and read books/articles until I could build a basic model with appropriate assumptions. So forth and so on until I bought a property.

I think it's often too challenging to build a plan on how to learn something if you're starting from scratch, so just picking an obvious starting point and doing _something_ is a good way to build momentum and learn a little bit that you can then build on.


I just keep writing code, glancing at docs when needed and try to spend as much time as possible actively using the thing I'm learning instead of reading about or getting stuck in "what if" scenarios. In most cases writing as much code as possible (and looking up things as needed) will help you learn things faster than sitting back and reading.

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


I try to understand things as deep as possible, often that goes together with building it myself. I am not satisfied with “that’s the way it works”. That worked well for a lot of things, I often read other people’s code to see how stuff works. This approach is the reason why I refuse to use Kubernetes; I wasn’t able to understand it, it has just been too complicated so far.


take 3 months off and do a project that requires a new skill

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.


At a micro level I learn by doing. Just building stuff, trying to extract general principles as I go.

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.


Honestly thinking back, I can only really learn nowadays by doing, and I have to be genuinely interested in it. Furthermore, I've found only by jumping in can I retain the attention needed to learn.

As an example. I recently tried to learn a programming language I had some interest in. Initially, by attempting to follow a book chronologically which I grew bored of by the 4th chapter. Later, I had something I wanted to make, and decided to jump in using the book / docs as a reference when doing something I wasn't familiar with and amazingly, I was able to keep focus and actually learn.

Unfortunately recently, many of my learning projects are coming to a halt because I find I need to purchase X and wait for it to ship, usually temporarily losing interest in the meantime.


I can learn things quickly. Read a few chapters, poke at some code, make something work.

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 learn best when I just jump right in and get my hands dirty. I definitely use an iterative approach over an incremental approach. I prefer to just take a rough pass at structure gross estimates in my head of what needs to be done where. I just get something working even if its just `return true; // TODO` for now, and then iterate over and over with a finer-toothed comb each time.

This sounds like general work practice but it's highly tied to learning for me. When I use this strategy I tend to learn on the go and learn what I need to know rather than worrying up front about what I should research or wasting time planning things that don't end up materializing.


I make a plain text file of a certain topic (e.g chess, economics, politics) and progressively add my own thoughts on in it and useful info I get from others (books, videos, lectures). A lot of early modern thinkers had this thing called a commonplace book. like John Locke, William Paley, Jonathan Edwards, Leopardi, Bacon, Emerson and Thoreau. I think it's a pretty good way to learn. I prefer having a digital version of it since it's much easier to access and I don't have to worry about losing it.

https://en.wikipedia.org/wiki/Commonplace_book


If the goal is to acquire a skill, it's about deliberate practice... I have to come up with a project I want to do, make sure I have energy for it, set time aside for some days, and take a step forward each day (or each other day..)

If the goal is to acquire new knowledge and explore new fields, setting 1h aside each day to read (and study/highlight) non-fiction books works very well for me. I am very strict about this, almost like a second job. For me, it's about acquiring and digesting knowledge gradually. More than 1h a day does not work for me.

Hope this helps!


- I Don't learn for the sake of learning, in the phase of life, where I have to be picky!

- Spend some time (few hours to 1 week max) based on the subject I am trying to learn

- Augment my learning with mind maps and Anki flash cards for long term augmentation

- My favourite: make a small from scratch, throw away version of whatever it is trying to learn, so I internalise it (again set a 2 week time constraint). Example: write a home grown version of Numpy (not everything the core only) or an augmented reality library (may be something that can just detect the horizontal plane)


Can you go into more depth about mind maps, and specifically how they help you?

I'm building an information repository (of a sort..) and my plan for retention is spaced repetition (ala Anki/etc), but I've been unsure how to fit mind maps in it. I've got an inkling that I can automate mind map construction based on a form of labels, but tbh I'm not sure what problem I'm solving with mind maps. How do you find they help you?


It is an interesting idea to be able to generate mind maps automatically.

I just keep a few pages aside, scribble notes, use bookmarks for pages if I am reading a book. Only when I am done, I build a mind map. Usually a book's mind map is made up of multiple mind maps, 1 per chapter.

I use mind maps for the forest overview while flash cards are my trees and leaves! I find the combination very simple to build, maintain and fun to review. Hope this helps, let me know if you want any help in your auto mind map construction idea.


Great combo suggestions. Are there any specific tools you use for the mind maps?


Really a personal mix of analog and digital; I will try to explain a bit in detail, hope this gives an idea.

So I use Bullet Journal (analog notebooks) for perusal work and Notion/Org Mode for office work; Notion for non IP work and Org mode for IP work. My org mode is not in cloud anywhere; only on my disk. All my planning and to-dos go somewhere in here.

I follow this directory layout convention in my home directory:

Projects/<Subject Area>/: - Books - Articles - Courses - Papers

So for everything I am working through, say a book 'Realtime Rendering' under 'Graphics' subject area, I make a dir 'Books/realtime-rendering' directory with 'mind-map' directory which contains all mind-maps scanned from my analog mind map notebook where I make the mind maps with pen and paper. This also contains the exported Anki flash deck for that book.

After making this a habit, I have found that I have become selective about what to work through; I take my time to find out as there is good but worth-it effort to make flash cards and mind maps for long term memory augmentation. Even if I am not very regular (only about 50-60% a week) to review my cards, I am way better off now than before putting this system in place.


I use Anki to learn the basic language and terms. When I joined a new company and domain last year for example, it was a lot of new acronyms.

When searching through documentation, I look for the dense writing of scientific papers. Clear definitions are very useful but often missing in documentation.

Look for the "greybeards" and listen to them. Their intuition is valuable. However, if you have a solid argument then have no fear to voice your concerns. If you disagree with someone more experienced then take the time to really find out why.


1. When learning something, learn it in small chunks — like reading a chapter at a time from a book. Then write things down on paper and review regularly.

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/


Create a list of the people who know the most on the topic and what they are saying / what position they have. For ex. If I want to learn about what Lidar is I start with What does Elon Musk think and then try to find all the people who have the opposing view and learn what they think about the topic. Once you have two or three parties on both sides of a topic you can start to formulate your own next-step questions /research topics.


I learn best jumping in the deep end and learning from previous patterns in code and understanding why something was done the way it was done.

Reading books & loads of technical writing doesn't seem to set in very well for me.

Watching conferences and online course videos also helps understanding concepts. I couldn't for the life get my head around Redux when reading their website but I bought a udemy course for $5 and it basically clicked instantly!


I've found I need structure and accountability, which is annoying since usually that means you're spending money (i.e. a personal trainer, a paid class/bootcamp instead of googling).

A really interesting startup idea would be to figure out how to scale accountability in a way that, psychologically, would be similar to a coach/teacher/mentor but at a fraction of the cost.


>A really interesting startup idea would be to figure out how to scale accountability in a way that, psychologically, would be similar to a coach/teacher/mentor but at a fraction of the cost.

There are many services like this for losing weight and what not where you basically bet that you'll reach your goal in the given time. Sites like dietbet and healthywage.

It wouldn't surprise me of something already exists tha can be used as is for learning.


Another question: How do you avoid getting overwhelmed when starting to learn? In fact, how do you decide what to learn?


For difficult subjects, or stuff I might not work on immediately, I go through a book or class and take COPIOUS notes.

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 do a lot of self-introspection. It started as my effort grow into a more mature person and now it's is a habit. But this habit sometimes leads me to overthink. I'm still evolving as a wise person, I think. It should never stop!


Scanning before reading getting a idea what it is going to try and teach me before actually reading it.

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.


For most skills, I absolutely must have a small project in mind from the beginning. I have no patience for learning a new language or tool if I don't have a particular project that uses it.


I play around. I want to see what kind of output some different inputs cause.

Works better with composable concepts and where you can get quick feedback.

Bret Victor has had some excellent thoughts on this area.


In addition to other comments, I try to find somewhere/project that I can use and practice the new skill.


I learn with the classic read (or watch), do, repeat loop.


I am going to write my answer before reading others' comments, because I don't want to be primed by the other comments.

Because we are all different in some sense, and yet similar in the main sense, certain strategies work for all of us, while some for only those who are similar in that narrow sense.

I need not mention the general sense, since I suspect there maybe many comments with a high probability of mentioning the general case.

In the narrow case of what works only for me, I cannot learn when I don't have a big picture context for my learning. A Book like Lubanovic's Python cookbook is certainly not my style. I need an overall context, so that each small bit makes sense within that context.

For instance, if I want to learn a foreign language word, seeing it deciphered in a textbook, alongside a text does not guarantee my learning it or remembering. Even less so, if it is a word in a "word list dictionary". I need a text which excites my interest enough to want to know the unknown words in it. A Reader's-Digest-like shallow text is not exciting or stimulating enough.

Ditto to programming and CS. I need to know where each learning bit fits in the overall scheme and the scheme should be exciting. I don't want to learn (cannot) simply because something is popular due to network effects (C++) when I know there are better solutions like a combination of Rust, Racket, and Ruby.

I also need to know whether it is worth my input. Like in the C+ case, is my effort paid in triplicate? If not, not interested. Intrinsic motivation in learning something can translate to a pay off, but it better be as good as (similar input output ratio) Scheme/Lisp/Racket to justify learning it.

Recently I have been looking at Java, in the popular book by Eckel. I am having doubts as to whether I should go deeper in Ruby or also see what Java offers. My motivation is damped by the way Scala is written since it seems to be what Java aimed to be but couldn't. I am stuck now. On one hand, I want to know If I am missing something if I dont learn Java. On the other, I dont want to learn sth arcane and programmer-unfriendly when and since I have alternatives like Scala and Ruby and Kotlin.

Hence, for me to want to learn creates the necessary mental readiness to actually learn it. I picked up Ruby fairly quickly because the explanations by David Black, in his Well Grounded Rubyist were excellent enough to allow me to learn it all in one place, with zero frustrations.

In summary, for me to learn sth, it has to be useful, interesting, stimulating, and practice-friendly. After this is satisfied, I need clear explanations and logical progression with hands-on real-world applications. With all this, I dont need any tricks or strategies. It will all fall into place.

Best,

James




Applications are open for YC Winter 2020

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

Search: