How to Learn Programming Systematically--

2021-01-26

The Essence of Programming?

I have been thinking about the essence of programming for years. Here is some analysis at different levels:

  • Classification by process

    • What do you want to do

      • Clearly define what you want to do
      • Knowing your own purpose is what matters most
    • Breaking down and recombining how events unfold

      • Break down what you do
      • Know every step clearly
      • Put the steps together
      • Do things in the most efficient way
    • A dialogue with the computer

      • You must understand what a computer can do
      • You must be able to speak the computer’s language
      • You must know how to organize your words
  • Traditional classification

    • Data structures
      • How data is organized
    • Algorithms
      • The process of data flowing

Guiding Principles for Learning Programming

A. Practice first

  • Programming is highly hands-on
  • Results come back quickly as feedback
  • Write a decent amount of code before anything else B. Master one thing
  • Go deep on one language first
  • Get proficient with one toolchain
  • Study specialized domains as needed C. Learn in layers
  • Level up step by step from your current level
    1. Copy programs to get them running
    2. Build simple programs on your own
    3. Develop complete systems collaboratively
    4. Build high-performance systems
  • As your ability grows at each stage, go deeper into the following areas
    1. Programming languages
    2. Operating systems
    3. Networking
    4. Domain specifics

A Concrete Process to Follow

-- To be continued