Author: Peter Norvig translation: Guo Xiaogang (foosleeper@163.net) Last Revision Date: 2004-3-19 This Chinese translation was Peter Norvig's license.
Why do everyone are in a hurry? Entering any bookstore, you will see the "TEACH YOURSELF JAVA IN 7 Days" (7 days Java no post-Tong) is a long-awaited similar book, they want to teach you Visual Basic, Windows, Internet Wait, 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 the dog. 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, not deep understanding. As far as Alexander Pope (Translation: 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 much 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 Pascal's true advantages (and shortcomings). Where is the key? Alan Perlis (Translation: ACM First Chair, Tu Won Prize Winner, 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 don't have to learn a pestler (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 does not have a study of some researchers (Hayes, Bloom) show that in many fields, it takes approximately 10 years to cultivate professional skills, including chess, composing, painting, piano, swimming, tennis, and Research on Neurological and Topological Studies. It doesn't seem to have a real shortcut: even Mozart, he revealed the music genius at the age of 4, and still used more than 13 years before he wrote the world. Look at another music type representative ?? Beatles, they seem to be suddenly taken in the 1964 ED Sullivan program. However, in fact, they began to perform from 1957, even if they have shown great appeal very early, they have achieved "SGT. Peppers" to be released in 1967. Samuel Johnson (translation: British poet) believes that 10 years is still not enough: "Excellence in any field can only be obtained through a lifetime; a little low price will not change." (Excellent in Any Department Can Be attained ONLY by the labor of a lifetime; it is not to be purchased at a lesser price.) Joe (translation: 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.) Below is the prescription that I have successfully programmed this line: interested in programming, because of fun and programming. Determine can always stay enough fun, so you can put it in it in 10 years. 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 individuals in a particular field is not automatically obtained as the result of long-term experience, but even very experienced individuals can improve their performance levels through deliberate efforts." (P. 366), and "The most effective learning requires a specific individual to formulate appropriate difficult tasks, meaningful feedback, and the chance of repeating and correcting errors." (P. 20-21) "COG NITITION IN PractICE: MIND , Mathematics, And Culture In Everyday Life (Cognition in practice: the culture of mind, mathematics, and daily life) is an interesting reference book about this point of view. If you are willing, spend 4 years in college (or spend a few years to study graduate students). This allows you to get some work. It can make you more in-depth understanding of this area, but if you don't like to enter the school, you can also get similar experience in your work. In any case, it is not enough to learn from the book. "Computer science education will not make anyone become a programmer, just like researching brush and pigment will not let anyone become a painter", Eric raymond, "The New Hacker's Dictionary" (new hack dictionary) author is .
One of the best programmers I have hired have only high school education; but he created many great software, and even discussed him himself, and the stock option made him reach the degree of richness I can't enter. Refers to the author of Jamie Zawinski, Xemacs, and Netscape Navigator. 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 the project and inspire others through your cave. When you are the worst, you learn what your masters are doing, and what they don't like to do (because they let you do those things). Each other programmer completes the project. Understand the procedures written by others. Look at what is needed and modified when there is no initial programmer presents. 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 language (such as a Class Abstract), a language (such as LISP or ML), a Functional Abstract, a language that supports syntactic abstract (SyntActic Abstract) ( Such as LISP), a language that supports Declarativ E Specification (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 executes a directive, take a word from memory (including cache hgyet summation), how long it takes from disk to read continuous data, positioning to disk How long is the new location. (The answer is here.) Attempts to participate in a language standardization work. It can be an ANSI C committee, or it is also a decision to use 2 space indentation or 4 in the code style of your team. No matter which kind, you can learn what people like in this language, they like, and even if they can have this feeling. 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 I am a novice. After 30 months, when I was born in the second child, did I repay those books? Do not. On the contrary, I rely on my own experience, and the result is more useful to live more than thousands of pages written in the specialist. 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 before.