Programmers are a technical work and play an important role in the development of IT, from the establishment of underlying hardware communication protocols, to the processing of the data transmission layer, to the construction of operating systems, to the construction of database platforms, to the establishment of various data marketing platforms on the application layer, programmers play an important role in it and have made great contributions to the development of the IT industry.
There are many coders in China, but the Chinese software industry, especially the network application development, has a wide misunderstanding. It is difficult to form a large-scale software development force and product capabilities, not only far from the United States, compared with India. These problems are not due to the IQ and hard work of Chinese programmers, nor to the degree of investment in development by the country or the people, but to a large extent, there are some technical and program development, misunderstandings in project design have led to insufficient productization capabilities in the software industry and lack of R & D capabilities for large-scale and large-scale reusable systems. This can be said to change misunderstandings, it is an important task to solve the limitations brought by the small workshop model and the individual Hero Model in the software industry.
There are many children in China who are 18, 9 or years old. They have also written a lot of code through self-study. Some of their code is very beautiful, some technical details are quite outstanding, and they are also very diligent, however, they are influenced by some wrong understandings and opinions, and lack the ability to understand the system and the program as a whole. These people and friends on the Internet speak very well. They are actually just coding fans, I am not qualified to be a programmer at all, but as far as I know, many ctos of small network companies are coding fans who are working on scary projects with scary wages, project endings are usually scary.
As a truly qualified programmer, or a programmer who can truly complete some code work, it should be qualified.
1. team spirit and collaboration Ability
Taking it as a basic quality is not unimportant. On the contrary, this is the most basic and important foundation that programmers should possess. The high-level programmers are talking about being a hero, and the power of any individual is limited. Even a genius like Linus needs to create a miracle by forming a strong team, those who write core for Linux all over the world cannot imagine the lack of collaboration spirit. Lone Ranger can make some small software to make money, but once they enter the R & D teams of some major systems and enter the commercial and productized development tasks, those who lack such quality will be completely unqualified.
2. Document habits
A high-level programmer never writes a document, but it must be a cool child. A good document is a very important part of the formal R & D process. As a code programmer, it is normal to write technical documents for 30% of the work time, and as a Senior Programmer and system analyst, this proportion is much higher.
If there is no document, a software system lacks vitality. In the future, troubleshooting, upgrading, and re-use of modules will cause a lot of trouble.
3. Standardized and standardized coding habits
As a rule of some well-known foreign software companies, code variable naming, code comment format, and even nested line indent length and empty line numbers between functions are clearly defined, good writing habits not only help code porting and error correction, but also help different technical personnel to collaborate.
Some coding fans complain that code written by high-level programmers is never understood by others. Such complaints can only prove that they are not worthy of self-proclaimed programmers. The Code has good readability and is a basic quality requirement for programmers.
Looking at the establishment of Linux, there is no standardized and standardized code habits, and global R & D collaboration is absolutely unimaginable.
4. Requirement understanding
Programmers need to understand the needs of a module. Many children write programs only focus on one functional requirement. They attribute all performance indicators to hardware, operating systems, and development environments, while ignoring the performance considerations of the Code itself, some people once said that writing an ad exchange program is very simple. Such people never know how to implement performance indicators in the case of millions or even tens of millions of accesses, for such a programmer, if you give him the deep blue system, he will not be able to access the Taiji chain. Stability, access support, and security are all important in performance requirement indicators. As a programmer, we need to evaluate the environment of this module in system operation, the load pressure to be subjected and the possibility of various potential dangers and malicious attacks. In this regard, a mature programmer must have at least two to three years of project R & D and tracking experience.
5. reusability and modular Thinking Ability
I often hear such complaints from programmers who have been writing programs for several years and become skilled workers. Every day, I repeatedly write code without any new ideas. This is actually the biggest waste of Chinese software talents, some repetitive work has become the main work of skilled programmers, which can be completely avoided.
In reusability design, modular thinking means that programmers should think more about every functional module or function, rather than simply thinking about how to complete the current task, think about whether the module can be detached from the system, and whether it can be directly referenced in other systems and application environments by simply modifying parameters, which can greatly avoid repetitive development work, if a software R & D organization and working group can consider these issues during every R & D process, programmers will not delay too much time in repetitive work, more time and energy will be invested in innovative code work.
Some good program module code, even written in 1970s, can be well applied to some systems as function modules. What I see now is, many small companies tend to rewrite all their code as soon as software is upgraded or improved. Most repetitive work wastes time and effort.
6. Test habits
As a commercial and formal development, full-time test engineers are indispensable, but it does not mean that programmers with full-time test engineers can not perform self-testing. As a project, software development, A very important feature is that the earlier the problem is discovered, the lower the cost of solution. The programmer performs a serious test after each code segment and each sub-module is complete, we can try to discover and solve some potential problems as early as possible, which guarantees the efficiency and reliability of the overall system construction.
In practice, two aspects need to be considered for testing. On the one hand, testing of normal calls is to check whether the program can complete basic functions under normal calls. This is the most basic test responsibility, unfortunately, this is the only test task in many companies, but it is actually far behind. The second is the test of abnormal calls, such as the stability test under high load, testing of potential user Abnormal Input, testing of the module affected by local system faults, and testing of module stability when frequent abnormal requests block resources. Of course, not programmers need to perform such a complete test on each piece of code, but programmers must be aware of their position in the overall project and various performance requirements, conduct relevant tests and discover and solve problems as soon as possible. Of course, this requires the requirement understanding ability mentioned above.
7. Ability to learn and summarize
Programmers are easy to get rid of and fall behind in their careers, because a technology may be disruptive in just three or two years. If programmers want to live up, they must keep following up on new technologies, learn new skills.
Good at learning. For any profession, it is an essential motive force for advancing. For programmers, this requirement is even higher.
But they also need to find the correct learning target. Some small coding fans also relish their learning ability. They will learn ASP, PHP, and JSP later, they use this as a show-off capital, blindly chasing superficial things and terminologies, as network programs do not understand communication and transmission protocols, and as applications do not understand interrupt vector processing, no matter how many so-called new languages are mastered, such technicians will never improve their performance.
Being good at summarization is also a manifestation of learning ability. Every time you complete a R & D task and a piece of code, you should track the application status and user feedback of the program, and summarize it at any time, find your own shortcomings so that a programmer can grow up gradually.
A programmer who does not have growth is recommended not to use it even if he is a good player, because he will arrive immediately when he is out of date.
People with all the above qualities should be qualified programmers. Please note that none of the above qualities is determined by IQ or can be learned from some university textbooks, it only requires the programmer's understanding of his work and is a matter of consciousness.