Peter Norvig: Ten Years of Learning to program

Source: Internet
Author: User

Why do they want to crash?

Wander around the bookstore, and you'll see books like "7 Days of self-learning Java," and so on n days or even n hours to learn visual Basic, Windows, and the Internet. I use the Amazon website search function, the publication year election 1992, the title key word is: "Day", "self-study", "Teaches You", found 248 results, the first 78 is the Computer class book, the 79th one is "30 days learn Bengali". I use "Days" for "hours", the results are more amazing, there are up to 253 books, the first 77 is computer books, the 78th is the 24-hour self-taught grammar sentence. Of the top 200, 96% are computer books.

The conclusion is: either people are eager to learn the computer, or the computer is easier to learn than other things. No book is about a few days of studying Beethoven or quantum physics, or even a dog dress. Ferresen (Felleisen), who agrees with the trend in his book, How to design the program, says: "The bad design is simple, and the idiot learns in 21 days, even if they're stupid." ”

Let's take a look at what the title of the 3rd learning C + + means:

◇ Study:
Within three days you may not have time to write meaningful programs or accumulate experience from them. You can't have time to work with a professional programmer to understand the situation in C + + environments. In short, you don't have enough time to learn a lot. So this book can only speak of superficial knowledge. As Alexander Pope Alexander Pope said, smattering is dangerous.

◇c++:
Within three days you may learn the syntax of C + + (if you already know other languages), but you will not use it yet. For example, if you are a basic programmer, you might write a basic-style C + + program without understanding the true benefits of C + +. What's the point? Allen Perris (Alan Perlis) once said: "A language that does not affect your programming point of view is not enough to learn." "It's possible that you've learned a little C + + (or something like JavaScript, Flex, etc.) because you need to interface with a ready-made tool to complete the task at hand." In this case, you are not learning how to program, just learning how to accomplish the task.

◇ 3rd:
Unfortunately, this is far from enough, and the next section will be detailed.

How to Master programming in ten years

Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) concluded that it would take 10 years to reach a career level in many areas, such as chess, composer, Telegraph Operations, painting, piano, swimming, tennis, and neuropsychological and topological studies. The key is to practice carefully, just repeating over and over is not enough, you have to challenge exactly what you can limit, try and think about your performance, and self-correct. Cycle. There's no shortcut! 4-year-old music genius Mozart took 13 years to create world-class music. In addition, the Beatles appear to have been Ed Sullivan in the 1964 Sullivan show, but they have been performing at Liverpool and Hamburg bars since 1957, and after extensive attention, the first heavyweight, "Sergeant Cooper" (SGT). Peppers) was released in 1967. Malcolm Gladwell (Malcolm Gladwell) describes a study of students at the Berlin Conservatory of Music, divided into top, medium and less than three categories, and asked about their practice:
of all the three groups, the age of the piano is about the same, about five years old. In the first few years, everyone practiced the same amount, two or three hours a week. Since the age of eight, substantial changes have been made. Those elite students began to practice more than others: Nine years old six hours a week, 12 years of age eight hours a week, 14 years of age, 16 hours a week, until 20 years of age more than 30 hours a week. As of the age of 20, in their careers there has been a total of 10,000 hours of practicing piano. The only part of the students who are able to add up is 8,000 hours, and the future music teacher has 4,000 hours.

So, more precisely, 10,000 hours, not 10 years, is a magical number. Samuel Johnson (Samuel Johnson, 1709-1784) thinks it will take longer: "Excellence is the pursuit of life, not others". Chaucer (Chaucer, 1340-1400) complained that "the LYF so short, the craft so long to Lerne." (Life is limited, learning is boundless). Hippocrates (Hippocrates, C. 400BC) was known by the World: "Ars Longa, Vita brevis" (Latin, meaning "art endless, Life is"), the longer version is "Ars Longa, Vita brevis, Occasio praeceps, Experimentum periculosum, Iudicium difficile ", translated into English are" life was short, (the) craft long, opportunity flee Ting, experiment treacherous, judgment difficult. "(Life and career, art endless, opportunity fleeting, practice misleading, decision is not easy).

The Secret of my programming success is:

◇ first of all interested in programming, you can get fun from programming. Be sure to make it interesting enough, because you have to keep your interest up for 10 years.

◇ communicate with other programmers and read other people's code-this is more important than reading any book or attending a training session.

◇ Practice. The best learning is practice. As the saying goes: "The highest level of programming must be achieved through full practice, and individual ability through unremitting efforts to achieve significant improvement." "(p. 366)" The most efficient learning requires clear objectives, appropriate difficulty, knowledge feedback, and allows for repetition or correction of errors. (see page 20-21) "Practice cognition: Daily Thinking, Mathematics and culture" (cognition in Practice:mind, mathematics, and culture in everyday life) is a reference in this regard.

If you would like to, take four years to study the university course (or add to the Graduate school). This will give you some job opportunities and give you deep insights into the field. But if you don't like school studies, you can also get similar experiences at work. In any case, it is far from enough to rely on books alone. "Learning computer science doesn't make you a programming expert, as learning painting and color theory won't make you a painter." This is Eric Raymond (Eric Raymond), who is the author of the New Hacker dictionary (Hacker's Dictionary). The best programmer I've ever hired, only a high school diploma. But he has developed a lot of great software, has his own newsgroups, and lets him buy his own club through the company's share-making money.

◇ participate in the project with other programmers. Be the best programmer in some projects and be the worst programmer in some other projects. As a leader, you test your ability to lead a project and inspire others with your vision, and if you're at the bottom of the project team, learn what other cows are doing and what they don't like (see what they do for you).

◇ continue the project of others. To understand the program written by the previous programmer. Learn how to understand and solve problems that were not previously considered by the programmer. Think about how your program is designed to make it easier for later programmers to maintain.

◇ Learn at least 6 programming languages. This includes a support class abstraction (Java and C + +), a support function abstraction (such as lisp or ML), a support for semantic abstraction (Lisp), a support statement specification (such as a Prolog or C + + template), and a support association (icon or scheme), Another one that supports concurrency (Sisal).

◇ Remember, in "Computer science" there is the word "computers". Understand the time it takes for your computer to execute your code. For example: Take a word from memory (consider a cache miss scenario), read from disk continuously, or locate it on disk.

◇ Participate in language standardization work. This may be about the ANSI C + + committee, or it may be decided that your coding style is two-pane indent or four-cell indentation. In any case, you need to know how much other people like the language, and sometimes think about why they love it.

◇ know when you should get away from the standardization of language

All of these are difficult to achieve through the study of books. When my first child was born, I read all the "How-to" books, but still had no clue about the baby. 30 months later, when my second child was born, do I have to brush up on those books? Absolutely not! On the contrary, I can fully refer to my personal experience and the results are quite effective. This makes me more convinced that my experience is more than the thousands of pages written by experts.

Frede Brooks (Fred Brooks) gave three tips for finding top designers in the "No Silver Bullet" (No silvery Bullet):
◇ Identify top designers early and systematically.
◇ assign a person as a mentor to his career plan.
◇ give the opportunity for the growing designers to sharpen each other.

It is assumed that some people already have the potential to become great designers, and all you need is to induce them. Allen Perris (Alan Perlis) sharply: "If everyone can learn to carve, then you have to teach Michelangelo how not to do the carving." The same is true for great programmers. ”

So, simply buy a Java book, you may find something useful, but it will never make you an expert in 24 hours or even 24 days or 24 months.

Peter Norvig: Ten Years of Learning to program

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.