Use ten years to learn programming
Teach Yourseelf Programming in Ten Years
Why do everyone are in a hurry?
Entering any bookstore, you will see "Teach YourSelf Java In 7 Days" (7 days Java no post-Tong) is a long row can not see the end
Similar books, they want to teach you Visual Basic, Windows, Internet, etc., but only a few days or even hours. I have downloaded the following in Amazon.com: Pubdate: after 1992 and Title: days and (title: Learn Or Title: Teach Yourself) (Date of publication) (NTD Name: Day And (Title: Society Orket " Name: Normal Universities)) I got 248 search results. The previous 78 is computer books (79th is "Learn Bengali In 30 Days", 30 days to learn Bangladesh). I changed the keyword "days" to "Hours", I got a very similar result: this time 253 books, head 77 is a computer book, the 78th is "Teach YourSelf Grammar and Style in 24 Hours" (24 Hours learned Chinese law and style). In the first 200 book, 96% is computer books. Conclusion, either people are very eager to learn to learn computers, or do not know why computers are amazing and simple, easier than anything. No book is to teach people in a few days to appreciate Beethoven or quantum physics, and even how to dress up. Let's analyze the topic like "Learn Pascal in Three Day" (3 days Learn Pascal) What does it mean: Society: In 3 days, you can't write some meaningful programs in time, and fail from their failure Learn in success. You can't work with some experienced programmers, you won't know what the taste is in that environment. In short, there is not enough time to let you learn a lot. So these books talk about only the proficiency on the surface, rather than in-depth understanding. As far as Alexander Pope (British poet, writer, 1688-1744), knowing a little learning is a dangerous thing
Pascal: You can learn the syntax of Pascal in 3 days (if you have a similar language), but you can't learn how to use these syntax. In short, if you are, for example, a Basic programmer, you can learn to write Basic style programs with Pascal syntax, but you can't learn the true advantages (and shortcomings) of Pascal. Where is the key? Alan Perlis (ACM first chairman, Tu Lord, 1922-1990) I have said: "If a language can't affect your idea of programming, it is not worth learning." Another point is that sometimes you have to learn a pestle that Pascal (more likely to be Visual Basic and JavaScript), because you need to contact existing tools to complete specific tasks. But at this time, you are not learning how to program, you are learning how to complete the task. 3 days: Unfortunately, this is not enough, just as the following section.
10 years of programming no teacher
Some researchers (Hayes, Bloom) have shown that in many areas, it takes approximately 10 years to cultivate professional skills, including chess, composing, painting, piano, swimming, tennis, and neuropsychology and topology. the study. There seems to not have a real shortcut: even Mozart, he 4
I showed a music genius, and I still used more than 13 years before he wrote world-class music. Look at another kind of earrings, they seem to
It was suddenly taken in the Ed Sullivan program in 1964. But in fact, they started to perform since 1957, even if they have long showed huge suction
Gravitational, their first truly success --sgt. Peppers - also issued by 1967. Samuel Johnson (British poet) thinks 10 years
It is not enough: "Excellence in any field can only be obtained through a lifetime; a little low price is not changed." (Excellent in Any)
Department Can Be attained Only by the labor of a lifetime; it is not to be purchased at a lesser
叟叟 (Chaucer, British poet, 1340-1400) also complained: "Life is so short, the skill is so long." (The
LYF SO SHORT, THE CRAFT SO Long To Lerne.
Here is the prescription that I have successfully programmed this line:
Interested in programming, because of fun and programming. Determine It is always enough to stay enough to put 10 years of investment.
Talk to other programmers; read other programs. This is more important than any book or training course.
Program. The best learning is to learn from practice. In a more technical language, "the highest level of individual in a particular field is not as long-term
The results of the test are automatically obtained, but even very experienced individuals can also improve their performance levels by deliberate efforts. "(P. 366), and
And "the most effective study requires a specific individual to formulate appropriate difficult tasks, meaningful feedback, and opportunities for repeating and correcting errors." (P. 20-21
) "Cognition in Practice: Mind, Mathematics, And Culture in Everyday Life" (Cognition in Practice: Mission, Mathematics
And the culture of daily life is an interesting reference for this point of view.
If you are willing, spend 4 years in college (or spend a few years to study graduate students). This makes you get some work entry, but also let you receive this
The domain has a more in-depth understanding, but if you don't like to enter the school, (made a little sacrifice) you can also get similar experience in work. in any case
It is not enough to learn from books. "Computer science education will not let anyone become a programmer of the inner line, just as research brush and paint will not let
What is the author of the painter ", Eric Raymond," The New Hacker's Dictionary "is said. I have hired.
One of the best programmers have only high school education; but he created many great software, and even discussed him himself, but the stock period
The right to make him reach the degree of richness (the translation: refers to the author of Jamie Zawinski, Xemacs, and Netscape.
Complete the project with other programmers. Be the best programmers in some projects; in other projects is the worst one. When you are the best programmers, you have to test your ability to lead your project and encourage others through your cave. When you are the worst, what do you learn?
And what they don't like to do (because they let you help them do those things).
Each other programmer completes the project. Understand the procedures written by others. See if you understand and modify the program when there is no initial programmer.
Yes. Think of how to design your procedure can make someone else to maintain your programs.
Learn at least half of the programming language. Including a support class abstraction (Class
Abstract (such as Java or C ), a language of the Functional Abstract (such as LISP or ML), one
Door supports syntactic abstract language (such as LISP), a support of the descriptive status (Declarative Specification
Language (such as ProPog or C Modules), a language of the Corordine (such as ICON or Scheme), and a support parallel processing
(ParalleLism) language (such as SiSal).
Remember the word "computer" in the phrase "Computer Science". Understand how long your computer performs a directive, take one from memory
How long is a Word (including cache hgyetic and missed cases), how long it takes from disk to read continuous data, positioned to a new location on disk
How long will it take? (The answer is here.)
Try participating in a language standardization work. Can be an ANSI C committee, or it can be decided to use two spaces of the company's coding style.
Over 4. No matter which one, you can learn what people like in this language, they like, and even maybe a little understanding
What they will have this feel.
It has a good judgment from the language standardization work as soon as possible.
Holding these ideas, I am very suspicious to learn how much things from the book. Before I was born in my first child, I finished reading all the books of "how ...", but
Still feeling that you are a novice. After 30 months, when I was born in the second child, did I repay those books? Do not. in contrast
I rely on my own experience, and the result is more useful to be more reliable than thousands of pages written by experts. Fred brooks established three-step planning of outstanding software designers in his short text "No Silver Bullets" (no silver):
The best designer group is identified as soon as possible.
Assign a business tutor responsible for the development of potential objects, carefully helping him keep your career history.
Let the growing designers have the opportunity to influence each other, motivate each other.
This is actually assumed that some people themselves have the necessary potential to become outstanding designers; they must only guide them to advance. Alan Perlis is more concise
: "Everyone can be taught how to sculpture; and how to teach him how to teach him how to sculpt it. Outstanding programmer is the same
"So even if you buy those Java books; you are likely to find some uses. But your life, or you as a real professional technology of programmers,
Therefore, there is a real change in 24 hours and even within 24 months.
references
Bloom, Benjamin (Ed.) Developing Talent in Young People, Ballantine, 1985. Brooks, Fred, No Silver Bullets, IEEE Computer, Vol. 20, NO. 4, 1987, P. 10-19. 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.
answer
Timing of various operations, completed on a typical 1GHz PC in 2001: Perform a single instruction 1 nanosecond = (1 / 1,000,000,000) seconds from the L1 cache to take a Word 2 nanosecond from the main memory 1 Word 10 Nanoseconds take a Word 200 nanose from a continuous disk location to take a Word from the new disk location 8,000,000 nanosecond = 8 milliseconds
footnote
This article is to thank Yasushi Murakawa, Chinese translation to thank Guo Xiao Gang, Spanish literature, thank you Carlos Rueda, German translation
Thank Stefan Ram. T. CAPEY pointed out the page of "Complete Problem Solver" on Amazon, "Teach YourSelf Bengali in 21
Days "and" TEACH YOSELF Grammar and Style "are listed in" Buy this book "also bought the following books" column. I guess it
Most people who look at these two books are from me.
Peter Norvig (Copyright 2001)
-------------------------------------------------- ------------------------------
Why is Everyone in Such a Rush? Walk Into Any Bookstore, And You'll See How To Teach YourSelf Java in 7 Days Alongside Endless
Variations Offering to Teach Visual Basic, Windows, The Internet, And So On A Few Days or Hours. i
did the following power search at Amazon.com: pubdate: after 1992 and title: days and (title: learn or title: teach yourself). and got back 248 hits The first 78 were computer books (number 79 was Learn Bengali in 30 days I
Replaced "Days" with "hours" and got Remarkables: 253 more more books, with 77 computer books
Followed by Teach Yourself Grammar and Style in 24 Hours At Number 78. Out of The Top 200 Total, 96%
were computer books. The conclusion is that either people are in a big rush to learn about computers, or that computers aresomehow fabulously easier to learn than anything else. There are no books on how to learn Beethoven, or
QUANTUM Physics, or Even Dog Grooming in a few days.
Let's analyze what a title Like Learn Pascal in Three Days Could Mean:
Learn: in 3 Days you Won't have time to write several signific, and learn from your
Successes and failures with them. You Won't have time to work with an esperienced programmer and
Understand What IT IS LIKE TO LIVE INVIRONMENT. IN Short, You Won't have Time to Learn Much. so
The Can Only Be Talking About A Superficial Familiarity, Not a Deep Understanding. AS Alexander Pope
SAID, a little learning is a dangerous.
Pascal: in 3 Days you might becomleval (if you already KNEW A Similar
Language), But you COULDN'T Learn Much About How To Use the Syntax. in Short, IF you at, Say, A Basic
Programmer, You Could Learn to Write Programs in the Style of Basic Using Pascal Syntax, But you
COULDN'T Learn What Pascal Is Actually Good (AND Bad) for. So What's The Point? Alan Perlis Once SAID:
"A Language That Doesn't affect the way you think about programming, is not forth knowledge". One
Possible Point Is this Have to Learn a Tiny Bit of Pascal (Or More Likely, Something Like Visual
Basic or JavaScript) Because You NEED TO INTERFACE WITH AN EXISTING TOAL TO Accomplish a Specific Task.
But the you're not learning how to program; you're learning to accomplish That Task.
in Three Days: Unfortunately, this is not enough, as the next section shows Teach Yourself Programming in Ten YearsResearchers (Hayes, Bloom) have shown it takes about ten years to develop expertise in any of a widevariety of areas, including chess playing,. Music Composition, Painting, Piano Playing, Swimming,
Tennis, and research in neuropsychool and topology. There Appear to be no real shortcuts: Even
Mozart, Who Was a Musical Prodigy At Age 4, TOOK 13 More Years Before He Began To Produce World-Class
Music. in Another Genre, The Beatles Seemed to Burst Onto The Scene, Appearing On The Ed Sullivan Show
In 1964. But The Had Been Playing Since 1957, And While They Had Mass Appeal Early On, Their First
Great critical surcess, sgt. peppers, Was Released in 1967. Samuel Johnson Thought It Took Longer Than
Ten Years: "Excellent in Any Department Can Be attained Only by The Labor of a Lifetime; It is not to
Be Purchased at a lesser price. "Here's My Recipe for Programming Success:
Get INTERESTED IN Programming, And Do Some Because IT IS Fun. Make Sure That It Keeps Being Enough Fun
SO THAT IN TEN YEARS.
Talk to other programmers; read other programs. This is more important touring, os is more important touring
Course.
Program. The Best Kind of Learning IS Learning by Doing. To Putue More Technically, "The Maximal Level
Of Performance for Individuals in a Given Domain Is Not Attained Automatic Is A Function of
Extended Experience, But The Level of Performance Can Be IncreaSed Even by Highly Experienced
Individuals as a result of deliberate efforts to improve. "(p. 366) and" the MOST EFFECTIVE LearningRequires A Well-Defined Task with An Appropriate Difficulty Level for the Particular Individual,
Informative Feedback, And Opportunities for Repetition and Corrections of Errors. "(p. 20-21) The Book
Cognition In Practice: Mind, Mathematics, And Culture In Everyday Life IS An Interesting Reference For
This viewpoint.
IF you want, put in four years at a college (or more at a graduate school). This will Give you Access
To some jobs this required, and it will give you a real desk, of the field, but if
You don't enjoy school, you can (with some defication) GET Similar Experience on the job. in Any Case,
Book Learning Alone Won't Be Enough. "Computer Science Education Cannot Make Anybody An Expert
Programmer any more than studying brushes and features can make somebody an expert painter "Says Eric
Raymond, Author of the New Hacker's Dictionary. One of the best programes i Ever hired had only a
High School Degree; He's Producted A Lot of Great Software, Has His Own News Group, And THROUGH Stock
Options is no doubt Much Richer Than I'll Eve.
Work On Projects with Other Programmers. Be The Best Programmer ON Some Projects; Be The Worst On Some
Others. When you're the best, you get to test your attiES to Lead a project, and to inspire others
You 'Ree the masters do, and you learn what
Like to do (Because the make you do it for them).
Work On Projects After Other Programmers. Be Involved in Understanding a Program Written by SomeOne
Else. See What It Takes To Understand and Fix It When The Original Program WHINTHOW To Design Your Program WHO MAKE IT Easier for Those Who Will Maintain It after you.
Learn At Least A Half Dozen Programming Languages. Include One Language That Supports Class
Abstractnesss (Like Java Or C ), One That Supports Functional Abstract (Like Lisp Or ML), One That
Supports Syntactic Abstract (LIKE LISP), One That Supports Declarative Specifications (LIKE PROLOG
OR C Templates), One That Supports Coroutines (Like Icon or Scheme), And One That Supports
Parallelism (Like Sisal).
Remember what there is a "computer" in "computer science". Know ~ long it takes your computer to
Execute An Instruction, Fetch A Word from Memory (with and welch a cache miss), Read ConsoTive
Words from Disk, and seek to a new location on disk.
Get Involved In a Language Standardization Effort. It COULD BE The ANSI C Committee, or It Could Be
Deciding if your local coding style will have 2 Or 4 Space Indentation Levels. Either Way, You Learn
About What Other People Like In a Language, How Deeply They Feel So, And Perhaps Even a Little About
Why they feel SO.
Have The Good Sense To Get Off The Language Standardization Effort As Quickly As Possible. With all what in mind, ITS Questionable How Far You Can Get Just by Book Learning. Before My First
Child Was Born, I Read All The How To Books, And Still Felt Like a Clueless Novice. 30 Months Later,
When My Second Child Was Due, DID I Go Back to The Books for a Refresher? No. Instead, I Relied ON MY
Personal Experience, Which Turned Out To Be Far More Useful and Reassuring to Me Than THOUSANDS OF
Pages Written by Experts. Fred Brooks, in His Essay No Silver Bullets Identified A Three-Part Plan for Finding Great Software
Designers:
SystemAtical Identify Top Designers As Early As Possible.
Assign A Career Mentor to Be Responsible for the development of the proosit and carefully keep a
Career file.
Provide Opportunities for Growing Designers To Interact and Stimulated EACH OTHER.
THISSUMES THAT Some People ALREADY HAVE The Qualities Necessary for Being a Great Designer; The Job
Is to Properly COAX THEM Along. Alan Perlis Put It More Succinctly: "Everyone Can Be Taught To Sculpt:
Michelangelo Would Have Had to Be Taught How Not To. So it is with the great program ". So Go Ahead and Buy That Java Book; You'll Probably Get Some Use Out of It. But you Won't change your YOU
Life, Or Your Real Overall EXPERTISE AS A Program In 24 Hours, Days, or Even Months.
Referencesbloom, Benjamin (Ed.) Developing Talent in Young People, Ballantine, 1985.
Brooks, Fred, NO Silver Bullets, IEEE Computer, Vol. 20, NO. 4, 1987, P. 10-19.
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. http://www.norvig.com/
Peter Norvig Google 2400 Bayshore Parkway Mountain View, CA 94043 Email: Peter@norvig.com Phone: 650-623-4248 Fax: 650-618-1499 Web: Norvig.com Note to Recruiters: Please don't offer me a job. I Already Have The Best Job in The World At the Best
Company in the world. Note To Engineers, Research, Managers: See why you shouth applly to help.
Professional EMPLOYMENT (FULL-TIME)