Why Learning Programming Takes Ten Years, Not Days: A Reality Check
The article argues that claims of mastering programming in a few days are misleading, presents research showing a decade is typically needed to achieve expertise, and offers practical advice on how to become a competent programmer through sustained practice, collaboration, and thoughtful language selection.
Why Are People in Such a Hurry?
Visiting any bookstore reveals rows of titles promising to teach Java, Windows, or Visual Basic in a week or even a few days. An Amazon search for books published after 1992 with the words "day" and "learn" returned 268 results, 96% of which were computer books. Replacing "day" with "hour" produced a similar pattern, showing that the market is saturated with ultra‑fast learning promises for programming.
What Does "Learn Pascal in Three Days" Actually Mean?
In three days you can barely read the syntax of Pascal, perhaps if you already know a similar language, but you cannot understand how to apply the language effectively, write meaningful programs, or learn from success and failure. The time is insufficient for deep comprehension; you only achieve superficial familiarity, which Alexander Pope warned is dangerous.
Ten Years to Master Programming
Research by Hayes and Bloom shows that achieving professional expertise in any domain—chess, music composition, painting, swimming, tennis, neuro‑psychology, or topology—generally requires about ten years of deliberate practice. Even prodigies like Mozart needed more than thirteen years to produce world‑class work.
Additional examples, such as the Beatles and Samuel Johnson, illustrate that sustained effort over many years is essential for lasting success.
Practical Advice for Becoming a Good Programmer
Develop genuine interest and enjoy programming for its own sake; this motivates a decade‑long commitment.
Interact with other programmers and read their code; peer learning outweighs any book or formal training.
Write code constantly; learning by doing is the most effective method.
If you wish, pursue a four‑year degree (or graduate studies) to meet credential requirements, but remember that practical experience is equally vital.
Join projects, sometimes as the best programmer, sometimes as the weakest, to test leadership and learn from experts.
Take over existing projects, understand others' code, and design for maintainability.
Master at least six programming languages covering class abstraction (e.g., Java or C++), functional abstraction (e.g., Lisp or ML), syntactic abstraction, declarative programming (e.g., Prolog or C++ templates), coroutines (e.g., Scheme), and parallelism (e.g., Sisal).
Remember that “computer science” includes the computer itself; understand hardware performance characteristics.
Participate in language standardization efforts to appreciate design choices and community preferences.
Hardware Performance Reference (2001, 1 GHz PC)
Execute a single instruction
1 ns
Load a word from L1 cache
2 ns
Load a word from main memory
10 ns
Load a contiguous word from disk
200 ns
Disk seek and word load
8 ms
Appendix I: Choosing a Programming Language
When asked which language to start with, there is no single answer. Consider the following criteria:
Use a language that your friends already use; community support eases learning.
Prefer simplicity; languages like C++ and Java target experienced large‑team developers, while beginners benefit from easier languages.
Adopt an interactive language that encourages hands‑on practice.
Based on these standards, Python or Scheme are recommended for first‑time programmers; younger learners might enjoy Alice or Squeak.
Appendix II: Books and Other Resources
Scheme : "Structure and Interpretation of Computer Programs" (Abelson & Sussman) – a classic CS introduction.
"How to Design Programs" (Felleisen et al.) – excellent for functional language design.
Python : "Python Programming: An Introduction to Computer Science" (Zelle).
Python tutorials are available on python.org.
Oz : "Concepts, Techniques, and Models of Computer Programming" (Van Roy & Haridi) – a modern take on the classic.
References:
Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.
Brooks, Fred, "No Silver Bullets", IEEE Computer, 20(4), 1987.
Hayes, John R., Complete Problem Solver, Lawrence Erlbaum, 1989.
Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.
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.
