Why Mastering Programming Takes a Decade, Not 24 Hours
The article argues that learning to program well requires years of deliberate practice, not quick‑fix books, and offers a roadmap of sustained study, hands‑on coding, community interaction, and mastery of multiple languages to become a true programmer.
The author re‑translates a popular essay because many previous versions omitted sentences; he believes the piece is worth sharing with anyone asking how to learn programming.
Why is everyone eager for a quick fix? Bookstores are full of titles like “Learn Java in 24 Hours” or “Master C++ in a Day.” An Amazon search for “teach yourself hours” returns hundreds of programming books, showing a widespread belief that programming can be learned instantly. As Felleisen notes, even a fool can write a terrible program in three weeks, highlighting the myth of rapid mastery.
The “24‑hour” claim is broken down:
Self‑study : In a day you cannot write meaningful programs, get feedback, or understand real‑world contexts; you only skim the surface.
C++ : In 24 hours you may learn some syntax, but you won’t grasp the language’s depth or idioms; you merely copy familiar patterns.
24 hours : The time is simply insufficient for genuine learning.
Ten years to become an expert – research shows that achieving expertise in any field (chess, music, sports, programming) typically requires about ten years of focused practice. Deliberate training that slightly exceeds current ability, followed by analysis and correction, is essential. Malcolm Gladwell popularized the “10,000‑hour” rule, and K. Anders Ericsson emphasizes that even geniuses need years of sustained effort.
So you want to become a programmer – the author’s “secret” includes:
Develop genuine interest and enjoy coding so that a decade of effort feels rewarding.
Practice by building projects; learning by doing is far more effective than passive reading.
Engage with other programmers, read their code, and participate in projects to gain real‑world experience.
Consider formal education (four‑year degree or graduate study) but recognize that on‑the‑job learning can be equally valuable.
Learn at least six programming languages, covering paradigms such as object‑oriented (Java/C++), functional (Lisp/Haskell), declarative (Prolog), and concurrent (Go/Clojure).
Understand low‑level computer concepts: instruction latency, cache behavior, disk I/O, and memory hierarchy.
Participate in language standardization efforts to see how design decisions are made.
Finally, the author cites Fred Brooks’s three recommendations for nurturing top designers and stresses that greatness comes from long‑term, purposeful practice rather than shortcuts.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
