- Do things to learn them, there was never a good programmer who just read lots about programming - you need to program in a project-based way to learn skills - that's the difference between theoretical understanding, which is often very shallow, and deep intuitive ability to create.
- Build things from scratch to understand them. What you cannot create, you do not understand.
- When learning a concept, ask yourself: what problem is this concept solving? This aligns with the scientific method.
- Visualize: When you read a book, paper, or textbook, or hear a lecture, if you cannot visualize it, you didn't understand it. You should be able to make an "explainer-video" like visualization of a complex topic in your head to truly understand it.
- When blurting, write down questions you have. This involves question-based learning instead of just learning by following a textbook. Learning is about asking the right questions - knowing what you don't know. This leads to goal-based learning - the goal is answering the question.
- Theoretical learning is essential for deep understanding. Exercises make it stick, preventing the loop of learning and forgetting more complex concepts like calculus.
- Use active recall through blurting instead of flashcards. Blurting allows you to learn and think in systems, whereas flashcards only pick out one concept of a system without relating it to other concepts. This ties in with thinking in systems and learning concepts by relating them to each other.
- Learn bigger concepts and systems by deeply understanding all the subsystems. This is First Principle Learning & First Principle Thinking, where deep understanding of first principles compounds. You can reapply the first-principles of STEM to other concepts.
- Learn things in the right order, such as through Semantic Learning Trees.
- Apply learnings through real-world projects.
- Learning concepts by relating them to each other, using tools like Obsidian.
- Relax to learn effectively
- Use urgency when learning/problem-based learning, like learning PyTorch for a real-world project. Urgency can also be created with university exams, job interviews, etc.
- Follow your natural inquisitiveness when learning. If you don't know what you are naturally most inquisitive about, explore the world more.
- Don't fall into the trap of pure memorization. Before memorizing something, understand it.
- Surround yourself with people who already know about what you want to learn.
- Use many different modalities when learning (both for input and output) - pen & paper, video, drawings, Obsidian Zettelkasten, conversations, presentations, purely mental visualization.
- Avoid pseudo productivity, such as exactly writing down what a lecturer says or copy-pasting code from tutorials. Instead, rephrase things in your own words and only write down things you don't know.
- The Feynman Technique: Teach concepts to understand them. Being able to teach concepts on multiple application layers, especially the very simple one (explain like I am five), shows that you deeply understood something because you need to break a big concept down to its essence.