As a truly qualified programmer

Source: Internet
Author: User

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 power of any individual is limited. Even a genius like Linus needs to build a strong team to create a miracle. The experts who write core for Linux all over the world, it is unimaginable to have no spirit of collaboration. Once you enter the system's R & D team and enter the commercial and productized development tasks, those who lack such quality will be 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

The variable naming of the Code, the Comment format in the code, and even the length of the indentions In the nested row and the empty row numbers between the functions are clearly defined. Good writing habits not only help code porting and error correction, it also facilitates collaboration between different technical personnel. Some codingfans complain that code written by high-level programmers cannot be understood by others. Such complaints can only prove themselves? Root does not deserve to be a programmer. The Code has good readability and is a basic quality requirement for programmers. There is no standardized and standardized code habit, and collaboration between R & D is absolutely impossible.

4: requirement understanding

Programmers need to understand the needs of a module. Many programmers 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, stability, access support, and security are all very important in performance requirement indicators. As a programmer, it is necessary 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 adapted to be put into some systems as function modules, but now many software upgrades or improvements will easily overwrite all the code, most repetitive work wastes time and energy. This is a defect we should deliberately overcome.

6: Test habits

As for some 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. Software Development as a project, 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. However, you also need to find goals and be good at summing up the learning ability. Each time you complete a R & D task and complete a piece of code, the Application Status and user feedback of the program should be tracked purposefully, summed up at any time, find your own shortcomings, and then gradually improve, so that a programmer can grow up.

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.

As a Senior Programmer, as a system analyst, that is, the designer of a program project, in addition to all the above qualities, must possess the following qualities:

First, demand analysis capability

Programmers can complete qualified code by understanding the requirements. However, for the organization and managers of R & D projects, they must not only understand the customer requirements, but also develop their own requirements more often, why? In general, the R & D task may be a requirement from the customer, or from the marketing and marketing departments. At this time, the R & D department does not see a complete requirement. Generally, this requirement is only functional or more formal, and may obtain a complete user view. However, this is not enough because the customer has many non-technical factors, they may have difficulty proposing complete and clear, or professional performance requirements, but for project organizers and planners, he must be aware of the existence of these needs and make appropriate suggestions when completing the requirement analysis report. At the same time, they must be complete and clear in the Design Manual, so that programmers do not lose these coding rules. The program designer must correctly understand the environment where the user needs are located and analyze the requirements accordingly. For example, the same software is released by ASP leasing and by license, performance requirements may be different. The former emphasizes better support and stability, while the latter may emphasize the universality of various platforms and the simplicity of installation and use.

Second, project design methods and process processing capabilities

Programmers must be able to master at least two or three project design methods (such as top-to-bottom design methods, such as quick prototyping ), you can select an appropriate design method based on your project requirements and resources. Improper selection of design methods will delay the R & D cycle, waste of R & D resources, and even affect the R & D effect. A programmer also needs to design and process flowcharts. He needs to create a data flow chart to establish a data dictionary. He needs to process a logical flow chart to form an overall system processing flow. A system with problematic processes, even if the code is more beautiful and each module is more refined, will not become a good system. Of course, to analyze the process and select a proper project design method, you must have sufficient grasp of the requirement analysis capability.

Third, reuse design and modular decomposition capabilities

This seems to be an old-fashioned re-discussion. Isn't the problem already explained in the basic quality? As a programmer engaged in module tasks, he needs to consider the reusability of specific functional modules he faces. As a system analyst, he has to deal with a lot of complicated problems, the overall system should be divided into many reusable functional modules and functions according to a modular analysis capability, and an independent design requirement should be formed for each module. For example, in automobile production, each automobile was first installed independently, and each component was customized, but later it was different, an automobile factory began to produce automobiles through pipelines, and independent components began to be reusable. In the future, standardization became a general trend, with different models, brands and even Auto Parts of different manufacturers can also be easily updated and upgraded. At this time, the efficiency of auto production is maximized. The same is true for Software Engineering. In a mature software industry, different components can be changed at will in some related projects and systems. For example, many desktop software of Microsoft, many operation modules (such as opening files and saving files) use the same set of function modules. These interfaces are provided to desktop application developers through some class libraries for convenient mounting, this is an obvious evidence of the reusable module design. A large and complex application system is divided into several relatively independent and highly reusable modules that can be combined with data contact by just a few parameters, it is the most important task for senior programmers and system analysts. A proper project design method and a clear flowchart are important to achieve this goal.

Fourth, overall project evaluation capability

As a system designer, you must be able to get a clear understanding of the entire project, such as the company's resource allocation.

Whether the project schedule is reasonable and in place. For example, whether the project schedule can maximize the efficiency will not be completed on schedule. Evaluate the overall workload of the project and the workload of each module, evaluate the resources required by the project, and evaluate the difficulties that the project may encounter. It requires a lot of experience, in other words, this is a kind of realm that can be achieved through continuous summarization. Some leaders in Software System Design in the West are very old, such as 4, 50 years old or even older. They are far less active in coding than young people, but in terms of project evaluation, their decades of experience are the most important and valuable wealth. The lack of such a generation of programmers in China is not the lack of programmers of that age, but the programmers of that age are basically made by research units, not from professional product software development, they have no experience in product-based R & D. This is also impossible.

Fifth, team organization and management capabilities

To complete a project, the team must work together. As a project designer or R & D supervisor, the team should be able to maximize the overall strength of the team. Due to its professional nature, Technical Management, this is not the same as general personnel management, because

Some technical indicators and factors are designed. The first is the quantification of work. Without quantification, it is difficult to achieve a suitable performance appraisal. Program quantification is not a simple calculation of the number of lines of code, therefore, technical management personnel must be able to assess the complexity and workload of a module. The second is the adjustment of the team collaboration model. Generally, the program development collaboration is divided into groups. The group has the primary programmer and the democratic mode, based on the gap in the ability level between programmers and the needs of project R & D, select an appropriate team-up method and closely combine duties and permissions with the work tasks of members, in this way, the team formation efficiency can be maximized. A person with a high level of Code may not be able to become a qualified project R & D Director. Lack of ability in this area is often overlooked.

In summary, we can see that, as the person in charge of R & D, a project designer, the qualities and capabilities required are not the ability to write program code. Of course, in general, when a programmer reaches this quality through continuous summarization, his coding capability is quite simple, but pay attention to the causal relationship, A high-level project designer is already a very good person in code writing, but not a programmer with very good code can be competent in project design, this is not a question of IQ and textbooks. It is also because a programmer is not aware of what to think about when accumulating experience and gradually improving, there is no conscious understanding of the project organization and reuse design, no regular document habits and summary habits, and without changing these, our qualified project designers are still very lacking.

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.