Hacker News new | comments | ask | show | jobs | submit login

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.




Applications are open for YC Summer 2019

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

Search: