6 ms·
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 dev
by 147 5y ago
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.
- mbrevoort 5y agoWould love to hear more about that. What was your biggest takeaway from Ultralearning?
- ryohkyo 5y agoWhat would you do differently today than the article?
- 147 5y agoI'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.
- jcubic 5y agoI 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.
- basedbertram 5y agoI 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-feel-about-Scott-Youngs-MIT-Challenge?top_ans=2122899 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?
- PartiallyTyped 5y agoCan 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.
- rmbyrro 5y agoMaybe 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?
- PartiallyTyped 5y agoI 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.
- 5faulker 5y agoCan vouch Scott Young's work. It applies to other subjects non-related to programming as well.
- jcubic 5y agoI'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.