How to Learn a New Programming Language or Framework

Chapter 1 · Practice 1 of 3

Define "learned" as something you can build, not a course you finished

From Set a clear learning goal

Why it matters

"Learn Rust" has no finish line. "Build a command line tool in Rust that parses our log files and prints error counts" does. A concrete goal tells you what to study, what to skip and when you are done.

Good learning goals are:

  • Concrete: a working program, a feature in a real codebase, a deployed service.
  • Slightly beyond you: big enough to need new knowledge, small enough to finish.
  • Time-boxed: two weeks of evenings, or one sprint at work.
VagueConcrete
Learn ReactBuild a page that lists, filters and edits tasks from a REST API
Learn GoWrite an HTTP service with two endpoints, tests and a Dockerfile
Learn KubernetesDeploy one existing app with a Deployment, Service and health checks

Do

  • Write your goal as something you will build or ship
  • Set a time box and review at the end

Avoid

  • Measuring progress by videos watched or chapters read