How are excellent programmers made?

Source: Internet
Author: User
With the continuous development of software technology, more and more people are engaged in the software industry. You find that there are so many people around you, some of them are dressed in suits, some are casual, some are not smiling, some are humorous, some are knowledgeable, some are simple, and the only thing they have in common is, their business cards are printed with the word "programmer.

There are so many so-called "programmers" on the street, some of which are really good players, and others who write only a few lines of poor code. Here, I have no intention of downgrading my colleagues. I just want to use my experience to explain what kind of talents are really programmers.

How are programmers made?

Some people think that programmers who master a computer language write several lines of code and can make the code run on the computer. In fact, it will take some time to become a programmer in the software industry and be worthy of the title of programmer.

On the road to becoming a programmer, we have to go through four ups and downs. Let's mark them with four realms.

The first realm is what we mentioned above. Mastering one or more programming languages will imitate examples to implement program code and run the code in computer systems. Not a real programmer, but a craftsman who has mastered one or more tools, who can quickly imitate existing examples, to implement the software modules required by the user or the user.

Unfortunately, many "programmers" have only reached the first level. They finish their work by imitating the documents and references in their hands, the program they implement is only a replica combination of code that has already been implemented by countless predecessors. Although skilled people are famous for completing tasks quickly and efficiently, there is nothing new in their work, code is repeated day after day. Nothing can be called "Innovation.

The characteristic of the first realm is the mastery of language tools. In this realm, experts will emphasize how they are proficient in the language. Therefore, this realm can be expressed by a ".

In the second realm, what we need to learn is the skills of decomposing problems and reasoning, and learning to use logical languages to accurately express a proposition. In this realm, software workers are mastering a method for analyzing specific things, and they do not blindly imitate, instead, we start to think about one specific problem after another and try our own methods to better solve it.

At this level, "programmers" begin to focus on problem-solving ideas and mathematical skills in analysis and reasoning, the excellent of them are familiar with various algorithms and use various Propositional Reasoning to analyze and solve problems. They are also good at learning from previous examples, but often can make effective improvements based on the characteristics of the problem, and get a sense of accomplishment and new experience in the process of trying to improve. At this level, people have a deeper understanding of language tools than the first level. They are people who really know how to use the features of language tools in their hands to better solve problems. However, they do not emphasize how familiar they are with the language, nor are they keen to know how many languages they are. In their eyes, the language is just a tool, what is really important is how to analyze the problem.

The characteristics of the second realm are the analysis of specific problems. Experts in this realm are often good at analyzing reasonable and effective solutions from specific problems. Therefore, this realm is represented by "things.

In the second realm, there are people who are experienced in how to use programs to solve problems. These people are competent for coding, so we call them Coder or junior programmers.

In the third realm, what we need to learn is abstract thinking and the law behind the appearance of things. In this realm, software workers no longer analyze a specific thing, but try to understand the essence of a thing. At this level, people begin to focus on the commonality of things and gradually master the methods of generalization and summarization. "Mode" began to appear in their minds.

The "Design Pattern" is the "Thirty-six plan" in the software field, and is the true essence of thought summarized in the abstract. Software workers in the third realm begin to contact and understand the "Model", and learn to use the model and abstract thinking flexibly to solve the "certain type" problem. Compared with the appearance, they are more concerned about the nature of things. Their code is full of thoughts and profound understanding of things, and they are familiar with the characteristics and Solutions of various types of problems. Their understanding of the laws of things makes them no longer dependent on language tools. Any familiar or unfamiliar programming language can exert its utmost in their hands to solve problems perfectly.

The characteristics of the third realm are the understanding of the laws of things. In this realm, experts can quickly abstract the nature of the problem and use the most appropriate method to solve the problem. In this realm, I use the "theory" to express it.

Programmers who have reached the third realm are born designers who understand the nature of the problem and help them solve the problem with elegant and concise code. Their code is full of design ideas. They are a group of people who truly enjoy the artistic charm and sense of accomplishment of programming.

In the third realm, programmers can really get the title of Programmer. They seem to be born designers, artists, and technical experts in the eyes of outsiders who are born for Software creation.

As mentioned above, programmers in the third realm have become well-deserved expert leaders in the software field. However, is there only three levels of "programmer? The answer is no. Above these three realms, there are still --

Fourth realm

The excellent programmers in the third realm are not satisfied with the status and high salary of experts. They begin to struggle in the fourth realm. The fourth realm is the highest realm in the field of programming. To achieve this realm, you only need to master one thing. However, this thing is not an ordinary thing, but it is impossible for many people to get it after a lifetime, the most profound secret in the world.

Since ancient times, there have been such a group of monks who observe the precepts, do not eat meat, do not drink, and read Buddha throughout the day. Unlike other monks, they often sit still for decades, some even throws your body, but the pain persists.

After years of training, the martial arts of such a group of martial arts practitioners have been very strong, but they are more diligent in practice and insist on not doing anything.

There is such a group of readers who have learned more than five cars and even become famous, but they still read hard day and night, regardless of the cold or hot summer.

They are not crazy. They're just trying to find something.

Legend has it that there is a magical thing in this world. It is invisible, but everywhere. If there is nothing, it is as heavy as a mountain. If you can know such a thing, you will be able to understand all the mysteries of the world, see through all disguise, understand all the knowledge, everything in the world can be mastered!

This is not a legend, but an objective fact.

Written by: the Moon of the Ming Dynasty

Such a thing is called "Tao ".

There are mysteries in the silence, not static, but the source of the program, no name, so said: the Way of program design. If the path is too large, the operating system is too large. If the operating system is too large, the compiling program is also true. Is the harmony of the world. -- Jeffery James

The so-called Tao is the sum of all the rules of the world and the most fundamental law. As long as you can understand the Tao, you can understand everything in the world.

Programmers who have mastered the "Tao" are the true masters of program design, and can create works of all ages.

However, I do not know and cannot describe how to "enlighten the Tao", because "Dao" is not something that can be easily obtained and understood.

For programmers in the fourth realm, "thinking" is no longer very important because their understanding of the nature of the program has exceeded the problem itself. In their code, some are only natural, and the boundaries of reality and illusion have been blurred. A perfect autonomous system was born in an instant, but it seems to exist and move from the ancient time, from the simple and simple law, the essence of everything in the world is covered. Therefore, this realm is called "formation ".

Learning JavaScript should not be independent of programmers. JavaScript programmers are also real programmers, therefore, the road ahead of us is also a difficult process from "knowledge", "thing", "Understanding" to "going into the Tao", thinking like a programmer, moving towards a higher level is the right way to learn. As long as you persevere, sooner or later, JavaScript will shine in your hands.

Sorry for your code
Code is like a sword in the swordsman's hand for programmers. For experts, the length of a sword is not a deciding factor. The sharpness of a sword trick is the key to victory. The shorter the sword, the fewer flaws.

You need to know that each piece of code you write may require effort to maintain in the future. The more code you write, the more work you need to maintain in the future.

The program master said: "Although the program has only three lines, there will always be a day to maintain ." Smart programmers always use concise code to prove their talents. In general, good code is always short.

Another implication of code is "Do not write code easily ". Really good programmers always write code after careful consideration, because they know that they need to avoid the possibility of traps before actually doing so and try to avoid any flaws in their code.

It is a part of the "Tao", not only a correct chess practice, but also a truth in programming, or even a motto full of wisdom in life.

The programmer pondered for a day and wrote only three lines of code. The thousands of lines of code accumulated in one year became the soul of the entire software age. A large program with millions of lines of code will become an immortal classic because of it.

The examples in this book follow the principle of doing the most with the least code. I believe that you will gradually understand and understand the mysteries of the subsequent chapters in this book.

Learn to debug in the environment
Although masters can freely fly their thinking without relying on the environment, debugging environment can remove many obstacles for you on the road of "seeking for the Tao.

Unless you are sure that you can write the correct code again, you need the help of powerful debugging.

Some of my colleagues have been helpless in the face of small obstacles due to lack of understanding about the running environment and debugging tools. This is not good news for the project team. In the software field, you can make mistakes, but you cannot be overwhelmed by errors, or choose to escape. If your own capabilities are limited, please arm yourself with debugging tools that can help you quickly locate problems.

Chapter 1 of this book will detail the JavaScript debugging skills and debugging tools.

Be cautious with minor defects
Many people know what JavaScript can do, but turn a blind eye to its shortcomings. I believe that, as described in the previous chapter, we have already hinted at the principle that JavaScript is not omnipotent. It has many defects and must be used with caution.

When using JavaScript For floating-point computing, it is easy to cause precision problems. When using JavaScript to operate the DOM, memory leakage always exists. Some JavaScript code may behave strangely in browsers of different versions; in some cases, JavaScript performance is too slow to be tolerated ...... Even if you get rid of these defects, if you are not careful enough to use a large number of JavaScript, the code that gets out of control will easily make you deeply immersed.

Some of my colleagues and I have experienced such profound pain points. The system problems are so strange and unpredictable. A large number of random problems are like the devil in the teeth and feet, and you are exhausted by prank techniques, but you are still helpless to the messy script. In the end, you may say with anger that I no longer need JavaScript in my life, but the customer is still waiting for you to meet their needs, so you shake your head and try again to sort out the messy code.

Be careful with the demons in your hands and learn to control them correctly. Remember not to let any small defect that is even harmless in your code; otherwise, you will always be punished one day.

Thinking prior to practice
As mentioned above, do not easily write code before you fully Think About It. Whether studying or working, imitating others' works or examples in books is not a good habit.

Even if this book is intended for practice, it is necessary to thoroughly understand the nature of JavaScript on the basis of in-depth understanding and analysis. In each chapter, the overview examples, attention to details, and deep understanding of the essence will be the greatest gains.

The sign that truly masters JavaScript is to be able to write your own code, which is obviously only possible after you think about it.

It is a common problem for many enthusiasts who are involved in the field of programming. It is often the difference between the profession and the amateur. Maybe the realization of an effect can bring you a sense of surprise and achievement, but you must know that you are here not just to achieve this small effect, you must ensure that your code will not go wrong now, and there will be no problems in the future. There will be no problems in your hands, and there will be no problems in others' hands. All of these require you to think fully.

The software process involves several stages, including analysis, design, implementation, and verification. It is only a small part of the work, but to ensure the excellent quality of this part of the work, it is often necessary to put a lot of energy into thinking before. Just as if you want to create a good work of art, you must go through rigorous ideas.

Think twice before you use your keyboard to knock out each line of code. Good code is the crystallization of ideas, and poor code is the rigid imitation and undisciplined patchwork.

Time back
Even a great sage cannot fully predict the future.

Even if you are sure that the current code is impeccable, you cannot ensure that they will always work normally in the future. In the process of software implementation, you must get used to the code you created before. If you think that an interface may change in the future, you should improve it and do not regret turning back. This long journey will prevent you from going into a different path in the future.

Many developers ignore the importance of maintaining the original structure of the system. When implementing new functions, they prefer to write a module rather than understanding and improving the original module, as a result, the results of each developer are isolated from each other, and a large number of redundant modules with similar functions appear in the system, seriously affecting the integrity and reusability of the system.

Those who don't want to look back will never really grasp the future.

The process of any effort is always gradual. Discovering the imperfections in the past is a good thing, which means progress. At this time, you will learn to go back and review and change the results of the past. You will have a lot of new gains.

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.