Teach Yourself programming in 10 years

Source: Internet
Author: User

Teach Yourself programming in ten years

The original text here (http://www.norvig.com/21-days.html), the translation is incomplete.

Why is everyone so anxious?

Walking in the bookstore, you will see "Learn Java in 7 days" leaning against a long row of books that say you want to learn VB, windows, Internet... and so on in a few days or hours.

I searched on Amazon.com and found 1992 books whose titles match "pubdate: After 248 and title: days and (Title: Learn or title: Teach Yourself, the first 78 books were computer books (79th in the 30-day study of Bengali). I used "hours" instead of "days" and then searched for 253 books. The first 77 were computer books (78th were books about learning grammar and voice within 24 hours). in the first 200 books, 96% were computer books.

I have come to the conclusion that: 1. People are eager to learn computers. 2. Computers are easier to learn than other things. No book is about how many days I learned Beethoven's music, quantum physics, and even how I learned to raise a dog.

Let's analyze the title of "Learn Pascal in 3 days:

"Learning": You don't have time to write a decent one in three days.ProgramAnd have no time to work with an experienced programmer and understand how to work in a real Pascal development environment ......

"Pascal": You may be able to understand Pascal's syntax in three days (if you used to use another language), but you cannot learn how to use it. In short, if you are a basic programmer, you will write Pascal in the basic style.CodeBut cannot understand why Pascal's syntax is designed in that way ......

"Within 3 days": Unfortunately, 3 days is not enough.

Learn programming within 10 years

The learning experiences of various scholars have told us that it takes 10 years to become an expert in most fields, such as playing chess, music, painting, playing piano, swimming, tennis, psychology, geology, and so on. This shows that there is no shortcut. Even when he was 4 years old, he had already demonstrated his talent, but he did not write world-class music until 13 years later. The beatlets appeared to have suddenly appeared in 1964, but in fact they started performing in 1957 and formed a band earlier. Their first shocking album "sgt. pepers was released only in 1967. Samuel Johnson believes that 10 years may not be enough. "the remarkable achievements in any field can only be achieved through a lifetime of effort. Don't think about it at a lower cost ." Chaucer lamented, "There are so many things to learn in this short life ."

The following are my suggestions on programming success:

* You are interested in programming and think it is interesting to ensure that you will be interested in programming in 10 years.

* Communicating with other programmers and reading other programs are much more important than reading and training.

* Write a program. The best way to learn is to learn while learning.

* If you want to, spend four years in college (or longer in research ). This will give you a job that requires a degree and give you a deeper understanding of this field. But if you don't like school, you can also get the same experience at work. In any case, only book knowledge is not enough. Eric Raymond said, "unlike learning paint and paint skills, computer science education cannot make anyone a professional programmer .". One of the best programmers I have hired only has a secondary school degree, but he has written many top-notch software, owns his own newsgroups, and has a much higher stake than I do.

* When working with other programmers on projects, they can only become the best programmers in the project process. If you are the best programmer, try to lead a project and use your foresight to inspire others. If you are a poor programmer, you can learn how other Daniel is doing and do what they don't like (because they ask you to do it for them ).

* Take over a project after another programmer, because you need to understand the program written by others. Let's see how you understand and modify the code when other programmers are absent. Consider how to design your program so that the programmer who receives your hand can better understand your code.

* Learn at least 6 computer languages. Including a language that supports class abstractions (such as Java and C ++), a language that supports functional abstraction (such as LISP and ML ), A language that supports syntactic pull action (such as LISP) and a language that supports declarative specifications (such as PROLOG and C ++ templates ), A coroutines-supported language (such as icon and schema) and a parallelism-supported language (such as sisal ).

* Remember that "Computer Science" contains the word "computer. Understand how long it takes for your computer to execute an instruction, and how long it takes to obtain a word from the memory (in the case of cache hit and dead ), how long does it take to read a continuous word from a disk? How long does it take to search for a new location on the disk...

* Participate in the formulation of a language standard. It can be an ansi c ++ committee, or several encoding styles of people around you. Either way, you can understand what others like in the language, how much they like, and why they like it.

Books are not enough to achieve the above. Before my first child was born, I read almost all the books in the "how to" series, but I still felt like a cainiao. After my second child was born, have I read these books again? No, I do not. I think my personal experience is much more useful and reliable than what experts wrote in books.

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.