Hacker News new | comments | ask | show | jobs | submit login
How to teach yourself hard things (jvns.ca)
434 points by clovis 5 months ago | hide | past | web | favorite | 79 comments



I think good quality materials or teachers are key, and will always be key. I taught myself most things I know, and I am an idiot for it (though sometimes I had no other option).

There is no substitute for knowing CS50 exists for learning to program. There is no substitute to "Speed Secrets" (the book) for learning to drive fast, etc, etc.

The problem is that, as a beginner, you don't know what's good. As a beginner, you don't know that this really will prevent any knee instability:

http://www.moveforwardpt.com/assets/cbe46e14-86d6-4ed1-8d53-... (PDF warning)

or these really are ALL great exercises:

https://www.youtube.com/watch?v=ZA8GzhFh_CQ

Etc.

I wish I had someone give me these things as a kid. I would have wasted much less time.


For learning how to program, How To Code [1] (based on How to Design Programs [2]) is tragically underrated given that it's hands down the best approach to learn how to program (actually, more importantly, how to think about programming) of the many I have looked at. Wish I had known this years ago. Rarely the best learning resources are widely know, so sad.

I decided to give this course a go after reading the eye-opening paper The Structure and Interpretation of the Computer Science Curriculum [3], and then discovered the edx course in HN [4] [5].

Although having programmed for many years it totally changed the way I look at programming; I followed this with the sadly unfinished but still excellent How to Design Classes [6], which consistently extends this initially FP approach to OO. To check how this approach is language neutral, have a look at Design Recipes in C [7].

Another neglected but wonderful resource is MIT OCW Elements of Software Construction (the 2008 version) [8], which, like the above, is centered around design rather than coding.

What did I get out of all this? A systematic approach to programming.

[1] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x

[2] https://htdp.org/

[3] https://cs.brown.edu/~sk/Publications/Papers/Published/fffk-...

[4] https://news.ycombinator.com/item?id=9810542

[5] https://news.ycombinator.com/item?id=16455240

[6] http://www.ccs.neu.edu/home/matthias/htdc.html

[7] https://hci.uni-hannover.de/files/prog1script/script.html

[8] https://ocw.mit.edu/courses/electrical-engineering-and-compu...


Thank you for this valuable advice. I always love to learn more about programming.


Thank you for this. I've been programming for a while and always appreciate another perspective on things. Starting with 3 now!


It is great that I have helped you learn about 3, enjoy!


It's cliche, but "you don't know what you don't know", and that's the hardest part.


The best way out of unconscious incompetence is having a mentor, but knowing to get a mentor is often a test of your ego, which can be the hardest part to overcome.


I would add that ability to meet or acquire a willing mentor is another major hurdle, even if you do know you'd be better off with one.


Isn’t meetup a good source for this? Or industry/society events. ACM/usenix/2600.


Depends on your area. I live in a small town and there just aren't that many people you can meet. Maybe there's an online mentoring site to connect people out there?


Definitely. They’re just not accessible to everyone.


I'm actually subscribed to the AthleanX channel and use a lot of Jeff's training videos, partly because his videos have great click-bait titles but mostly because I find most other youtube trainers annoying while Jeff sure sounds a lot more professional and convincing.

However, since we're in the 'you don't know what you don't know' thread, I really have to ask. Are Jeff's training exercises really that good?


I am wondering the same thing actually. He has a lot in common with Travis Haley - they are both "professionals" in a "bro" field with real credentials, but Travis spouts some bullshit under the guise of being scientific and takes things way too far to the point of being superfluous. I can't think of other examples right now, but "bullshit with sophisticated presentation and lots of confidence" is a pretty common marketing tactic.

I can tell you for sure that the exercises I linked are great and essential. I have found them on my own over years, and it was a breath of fresh air to see someone present them.

On the other hand, a topic that interested me for a while was rate of protein absorbtion (i.e. "Can we only absorb 16 grams of protein in a sitting, and eating anything over that is a waste."). Jeff presents a strong opinion, which is that there is no limit, but I don't think his logic is solid. Seems like the issue is still very much under debate, and while what he says makes sense, I doubt he knows it to be fact, though he presents it as such.


It's really hard to say. I removed him from my YT, because it feels like he is just searching for exercises to fill in click bait titles.

On the other hand, I do buy into the whole "physical therapist" part of his brand. But you can't keep pushing new videos telling people to do the same 5-10 exercises.


I am wondering what makes a teacher good or a material good quality? Something/one that provides us skill(s) that are applicable in a variety of ways? But the application depends on us, what if we search for a resource that we feel the need to learn, that resource becomes a good one because we can then apply it. And who judges/labels "yeah it's a good resource/teacher"


I very much experienced this not knowing what's good as a beginner. It was only after taking my first and only CS class that I found direction and made a road map for concepts. Since then, I have taught myself much more than that class delivered. Before, I was able to teach myself but there was no sense of understanding what information was useful, as you described. It gave me the necessary boost to get started.


I taught myself most things I know, and I am an idiot for it (though sometimes I had no other option).

If "teaching yourself" means trying to find resources to learn something you're interested in, why would that make you an idiot?


If you’re learning on your own, you get to pick and choose what you want to learn. That almost always means you’re going to choose not to learn something that is actually important. Having a good teacher and a structured education system means there is an expert who will make sure you learn everything you need to know and you haven’t missed anything.


I often read through books and spend time learning materials that I’m not super interested in. Not because I like it, but because I understand some topics are just essential to understand.

Don’t need a teach for that instruction though.


the point isn't that you understand there are topics that are essential, it's to have someone to identify what is essential.

we all have blindspots, much more when we're just starting something new.


> it's to have someone to identify what is essential.

You don't need "a good teacher and a structured education system" to identify that, because what's essential in a domain is not a function of you. It's a function on the domain itself. Or, in other words, it's enough for a good teacher somewhere to identify important areas and create some structure, and everyone can benefit. You don't need that teacher for yourself (but you might want to read his book).


Or, you can notice such experts exist and share their opinion on what is important to learn, and use that opinion to guide your learning.


That's called having a teacher.


What I meant is that instead of having a teacher - a person you interact with, and who is at least aware of your existence and learning goals - you find existing material published by experts and use that to guide your learning - without ever having to be in contact with them.


What about feedback ? Isn't it an important shortcut ?


Some kind of feedback is required. If you can get personal feedback, from 1:1 interactions with a teacher, all power to you. But many people can't, and have to seek out feedback on case-by-case basis (e.g. by sharing their work on-line), and/or from non-living sources (e.g. your solution working is a form of feedback in itself, quite fertile if you pay attention to it).


Compared to learning from an expert tutor/mentor 1-on-1, or even getting expert advice about where to find resources, it is (a) pretty inefficient, and (b) tends to leave gaps in basic knowledge.


The problem with these guides is that if you are able to follow the advice through you probably didn't need the guide in the first place.

Lack of stress and plenty quality time for learning and the discipline and motivation to follow through and the ability to focus on a single topic for a long period are the unspoken basic requirements to do this succesfully.


I've always found the last two harder to maintain when I've got the first two. The opposite is true as well; when I've got the last two, the first two never work out.


Exactly.

I suspect that the popularity of these types of articles is that it resonates deeply with highly motivated, self directed learners.

Same goes for articles targeting productivity geeks, and anything self-help related


Sometimes, I wish someone who didn’t need a guide like this would still read it and be inspired to create a guide that would be more effective for people who did need it.


If your are interested in learning hard subjects, I highly recommend Richard Hamming's wonderful course The Art of Doing Science and Engineering: Learning to Learn [1], and the related book [2]

[1] https://www.youtube.com/watch?v=AD4b-52jtos&list=PL2FF649D0C...

[2] https://www.amazon.com/Art-Doing-Science-Engineering-Learnin...


Also: high quality sleep makes a huge difference to retention (fact) and makes it easier to tackle new material (personal experience).


This is a fundamental skill for modern jobs. If you don't want your labor to be commoditized or be out on the other end of an API, you need to be able to do hard, creative things.

Unfortunately what is "hard" changes every year, so you need to be a continuous learner.


You also need to maximize your earnings, minimize your spending, and ensure you have enough runway between jobs (6-12 months) or enough cushion to take some time off when you're burned out. Because you will burn out. Humans are not machinery meant to be run at 110% constantly.


Yeah, taking on this kind of challenging, continuous-learning work is fun... but it's generally only sustainable as long as the total time you put in to both "education" and "work" doesn't exceed full-time.

Trying to negotiate that up-front, though, is hard. Most employers don't like paying much for education and research, and they don't like people who want to work less than full-time, either.


It's tricky. If you have an intelligent employer, they will understand that as a professional, learning is as much part of your job as fixing bugs. If your employer is not intelligent like that, but the company isn't a sweatshop, you probably might be able to "slow down" your ticket crunching a little bit in order to get some directly relevant learning in[0] (that, over time, will actually improve your work results). If your job is a sweatshop, be happy that in this industry it's still relatively easy to change jobs.

--

[0] - not saying use your job time to learn CV-padding stuff; just if you suddenly need to work on a codebase in a language you don't know, don't be afraid to read an actual book instead of minimal amount of StackOverflow answers needed to kill your fist ticket.


Every part of this post is important to understand and internalize. I didn't think it would happen to me (burn out) until it did. Still struggling.


This is bad advice, sorry. Not the financial one I mean, it’s always good to save up some money for bad times, but the “you will burn out” part.

If you think that you will eventually burn out, like in “its just a matter of time”, you should seriously consider switching jobs, work in a less demanding industry, or do something else. There is so much more to life than just this work and nothing keeps you from working just at half the pace. You even might get some different insights from that. Seriously, I don’t want to sound like a total jerk but when this is the approach you choose, it’s going to be needlessly rough.

Your username indicates your attitude, btw. Talk to a friend or professional. Maybe you need some good advice.

edit: spelling


Burnout is very real, and is more prevalent than you might expect [1] ("57% of Tech Workers Are Suffering From Job Burnout").

> you should seriously consider switching jobs, work in a less demanding industry, or do something else

The cognitive dissonance expressed here is...wow. When you have people to support (or even just yourself), you don't just "switch jobs or industries, or do something else" on a whim when you've become burned out. To trivialize the complexity of handling burnout shows a complete lack of understanding what it is like to burn out.

My username is a holdover from an inside joke 20 years ago in my teens, btw. And I don't think I'm the one who needs good advice.

[1] https://www.bleepingcomputer.com/news/technology/57-percent-...


> you don't just "switch jobs or industries, or do something else" on a whim when you've become burned out

IMHO That's not at all what they're saying. I think they're suggesting making changes long before that, when one hasn't burned out but feels that it is just a matter of time. As far as general suggestion goes (i.e. not directed at you, though it was a reply to you; this is a public forum after all, so you're essentially a stand-in for a wider group of people), I think they're spot on. It may not be relevant to you specifically, since we don't know the details of your situation.


Hey, maybe I've got a blind spot in my thinking. How do you predict that you're going to burn out? It's clear it's an issue in the tech industry based on statistical data (see my above reply citation that almost 60% of tech workers are experiencing burnout), so people are not anticipating it and moving out of tech into less stressful careers, or for whatever reason, they can't move out of tech even if they're already burned out.

Having seen others burn out in both startups and enterprises, in and out of tech, my opinion is that the advice of the person I responded to is not sound.


I don't have a good general answer. But for me personally, when I show early signs of learned helplessness and chronic stress, I need to make changes before I hit the inflection point, or I end up paying a great price. I agree that not everyone has the means to make significant changes to their life.


I appreciate the insight. Please don't misunderstand me: I'm not here to gripe, I'm advocating for mental health and wellbeing. None of this work is going to matter when most of us is dead, and if I'd hazard a guess, it won't even matter five years from now. Take care of yourself first.


> Take care of yourself first.

Very true!

I saw a video about Warren Buffet and he used the analogy of a car. What if you could buy any car you liked, but you only got one car for your life. How would you care for it?

Well, you only get one mind and body (so far as I know). I try to take as good care as I would if I only had one car.


I don't know. I'd prefer to find or build a company that recognizes a sustainable pace, so that I can avoid burnout. Maybe it is where I am at, but I know of at least three in the area (with different benefits and detriments).


Wow relevant username to post ratio


Not to mention access to amphetamines if you're someone like me who burns out easily without them. Fortunately it's completely trivial to get them legally in the US.


Turning to drugs to improve learning performance is bad advice. Note: I don’t say what you do is bad, this is totally up to you. But giving someone else the advice using drugs is just bad.


Currently trying to learn quantum physics on my own (with no previous education in physics, only a CS degree). Very hard, but surprisingly, some analogies from machine learning can be helpful (a ket vector is like the sample, a bra vector is the set of coefficients, multiplying both gives you a measurement... this kind of thing). It can be wrong, but similarities in mathematical structures help immensely.


If you're ever interested in digging into other areas of physics, take a look at this blog post by Susan J Fowler which gives a comprehensive overview with references to various topics: https://www.susanjfowler.com/blog/2016/8/13/so-you-want-to-l...


Thank you so much!


Try starting with Townsend’s book. https://amzn.com/1891389785/



That's fundamentally because they're both just linear algebra. You'd have an even easier time if you thoroughly mastered linear algebra and then "merely" applied your knowledge to whatever you'd like to learn in CS and physics that requires it.


It's interesting you mention similarities with machine learning, when in fact, chronologically speaking, the formalisation of Quantum Mechanics used (complex) tools from Hilbert Space.


Both QM and ML are very heavy in linear algebra. Some might say they’re both glorified (or unglorified?) linear algebra. ;)


I strongly recommend watching Edward Kmett’s talk — Stop treading water: learning to learn https://m.youtube.com/watch?v=Z8KcCU-p8QA


In my experience, learning something hard without applying it to a real problem during several weeks or months, spending hours trying to solve weird errors is impossible.

Keep in mind that learn something is very different to understand something. Maybe I understand functional programming, but if I haven't worked on a real project that uses a functional programming language, I probably suck at it.


Exactly, the difference in retention that comes from theory vs it's application is too wide


I feel while a learning methodology may make it go faster, what matters more is having the intrinsic motivation to actually get started and keep going (especially when you hit roadblocks).

What works for me is having a project or goal I'm excited about. That motivates me to learn the skills and knowledge to achieve it. Back in my teens, I really wanted to customize a Neopets guild (remember those? ;) ) so I started learning HTML to be able to. After, it was "I really want my own site" so I learned PHP to customize Wordpress and so on.

When I was in school and some of the information I had to learn wasn't directly applicable, I made a game out of testing study techniques. Such as taking annotated screenshots out of Youtube videos (10x better than textbook diagrams and walls of text). This game (which was really about changing my own perception from "ugh, rote memorization" to "let's test study techniques") helped me through the denser materials.


(Sorry to nitpick, but) I think you mean "learning method"? A method is a method; a methodology is the reasons, rationale, explanation for why you've used that particular method. I see this error everywhere, although it's much longer and incorrect. I guess it sounds/looks impressive, kinda scientific.


Is it really an error if everything from Google to Merriam-Webster apparently makes it?

https://www.merriam-webster.com/dictionary/methodology

> a body of methods, rules, and postulates employed by a discipline : a particular procedure or set of procedures

I.e. methodology is a set of methods.


I didn't quite understand your question, but yes it's really an error. No, that's not what methodology means. Although if everyone uses it to mean the same as method, as seems increasingly the case, then that will be what it means and be printed in dictionaries. Personally, I like short words and think they should be preferred, besides the two concepts being entirely different.


> Although if everyone uses it to mean the same as method, as seems increasingly the case, then that will be what it means and be printed in dictionaries.

As far as I've ever heard or seen this word used, "methodology" is used to mean "a set of methods". Maybe you're a bit confused by the fact that a method can be usually destructured into sub-methods - or conversely, a "methodology" is just a single method in the set of methods one meta-level up.


If it is science what you are looking for, on one side you need extreme discipline to force yourself on hard, alien subjects that you will mostly not understand at a glance. On the other side, you much probably need a mentor to discuss things in a sequential or progressive manner, assimilate the underlying theory with its nuances for real and test yourself against a rock solid reference. I acted as an informal tutor for a number of fellow students at uni and both circumstances were needed to get them results (and pass their exams).


The approach I’m trying now is to start at the destination and work my way backwards. It’s similar to how some people prep for test by starting with a test and then focusing on the weak areas.

It feels similar to how I learn in the course of working in a professional environment. Try to do something, get stuck and then go understand the thing you’re stuck on. The idea is that if I start at the destination the necessity for and application of the missing knowledge is much clearer to me. Of course you can go back multiple levels to gain a understanding of something, I tend to stop at the point where I have a practical understanding but I find as I progress the areas I get stuck on tend to have some root base of knowledge that’s further back, perhaps theoretical in nature, learning that makes everything just “click.” (I’m currently doing this to understand deep learning and music composition).


Kind of test-driver development :) If u make some notes of ur foray into these two topics (I am a noob in both, and just "interested" in both atm, and in music theory more than composition), it might be helpful for others so if you do plan to make a blog of your journey, pls email the link to me at gawkface@gmail.com, thanks!


I like learning! It’s fun!

That's the take away here.


It would be useful to have a guide like this for a scientific field, since a lot of things coders take for granted like SO etc does not exist and a lot of knowledge in the field is hidden behind complicate democracy language or secretive authors.


Can anyone please suggest how go about learning subjects like Analysis of Algorithms which is quite a math heavy subject?


I don't think it's that math heavy.

AFAIK there are 3 kinds of analysis:

1) execution counting: loops count (n, n^2) etc., with sorting: nlogn, recursion (c^n) - used to prove worst case. You have to be familiar with big O notation.

2) amortised analysis - proves average case

3) proving lower bounds (usually based on tree of possibilites) - proves that something can't be done more efficiently (this might be math heavy)

Just grab some book on algorithms - they usually start with algorithm analysis intro.


Fundamentally there are few barriers to study and they were researched well by L. Ron Hubbard, and are applied through Applied Scholastics http://www.appliedscholastics.org/

The technology to study is exact, and also involved clarification of any words and symbols and meaning that one does not understand.

http://www.appliedscholastics.org/study-tech/a-breakthrough-...

Everybody can learn anything, there are no stupid kids or students, there are students with misunderstoods and those may be clarified.


I always though that this "wisdom" from LRH was about as useful as the rest of Scientology itself. All I have to do to learn is look up the words I don't understand? You don't say.

Let me guess, all I have to do to walk from San Francisco to New York is take steps. All I have to do to lose weight is eat less.

Its silly reductionism dressed up to sound profound in order to sell an enormous fraud. File it under true but not especially useful.


What’s the point of “guessing” something uncharitable and then making a dismissive hostile comment, instead of either examining the link or just keeping quiet?

Remember, the other people posting here are humans with feelings, and they are contributing because they want to be helpful. It’s quite unfortunate that the previous poster was so heavily downvoted based on readers’ knee-jerk reaction to Hubbard’s name.

The claim of the materials on the website is that 3 serious barriers to learning are (1) studying objects or phenomena without ever interacting with them personally, but only treating them abstractly/formally, (2) studying skills/ideas beyond the student’s current level without first covering prerequisite skills/ideas and building slowly, (3) misconceptions stemming from misunderstood words. It does not suggest that fixing these 3 things is easy, or will solve every problem in education.

Sure, this seems largely like common sense, and is by no means a revolutionary insight (contrary to the site’s marketing message), but in practice schools often do a terrible job at following this basic advice, and many students e.g. don’t really know how to use a dictionary. It seems this organization has various materials and training for sale. It is at least plausible that these are well produced and useful.


One of those is not like the other.

All you really have to do to lose weight is to eat less (where less is defined as "fewer calories").

There's nothing more to it. That's the entire method. Everything else is just there to aid you in accomplishing that goal. This is a perfect example illustrating why simple and easy aren't synonyms. Losing weight is simple (it's literally a single thing you have to do), but far from easy since chocolate is really tasty.


Sorry, but it's hard for me to trust anything that is related to Scientology. Do you have any neutral references on this "technique"?


Everybody can learn anything, there are no stupid kids or students, there are students with misunderstoods and those may be clarified.

A very odd statement:

* Everybody can learn anything, - no we cannot, for obvious reasons

* there are no stupid kids or students, - fair enough, I agree

* there are students with misunderstoods - assuming a speling mistak, "misunderstandings" doesn't work here either

* and those may be clarified. - Not sure how you clarify a misunderstanding: it is already a misunderstanding, unless you are actually referring to butter for some reason.


You could try to be charitably skeptical instead of pedantic, dismissive, and gratuitously insulting.

From the website linked, we can infer that “misunderstood” is supposed to be “misunderstood word”.




Applications are open for YC Summer 2019

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

Search: