A roadmap to learn any programming language


To learn a language effectively, it's crucial to adopt a holistic approach that combines various methods and techniques. Here's an abstract roadmap.

Think why you want to use a specific language. Each language has it's own purpose and usage. For example if I want to automate some process in my computer I would go for shell. So knowing & understanding a language's purpose would solve a lot of issues even before you start typing your code.

After you choose you language, Don't jump into using dedicated IDEs and Frameworks. Yes I mean it.

Learn from basics and type things out in a text file and run your code manually.

So where do you start from? All programming languages pretty much has same set of concepts, only logics & syntax differs. step wise do this

  1. Sequential programming.
  2. Object Oriented. (OOP)
  3. Dive deeper.

Sequential programming

  • Know if a language is statically typed or inferred. Based on this your errors & debugging would change a bit.
  • Datatypes and their limits.
  • Constants & literals.
  • Operators.
  • Keywords.
  • Statements.
  • Strings.
  • Arrays.
  • Control flow.
    • Conditionals.
    • Loops.
  • Functions - declarations & definitions
  • Memory basics. how things are stored, retrieved and passed(pass by value / reference).
  • Pointers (if c/c++)

Object oriented Programming

  • Why Object Oriented is necessary. What does it hold?

  • Classes & objects.

  • Access modifiers.

  • Constructors / destructors. (some language might not have these)

  • Static, global & local variables difference & importance of existence.

  • Lambdas.

    Concepts & syntax

    • Abstraction.
    • Inheritance.
    • Polymorphism.
    • Overloading (for c++).

Dive deeper

  • Regex.
  • Basics of data structures & their existence.
  • Stack.
  • List.
  • Dictionaries / Map.
  • Set.
  • Weak map / set.
  • Time & space complexities.
  • Memory & garbage collection in deep.
  • In-built Libraries. Some are os layer libraries, input output libraries, etc..

Other topics you might want to explore

  • Other Data structures & Algorithms.
  • Design patterns.
  • Aspect oriented programming.