Chapter 10: good programmers

Source: Internet
Author: User

The previous chapters describe the experiences, difficulties, and challenges you have encountered during your growth. Many netizens replied that they hope to see something that can resonate with them, and learn something that can play a role for them to grow as quickly as possible on the programmer's path.

I understand their feelings. Today, when the pressure is so great, everyone wants to be able to shorten the process of becoming a master or a skilled player so that they can win the initiative for themselves. Just like those who practice martial arts, they all want to get a secret of martial arts, so that they can enter a new realm as soon as possible. Although they will not bully others, they can at least be used for self-protection.

Here I will summarize my understanding of growth. Of course, it may be useful or useless to you.

First, I want to emphasize the basic qualities of programmers. This is just as if you want to practice martial arts. First, you must check whether you have the qualification to practice martial arts. Among these qualifications, I emphasize the following points:


The so-called line, love line. Only when you love programming and your work, can you devote yourself to it and be full of energy. If you only consider programming as a survival task without investment, you will not be able to make efforts for it, nor naturally become a good programmer.


For me, a programmer can have no talent, but cannot have no hard work. Many programmers often work overtime, and some are forced, but some are voluntary. When you love it, you should forget your time and forget your investment. Some programmers go to work on time every day, just like working in factories. For me, when there is no stage result in the work at hand, for example, the function has not been compiled, and there are still several errors to be corrected during compilation, it is impossible to leave immediately, it is only after these problems are solved.

For the young people around me, there are fewer and fewer people with such mentality. I am sorry for this. I am not willing to pay when I am very angry. I am not willing to accumulate experience as soon as possible to improve my abilities. In the future, it will be difficult to have good competitiveness. It will be even harder to have a chance when you get married. On the contrary, programmers over thirty years old are still hardworking ten years ago. They are often the newest of the company. Isn't it worth learning from young people.


The quality of a program can be said to represent the excellent level of a programmer. It is impossible for a programmer to write code that is well-known. A good programmer must have a keen eye to capture potential program problems, quickly locate errors, and find the cause. This quality comes from the sense of responsibility. It is impossible for irresponsible programmers to possess this quality.

My colleagues often admire me and often find errors that others have not discovered. Here is a simple example, such as a document error or a logical error in a piece of code. This is from the accumulation of experience that everyone will have over time; on the other hand, it is from their own sensitivity to the problem. My first feeling is that I will find various possible problems, so I can find these problems. If you do not treat it as a responsibility, you will ignore it. I once had a colleague who wrote the code, which made me suffer a lot. I was told that I had completed the task because I did not find many problems at the shortest level. From the Error Type of others, I can say whether this person is responsible or not.

Maybe he will argue that he just did not find it, not subjective intention. I can only say that he is not suitable for programmers, and he is more likely to become a good programmer.


Enterprising is an inevitable step for programmers to grow. Naturally, if you don't want to be enterprising, you won't be able to become a good programmer and will only be eliminated by the ever-changing new technologies. It is necessary to have an enterprising spirit. However, you still need to master the appropriate learning methods and ways. For example, you can search for the required knowledge from the network, make full use of network resources, find the materials you need, and introduce new technologies and methods into your system; learning programming ideas from others' codes, understanding others' code ideas, and rewriting others' codes for their own systems; accumulating experience from work, we can improve and reconstruct our work, summarize our progress and shortcomings, and improve ourselves.

Of course, there are many other basic qualities. It is very important to become a good programmer.


Second, review yourself. I can only belong to a programmer who is better than a common programmer but is not good enough. This is not modesty, but a reason.

I have never studied C ++ and windows programming since I started college. The university only has C language courses. Working directly using VC ++ for typographical software development. Like everyone else, we started from Hello world. I skipped the C ++ language step, so now I am not very clear about some basic concepts. I have never studied windows programming. Therefore, when many posts in the Forum ask some knowledgeable or principled content, I usually remain silent because I really don't know why.

So far, I have read only one VC ++ 5.0 literacy book, mainly focusing on the use of interfaces and controls. Nothing else. I am not a reader. Therefore, many netizens asked me what books they want to read before they can get started or advanced. I have no right to speak. However, in my personal growth process, because I did not know and master some knowledge in advance, I did make a lot of detours. It can be said that the accumulation of experience depends more on the lessons of failure. Failed. I understand which method is acceptable and which method is not. However, there is a lack of theoretical support and it is unclear why this method is acceptable.

I think this is enough to show that I have not yet reached the realm of excellent programmers, and there are still many excellent programmers whose basic qualities cannot be met. I feel like I am an illiterate with many practical experiences, but I cannot explain it to myself.


Finally, I want to talk about some of my learning methods. I think I have my own ways of learning to be illiterate.


I never want to bury myself in reading books. Human abstract capabilities are limited. Maybe the first few chapters of a book can be understood, but the subsequent chapters are basically difficult to absorb, because they do not have a deep understanding of the basics of the previous chapters. If you want to understand it, you must put it into practice. Just like swimming, it does not work if you don't get into the water. Some netizens have also put it into practice, but it is often too simple. The practice I mentioned should be practice in a large project. Because of the code of small projects, many programming ideas are difficult to embody, such as encapsulation, polymorphism, inheritance, and so on. Therefore, it is necessary to make the code reach a best practice through repeated refining and reconstruction in a large project.

Many programmers often give it a taste. Without code optimization or structure rationality, you can simply complete the task. Then, it is very difficult for you to improve. Only by optimizing and restructuring can you get the best practices for writing your own code to form your own coding style and program structure design ideas.


Projects are different from research, and the construction period is usually under great pressure. So what should we do if we don't have enough time to solve some technical problems to achieve an ideal result. At this time, we need to use tailism. Today's network technology is very developed and open source is everywhere. We need to make full use of these resources. Get what we need from it, and apply it to the project directly or with a slight modification. For example, a control, a table, and a file parsing module. But our goal is not just to this step. Then, we need to understand the content and at least make modifications. For example, when the actual effects of a control are different, we can improve it; when the function is defective, we can solve it. In this way, the results of the come doctrine can be achieved.

Some programmers prefer to write basic modules from scratch. For example, you can write a self-drawn control and perform all the operations after deriving from the cwnd class. I do not agree with this unless there is no choice, or the company needs to have its own independent interface library strategically. These programmers tend to pursue technical development at the underlying level rather than understanding system services. I can only say that they are more suitable for some units with special requirements.


Some programmers are not good at communication. You are alone. When experienced programmers in the Organization do not ask each other. Communication is an important way for programmers to grow. Through communication, you can learn the strengths of others. More importantly, you can greatly shorten your growth cycle. Some people often get stuck for half a day when they encounter a problem and may come up with an unsatisfactory result. It is unknown that other people have long had a good solution to this problem, and even existing modules can be used. If you are good at communication, you have solved the problem for a long time and can learn from others why and what are the advantages. In this way, you can absorb this part of knowledge for your own use.

Therefore, if you have a good programmer around you, please ask more questions if you have some ideas. This is a much better time than thinking about and reading books by yourself. Of course, you must have a good attitude when asking questions. Maybe this is a shortcut to become a good programmer. As mentioned in the martial arts novels, it is necessary to have more skills to improve the performance faster.

In short, to become a good programmer, in addition to a certain amount of talent, but also need to have the basic qualities of excellent programmers. Then, with a learning method that suits you, you have the hope to become a good programmer.

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: 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.