News for hackers. Stuff that matters.
Re:How to rapidly improve at any programming language (2016) by 147 on Saturday September 18, 2021 @03:03PM (#28578424)
Hey, author here. Surprised to see this on the front page of HN since I wrote it 5 years ago.

I've always been fascinated with talent acquisition and skill development and would probably different recommendations today after having more experience and reading Ultralearning by Scott Young.

Re:How to rapidly improve at any programming language (2016) by basedbertram on Saturday September 18, 2021 @03:35PM (#28578641)
I remember hearing about his MIT Challenge. This answer on Quora from an MIT student highlights some of the issues with that challenge https://www.quora.com/How-do-MIT-students-and-professors-fee...

In the book does he reflect on any of this, or is it based on the MIT challenge at all?

Re:How to rapidly improve at any programming language (2016) by PartiallyTyped on Saturday September 18, 2021 @05:10PM (#28579337)
Can be done given that a person has free time, energy, and good planning. It doesn't seem feasible for someone who has adhd or add.

Anecdotal, but I burned through 1/3 of a two semester abstract algebra course in 3ish days of full-time studying, and solving all exercises. But in all honesty, the retention would have been very low had I not began a linear algebra course aimed at graduate pure math students (I am not a math student, nor do I have a math degree).

For such a challenge to work with topics like mathematics, the content needs to be planned such that every course studied builds on top of the previous one, so that the student essentially revises and uses the content studied the previous week.

Re:How to rapidly improve at any programming language (2016) by rmbyrro on Sunday September 19, 2021 @10:15AM (#28584480)
Maybe that applies to traditional learning environments as well. I graduated years ago and most of what was taught I seldom use and don't remember anymore. I just know they exist, what they're good for and how to refresh my memory if I ever need it.

Have you tried flashcards and spaced repetition? Perhaps these could fix what you perceived as a downside?

Re:How to rapidly improve at any programming language (2016) by PartiallyTyped on Sunday September 19, 2021 @01:52PM (#28586349)
I found that for me, the best way to learn anything is to write very extensive notes as if I was teaching the topic, i.e. the Feynman Technique. As I go through the process, I compose a collection of Questions/Exercises to solve and have frequent revisions, in which I draw random exercises and solve them.

By the time of the examination, I have an extensive set of notes that I can search through, and have transitioned to solving the exercises for speed over precision since precision has already been attained. I also transition from solving on paper to solving in my head.

By solving for speed, I mean that after many repetitions the answer that I provide is coarser and distilled because I have good understanding of the finer details, and the finer details can only be attained by writing extensive notes and solving for precision.

In the end of the day though, time is needed to fully absorb the content. The reason is that making structural changes in the brain is very expensive, but spaced repetition and usage of certain pathways make them much more efficient.

In essence, the Feynman Technique is, inho, the best way for a scientist to self-study a topic, and flashcards in various forms along with spaced repetition help achieve that task.

Re:How to rapidly improve at any programming language (2016) by ryohkyo on Saturday September 18, 2021 @03:11PM (#28578476)
What would you do differently today than the article?
Re:How to rapidly improve at any programming language (2016) by 147 on Saturday September 18, 2021 @03:23PM (#28578551)
I'll probably go back and update the article at some point.

Background on the book Ultralearning. It was written by Scott Young who went viral for doing his MIT challenge, to teach himself the MIT CS coursework within a small amount of time.

I would expand on the post and focus on the concept of direct learning. That is, if you're not really practicing a skill in the way you're going to use it in an actual real life situation then it's less optimal.

The example he gave in the book and I totally agree with is learning a language. People look to apps like Duolingo where you're working to recall vocabulary and language in a way that's much different than when speaking.

This isn't to take anything away from doing drills wherein you focus on a specific subset of a skill, like say, free throws in basketball.

The approach I discovered myself and outlined in this post is really a drill for doing code reviews in a language you're learning and learning idioms and patterns from the community. People don't usually look at these aspects because usually the advice is to build a project you're passionate about.

I'm bad at finding side projects to build from the ground up that I'm "passionate" about. I have a couple of drills to work on coding more actively than reviewing code. I take an open source library that I'm interested in, take the tests and write the code to make the tests pass. Or vice-versa where you write the tests for a library. You can make this as big or small as you'd like. I'd start with either a function or a module that's interesting.

This way you zero in on the coding aspect and you don't worry too much about designing the interface since it already has tests. It's also much more real world than doing leetcode algorithm problems. I was taking this approach when I was working on learning how the raft consensus protocol worked.

Re:How to rapidly improve at any programming language (2016) by jcubic on Saturday September 18, 2021 @05:04PM (#28579292)
I would not edit the post in any way, leave it as it is. But I would love to read a follow up. You can link to that new post from that old one.

For me your article is a revelation, didn't realized that I can just read old PR to check how to contribute to Open Source project. I've never read this advice in any guide that show how to contribute to FLOSS and I'm working on Open Source for more than 10 years (I'm sometimes read about how to get started, when I was starting with OSS, there were no guides like this).

I would give this advice to anyone that that want to contribute, it's even more important than looking for good-first-issue or help-wanted. This should be first thing the person do when trying to contribute. Look at old PR.

For me learning new language is side effect. You always learn when you're practicing with real project and work with more experienced developers. It doesn't matter if you work on closed source program in your own team at work or on Open Source. But with Open Source there may be more people, and big project are usually created by very smart people.

Re:How to rapidly improve at any programming language (2016) by jcubic on Saturday September 18, 2021 @04:56PM (#28579229)
I've published this because I was reading your more recent post (GitHub Actions Limitations and Gotchas), found in newsletter Programmer Weekly, and found this post that was 10x more interesting.
Re:How to rapidly improve at any programming language (2016) by 5faulker on Saturday September 18, 2021 @03:39PM (#28578661)
Can vouch Scott Young's work. It applies to other subjects non-related to programming as well.
Re:How to rapidly improve at any programming language (2016) by mbrevoort on Saturday September 18, 2021 @03:09PM (#28578459)
Would love to hear more about that. What was your biggest takeaway from Ultralearning?