Why Learning Programming in Days Is a Myth—and How to Master It Over 10 Years
The essay debunks quick‑learning programming books, explains that true expertise requires years of practice, collaboration, and diverse language experience, and offers a concrete ten‑year roadmap for becoming a proficient software developer.
Why Is Everyone in Such a Hurry?
Walking into any bookstore you see titles like “Learn Java in 7 Days” or similar promises to master Visual Basic, Windows, the Internet, etc., in a few days or hours. A search on Amazon for titles containing “days” and “learn” or “teach yourself” returned 248 results, 96% of which were computer‑related books. Replacing “days” with “hours” yields a similar pattern. The conclusion is that either everyone is rushing to learn computing, or computing is perceived as easier than any other subject; there are no books promising to learn classical music, quantum physics, or dog training in a few days.
Learning Programming Over Ten Years
Research shows that reaching expert level in any domain—chess, composition, painting, piano, swimming, tennis, atomic physics, topology—generally requires about ten years of dedicated effort. There are no real shortcuts; even prodigies like Mozart needed many years before producing world‑class work.
This is my recipe for programming success:
Find programming interesting and keep it fun so you’ll willingly invest ten years.
Interact with other programmers and read others’ code; this outweighs any book or course.
Write code. The best learning comes from practice. As noted in Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life , effective learning requires appropriate difficulty, clear goals, rich feedback, and repeated opportunities for error correction.
Spend four years or more in university (or equivalent graduate work) to gain deeper understanding; pure book‑learning is insufficient.
Work on projects with other programmers, sometimes as the best, sometimes as the worst, to develop leadership and learn from excellence.
Take over projects after other programmers, understand and modify their code, and consider maintainability for future developers.
Learn at least six programming languages covering class‑based (e.g., Java, C++), functional (e.g., Lisp, ML), syntactic (e.g., Lisp), declarative (e.g., Prolog, C++ templates), coroutine (e.g., Icon, Scheme), and parallel (e.g., Sisal) paradigms.
Remember that “computer” in computer science matters; understand hardware basics such as instruction execution time, cache behavior, and disk access.
Participate in language standardization work, even at the level of coding‑style decisions, to see how others think about the language.
Find a good reason to step away from standardization efforts when appropriate.
Fred Brooks, in his essay “No Silver Bullet,” outlines a three‑step plan for finding outstanding software designers:
Identify top designers early and systematically.
Assign a professional mentor to guide their technical growth and career planning.
Provide opportunities for peer interaction and learning.
Alan Perlis summed it up succinctly: anyone can be taught to sculpt; for Michelangelo it’s about telling him what not to do, and the same principle applies to great programmers.
So buying that “Java in Days” book may teach you a little, but as a programmer you will not transform your life or skill level in days, hours, or even months.
Original link: http://norvig.com/21-days.html
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.
Ops Development Stories
Maintained by a like‑minded team, covering both operations and development. Topics span Linux ops, DevOps toolchain, Kubernetes containerization, monitoring, log collection, network security, and Python or Go development. Team members: Qiao Ke, wanger, Dong Ge, Su Xin, Hua Zai, Zheng Ge, Teacher Xia.
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.
