Six difficult steps to become an ultimate programmer

Source: Internet
Author: User
Translated by Become A Good Programmer In Six Really Hard Steps (http://www.gamedev.net/blog/355/entry-2250592-become-a-good-programmer-in-six-really-hard-steps) Step 1. Don't complain. Prepare for a long journey, or let's watch the birds. 
For those who really want to become a good programmer and want to become experts and ultimate figures, if it is really worth doing it, then it's nothing to invest ten years in it, right? (Peter Norvig's It
Takes ten years to learn to be a programmer ). The first step is to swallow the bullet. Accepting this process will take more than ten years, but will be the pursuit of life. Do it only because you want to do it. If a person is reluctant to do something, he will not become an expert.  The first step is to swallow the bullet. Accepting this process will take more than ten years, but will be the pursuit of life. Do it only because you want to do it. If a person is reluctant to do something, he will not become an expert.

Step 2 write a lot of code        Write a lot of code at the same time. Not necessarily good code. The code you write is not good code for a long time. Good code and good taste require a lot of practical training. If you are interested in new tools, new algorithms, new problems, or problems, write code practices as much as possible and try to use them.
  The learning process never stops. If you study with the best possible means in every day and get the maximum "Mileage" you can, you will go far. If you do not learn any interesting things one day, one week, or one month, you will fail. Every day, there are enough cool and interesting things for you to learn. Even if you have been studying for 15 years, it is more difficult to find them, but it is still possible to find them. No one can master all the knowledge in the programming world, so if you think there is nothing to learn, you can find a new project and write more code.
  When you do these things, note that you need to look for intermediate patterns, such as those that can automatically execute useful things, or you write a lot of code that can be separated from the shared library, or from other centralized locations. Find simple programming languages for specific tasks. Find out the programming languages that are not good at the same job and think about why some languages are more productive than others.
  But the most important thing is to write a lot of code. But remember, if what you do is no longer interesting, there is no need to do it. If you cannot enjoy the process during this period.

Step 3 read more code  When you have accumulated some projects, you can start to read other people's code. At the beginning, it was very difficult to do so. They have done a lot of things you have never done, or used a style you are not used to, or even a programming language you have never learned. If you find it interesting, read the code as much as possible. Do not worry about in-depth analysis of the code of any given project, at least at the beginning.
  Reading New Code shows you new ways of thinking, which is conducive to expanding your thinking. Extended thinking is important to keep improving. It helps you ensure that you can continuously discover new things to learn as you move forward.
  Be sure to communicate with other programmers. Ask them how and why they do specific things, whether they have taken a different angle to do things, and whether they have suggestions for their own code. Be polite, because senior programmers are very busy. Respect will take you far away. This is a closely-linked industry, and its reputation is very important.

Step 4. Learn Many programming languages. Become an expert in some cases  You don't actually have a lot of surplus time, at least not enough to learn many languages at the same time, unless you're lucky. So you can learn a lot of programming languages at a shortest level, enough to understand what makes them popular, what makes them good at the fields it is commonly used, and what their defects are. Expansion is important. Do not be confined to one type of language, such as imperative language or OO language. Expand to learn some functional or declarative languages.
  A dialect used to learn Lisp. For your daily coding, you will not use it. But learning and practicing it will make you think better. You will have a deeper understanding of the charm of a simple recursive system. Keep learning it and practice it until you can't help but call it out. Before that, you would think it was a strange syntax and a poor usage. In your remaining career, it will become the most striking and elegant concept of human design.
  Then, I learned a pure functional language. I recommend Haskell. It forces you to use function thinking purely by using other functional languages, including Lisp dialects. When you understand the purpose of designing monads, or other "aha" moments, you will enter a higher level of thinking and elegant system design capabilities.
  Finally, learn a declarative language. SQL statement, although relatively weak. Prolog is often recommended. There are also XAML, XSLT, and XQuery. Declarative language is what you tell a computer what you want it to do and how it will do it, while imperative language is the opposite, you tell the computer how to do one thing and want it to do what you want correctly. In functional languages, you describe how to convert data domain types.

Step 5 Create a Language  It does not need to be complex, advanced, or even elegant. It doesn't even need to be a native idea. I often recommend writing a Lisp interpreter (if it is better to use a dialect of Lisp ). This is a good way to learn basic knowledge. In fact, you can have a good sense of the foundation of computer programming design: lexical analysis, syntax analysis, compilation, interpretation, virtual machines, there are also basic design choices that influence the degree of practicality of a language in various fields.
  You will get the following three items in the process:
  1) You will have a deeper understanding of how the tool you selected works, so that you can write more efficient code.
  2) You will begin to realize the reasons for the design decisions behind mainstream languages and tools. This will make you more effective in choosing the tool you want to use.
  3) you will see some undiscovered possibilities that still exist in tools and languages, so that you can broaden your horizons and discover new interesting and cool things that can be learned and tested.
Step 6 learn things that others have never learned  This is the most difficult and final step. Another decade. Keep yourself interested and do interesting things and leave things that you will not be able to enjoy.

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.