By Peter NorviG translated by Hector

This article has been translated by many people, including many gods. Firstly, we think this article is really good and worth repeating. Secondly, we want to give ourselves some warning, because the road of technology is very long, so we should not be in a hurry.

Why is everyone in such a rush?

Why is everyone in such a hurry?

Walk into a bookstore and you’ll find books like “Learn Java in 24 Hours,” alongside stacks of books like “Learn C, SQL, Ruby and algorithms in a matter of days and hours.”

If you are using advanced search on Amazon, use the following keywords to search

title: teach, yourself, hours, since: 2000

512 books will be returned. Nine of the top 10 books are programming books (the only exception is a bookkeeping book). Replace the keyword “teach yourself” with “learn”, or replace “hours” with “days”, and you get much the same results.

Obviously, people like to make big leaps when they learn to program, or think that programming is a piece of cake compared to other things. “It’s not hard to write bad programs,” Says Felleisen in his How to Design Program. Fools can learn in 21 days, even if they are fools.” The hilarious website Abtruse Goose makes the same point in this cartoon.

Let’s take a look at some of these clickbait titles like 24 hours C++ self-study:

  • Teach yourself: In 24 hours, you don’t have time to write meaningful programs and learn from success or failure. In 24 hours, you won’t have time to work with an experienced programmer to understand the real world of programming in C++. Simply put, you can’t learn anything in too little time. Therefore, with this kind of dry title of the crash book, just let you have a quick look, not in-depth understanding. Alexander Pope, an 18th-century English poet, said: A little learning is a dangerous thing.

    Here we’ve seen some half-informed translations of Alexander Pope as Alexander the Pope, which is not correct, and for more details, see the passage from the Da Vinci Code. Alexander Pope presided over Newton’s funeral and wrote one of his most famous epitaphs: “Nature and its laws were lost in darkness; God said, let Newton go! And there was light.” So a little knowledge is the most dangerous thing. smile

  • C++: if you have some programming background, you can learn some C++ syntax in 24 hours, but that’s about it. If you were a Basic programmer before, you could write programs with C++ syntax but Basic style. Of course, you won’t learn the best or worst of the C++ language in 24 hours.

    So Alan Perlis once said, “A language that doesn’t affect the way you think about programming is not worth learning.”

    Alan Perlis is the winner of the first Turing Award.

    What? What is the Turing Award? You could say it’s the Nobel of computing.

    A more likely scenario is that, at work, you have to learn a small part of C++ (or JavaScript, Processing, or whatever) to call some old interface to accomplish a particular task. It’s not learning how to program, it’s learning how to get things done.

  • 24 hours: Unfortunately, 24 hours is too little, for reasons explained in the next section.

Teach Yourself Programming in Ten Years

Ten years of Programming

Studies show that it takes about 10 years to become an expert in any field, including playing chess, composing music, sending messages, playing the piano, swimming, playing tennis, studying neuropsychology and topology.

Is the key to targeted training, that is to say, is not mechanically, over and over again to practice, but to constantly challenge themselves, trying to transcend their current level, through continuous attempts to challenge, and in the process of trying and trying after the performance of its own analysis and summary, learn and correct all kinds of mistakes before. Success is achieved by repeating the process. There were no shortcuts, and even for Mozart, who became a musical genius at the age of four, it took 13 years to write truly world-class work. In popular music, The Beatles seemed to hit The big time in 1964 with a series of hit singles and appearances on The Ed Sullivan Show, but what you might not know is, They played small shows in Liverpool and Hamburg as early as 1957, and had numerous informal shows before that. The Beatles’ major hit, “Sgt. Peppers,” wasn’t released until 1967.

These paragraphs illustrate the author’s point of view with examples.

Malcolm Gladwell, though he said 10,000 hours rather than 10 years, has the same theory. French realist photographer Henri Cartier-Bresson also said that your first 10,000 photos are your worst. (of course, this master of photography didn’t realize that the emergence of digital camera, a lot of people can in a week can take 10000 pictures) it takes a lifetime to complete the real masters, the British writer, literary critic and poet Samuel Johnson said: “the outstanding success in any field with a lifetime of effort, don’t delusion can opportunistic.” The English poet Chaucer also once said, “Life is limited, and knowledge is limited.” Hippocrates said something similar in 400 BC, when he saw no end to art, but life. There is a longer version of his quote, which translates as: “Life has an end, art is endless, opportunity is fleeting, and practice becomes obsessed with indecision.”

Of course, there is no definitive answer to how long it will take. After all, it is not appropriate to assume that mastering all skills (such as programming, chess, checkers and music) takes the same amount of time, and different people will use different amounts of time. Professor K.Anders Ericsson says, “In most fields, the time it takes even the most talented individuals to reach the highest level is significant. The 10,000 hours number just makes you realize that even the most talented individuals people talk about are going to need 10 to 20 hours a week, year in and year out, to reach the highest levels.”

So You Want to be a Programmer

So you want to be a programmer

Here’s my recipe for programming success:

This is my secret to programming success

Write for fun. Make sure you enjoy it all the time so that you can spend 10 years without feeling bored.

Hands-on programming. The best way to learn is by doing. In more technical words, “in a given field, the individual’s capacity is not automatically by extending the experience achieved, but even highly experienced people can also through conscious efforts to improve their ability” and “the most effective appropriate difficulty of learning needs vary from person to person, clear goal task, a wealth of information feedback, And repeated opportunities and bug fixes.” Quote from Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life.

Talk to other programmers, read other people’s code. This is more important than reading a book or attending a training course.

Spend four years in college (or grad school) if you want. This can lead to some job opportunities and give you more insight into the field. But if you start school with a headache, you can gain the same experience by going straight to work. No matter what the case, reading books is definitely not a good idea. Computer science won’t make you an expert programmer any more than learning brushes and paints will make you a painter. That’s Eric Raymond, author of The New Hacker’s Dictionary. One of the best programmers I ever hired had only a high school diploma, made a lot of great games, had his own newsgroup, and bought his own nightclub through stock options.

Work on projects with other programmers. You could be the best programmer on your project, or you could be just average. When you are the best, try to lead projects and inspire others with your vision. When you’re a general developer, learn what people do and what they don’t like to do (because they tell you to).

Be the best programmer on some projects; Be the worst programmer on other projects. Feeling is not the author’s meaning, if there is wrong please correct.

Take over and push other people’s projects. Understand other people’s code. If there are problems that others haven’t considered, you can understand and fix them. Think about and design your software so that it can be easily maintained by others.

Learn at least 6 programming languages. These languages include one that supports abstract classes (such as Java or C++), one that supports functions (Lisp, ML, or Haskell), one that supports semantic abstraction (Lisp), one that supports declarative specifications (Prolog or C++ templates), and one that supports concurrency (Clojure or Go).

You can see the half dozen of them.

Remember, “computer science” includes the word “computer”. How long does it take to understand how long it takes to execute an instruction, how long it takes to fetch a word from memory (with cache hits in mind), how long it takes to read consecutive bytes from the hard disk, how long it takes to address the location on the hard disk?

Participate in the standardization of language. This may be about the ANSI C++ committee, or the indentation style may be two – or four-space indentation. Anyway, you can learn a lot about what other people like about language, how much they like it, and maybe even a little bit about why they think that way?

The sooner you know when you can disengage from standardizing languages, the better.

It is difficult to learn much from books. When my first child was born, I read all the “How to” books, but I didn’t have a clue. Will I revisit those books 30 months from now, when my second child is born? Of course not! I’m an old driver, and I rely entirely on my own experience, which turns out to be better than thousands of pages of books written by experts.

Fred Brooks, in his book No Silver Bullet, offers three pieces of advice:

  • Identify top designers early and systematically
  • Each person is assigned a mentor for career planning
  • Give growing designers the opportunity to communicate and learn from each other

The plan assumes that someone already has the necessary skills to be a great designer, and then guides them correctly. “Everyone can be taught to sculpt,” says Alan Perlis. “Ordinary people learn to sculpt in a conventional way and learn how to do it, and people like Michelangelo wonder what’s wrong with it. The same is true for great programmers.”

If everyone could learn to sculpt, Michelangelo would have to be taught what not to do. The same is true for great programmers.” But personally, I don’t think the meaning of the original text is clear.

Perlis argues that great people have an inherent quality that is often more important than training. But where do these traits come from? Born with? Or is it through hard work?

As Auguste Gusteau, the visionary chef in the animated film Ratatouille, said: “Anyone can cook, but only those who are not afraid can become chefs!” I think of the spirit of “devoting most of your life to targeted practice” as a spirit of voluntary dedication! But perhaps “fearlessness” is the essence of this spirit. Or, as Anton Ego, the caustic food critic who takes on Gusteau in ratatouille, puts it, “Not everyone can be a great artist, but a great artist can come from anywhere.”

So go ahead and buy a Java/Ruby/Javascript/PHP book. You might learn something useful from it. But as a programmer, it’s impossible to change your life in 21 days or 24 hours, or improve your actual programming skills. Have you ever tried to improve yourself for 24 months in a row? Hehe, if you do, well, then you’re on your way…


Original link: norvig.com/21-days.htm…

mp.weixin.qq.com/s?__biz=MzI…


Welcome to pay attention to my public number, thank you!