What does it mean to learn a new programming language? What must you know to start writing code in it?
If you have already learned a language in the same family as the one you are trying to explore - object-oriented, functional, statically typed, dynamically typed - you may pick up the new one relatively quickly. The mental model is already in place. But what if the new language differs vastly from anything you know?
Every programming language can be deconstructed and described by a set of well-established characteristics. These characteristics, often called the design features of a programming language, are the lens that makes an unfamiliar language easier to learn. Rather than memorising syntax, you ask: what is the data model? How is variance handled? Is it imperative or declarative? Statically or dynamically typed? The idioms and the public API follow from the answers.
Notes covering individual characteristics are tagged tech/software/language. Browse the tag, or follow the more specific concepts: