8 days agoCreated a post • 410 points @joshwcomeau
Incorporating the "learning x the hard way approach", which is about typing the code, rather than just copying and pasting the code, also aids with learning quickly and giving more lasting power to the lesson. The best part of this is the mistakes you're more likely to make by typing, which forces you to look more closely at the original code so you can retype it correctly. I remember much more that way. Even more than that, making such mistakes may draw more attention to the object in error and consequently learn more about that object and how it fits into what you're trying to do.Reply
I do think that all of us have a different take on how we should learn stuff quickly. Some of us learn through visualization; some of us learn by doing the stuff itself. It's just a matter of finding the best method for you to learn different things.Reply
> If you only follow guided resources, you'll wind up in tutorial hell.
I disagree very strongly here. You can wind up in tutorial hell if you only read surface level small to medium sized posts.
My "career superpower" is that I'm always working my way through one textbook or another. You get serious depth this way and avoid getting stuck with a surface level understanding. Plus, with depth you can end up with really strong fundamentals, which make learning the next thing that much easier.
I know a lot of people who read tons of blog posts on topics but never crack open a textbook, or people who watch youtubers explain academic papers yet never open up the actual paper.
Maybe my "learn stuff quickly" trick is... don't. Spend a decade accumulating deep knowledge slowly, and it'll add up. The road to "tutorial hell" is paved with blogposts and missing fundamentals.
(I like the rest of the post)Reply
The author has definitely read “Ultralearning”; I highly recommend this to anyone interested in this sort of topic on metalearning.Reply
That guy coming in from the side at 50% or so is really creepy...Reply
Noone has linked to this yet? OK, I will:
Teach Yourself Programming in 10 years - Peter Norvig
Why is everyone in such a rush?
Walk into any bookstore, and you'll see how to Teach Yourself Java in 24 Hours alongside endless variations offering to teach C, SQL, Ruby, Algorithms, and so on in a few days or hours. The Amazon advanced search for [title: teach, yourself, hours, since: 2000 and found 512 such books. Of the top ten, nine are programming books (the other is about bookkeeping). Similar results come from replacing "teach yourself" with "learn" or "hours" with "days."Reply
I thought this was going to be about how the brain functions, as in how new neuron connections are created and then reinforced. Although the author talks about his approach to using guided and unguided/independent learning it it could be reduced to 1.) use guided learning to establish the initial connections in the brain and 2.) do things independently as a way of recall which strengthens the connections and causes new ones to form. A third option would be to teach others; nothing like having to explain something to someone to trigger the recall of material and exercise those neuron connections.Reply
I struggle with learning new domains or skills where I don't know what to focus on and start.
Example: I've always been fascinated by 'space' and have been determined to invest more time into this hobby by learning more. However, with such a giant array of disciplines (astronomy, cosmology, physics, astrobiology), I don't know where to focus, read a bunch of random information, and feel like I don't retain 90% of it.
It's easier, in my opinion, to learn a skill that has more of a practical application (like the author's Blender 3D modeling education).Reply
Just practice things. That's it. "Quick" is hindsight, learning is the activity.Reply
When it comes to software, one approach that has worked really well for me is "Build your own X". Re-implement a tool from scratch (minimal feature set, not production-quality code) and learn how it works under the hood.
I've done this myself for Git, Docker, Redis, SQLite, Shell and more - it requires patience, but I've found the approach very effective.
There's a GitHub repository with a huge list of similar tutorials that you can follow: https://github.com/danistefanovic/build-your-own-x.
I'm building a programming challenges platform based on this format, if you'd like to check it out: https://codecrafters.io/.Reply
Obligatory nod to a course that changed my life:Reply
Immersion into the topic and developing my opinions and taste first is what makes learning things quicker for me. I can be my own guide if I know the territory and have my preferences, and if I know what to do before I learn how to do it. Key for me is to spend enough time exploring a topic and getting passionate about it.Reply
Nothing beats directed learning with a group of like-minded individuals. We think we can be “self-taught” but it’s extremely rare.Reply
I've never found anything that worked as well as:
1. Become aware that something I'm interested in learning exists
2. Watch and skim a bunch of videos at 2x speed around the idea of the thing (usually keynotes or videos created by the author) to get hyped up
3. Go through the documentation's getting started guide while following along
4. Immediately start building something with the new thing
Treat everything beyond this as question driven development or basically JIT (just in time) learning.
For context the first 3 steps are usually no more than a weekend or a few days.
I do this loop all the time and it hasn't really failed yet for learning all sorts of things (5+ programming languages, a bunch of stuff about Linux, Ansible, Docker, Vim, Terraform, Kubernetes, video production, and the list goes on). These are learning things very quickly at a level where you can comfortably bill out freelance work or get employed.Reply
Diversity of learning also helps for me, if you're 'thrashing' on a problem without making progress, take a break to focus on something else - even another skill entirely you're learning in parallel like cooking, writing, or something physical. It's almost like background processing - you need to load up the context and let your brain chew on the problem a bit and when you return to the problem a solution will usually present itself.Reply
"With software development, though, mistakes are free! If we make a mistake, we can tab back to our editor, change the code, and try again. We even have helpful error messages that can (sometimes) point us in the right direction. This is an incredible luxury, and not one that we take advantage of enough."
This is definitely very underrated and partly why I think computer science education is still sort of broken in some universities. Trial and error should be embraced as a a part of the process of building things. But instead, many curriculums in universities use exams to test your knowledge without any sort of debugger or console. You just have to go off of what you know, getting things as close to correct as you can in the first pass.
All evaluations in CS should surround some type of project based work, it's a huge luxury other fields don't have. Students studying architecture or mechanical engineering, for example, simply can't build a functioning bridge as a test due to the cost of raw materials and how fatal an error may be (that would be really cool though). It's an advantage that we literally can build the bridge equivalent as a project in the CS world.Reply
One idea I've been using recently is to start writing unit tests around a piece of code or functionality as I'm trying to use it. That technique narrows the scope to a single thing, and I'm forced to be explicit about what I expect. That and reading the source code are my gotos.Reply
I think learning is a personal thing. It will definitely differ from person to person based on their passion.
Off topic - I like the template/theme used in this site. Initially thought it could be like Hugo or Jekyll theme, then couldn't find more details. After some time using it felt this is custom made site with all animations and all.Reply
Your site freezes my browser (Vivaldi). Just wanna let you know.Reply