When learning something new:

  • Learn from other people's mistakes. Search for common mistakes and pitfalls.
  • Learn from other people's successes. Search for good outcomes.

When starting to learn something technical, just try to remember enough that the need to use something will trigger a memory of what to look up. Take advantage of modern search conveniences to act as your auxiliary memory.

Learning a spoken language

Once you have the basics down, consume as much of the language as possible, as quickly as possible. For example, watch TV in the language with subtitles on in that language. You won't understand every word, but as you learn new words, it can unlock memories of the word being previously used, giving you more context for what you just learned. Don't worry about bad grammar or pronunciation, just try to speak.

Learning a programming language

The approach depends on how much programming experience you already have.

  • If you are already familiar with the concepts of the language, just learn the syntax and exercise your usage of it by making a toy project.
  • If you are not familiar with some concepts of the language, spend time to learn those concepts first, and then practice using them.
  • If you are learning your first programming language:
    • Have a goal in mind of what product you want to make
    • Learn both high-level computer science concepts and low-level application at the same time, or else you will trap yourself into sub-optimal solutions that could have been better if you were exposed to more of the fundamentals.
    • As you learn, think of how to apply that knowledge to the creation of your product.
  • Read sections of large code bases written in the language to get a sense of how the language should be written. There will be plenty on GitHub.