There are many children in China, they are 18-9 or 21-2 years old, and they also wrote a lot of code through self-study. Their code is very beautiful. Some technical details are quite outstanding, and they are also very drilled, but they are some The wrong understanding and opinion, lack of system, the overall understanding of the program, these people, a friend on an online friend is very good, they actually only fans, I am not qualified to be a programmer, but as I know, no Small network CFANs, holding a scary wage, making a scary project, and the project's ending is usually very scary.
Programmer's basic quality: make a truly qualified programmer, or you can really pass programmers who have completed some code work, should have the quality.
1: Teamwork and collaboration
As a basic quality, it is not important. It is the opposite of it. This is the most basic and most important thing for programmers. The high-level programmers said that they are all in the words. Any individual's power is limited, even if the genius like Linus, it also needs to create a miracle through the composition of the powerful team, and those who write core around the world. Masters, there is no collaborative spirit is unimaginable. Salers can make some small software to make money, but once entering some large-scale R & D teams, entering commercial and product development tasks, people who lack this quality are completely unqualified.
2: Document habits
It is definitely a high-level programmer who never writes a document. Good document is a very important link in a regular research and development process. As a programmer, 30% of working hours write technical documentation is normal, and as a senior Programmer and system analysts, this ratio is much higher. Lack of documentation, a software system lacks vitality, in the future, the upgrade, upgrade, and multiplexing of the module will encounter great trouble.
3: Standardized, standardized code preparation habits
As the rules of some foreign well-known software companies, the variables of the code, the code within the code, even the length of the nesting, the length of the nesting, and the number of spaces between the function and the function of the function are clearly stated, and good writing habits, not only helps the code. Transplantation and error correction also helps cooperation between different technicians. Fans 叫 高 水 高 水 程序 程序 程序 程序 写 人 人 人 人 人. 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 嚣 程序 嚣 嚣 程序 程序 称 程序 程序 程序 称 程序 程序 程序 程序 程序 程序 程序The code has good readability and is the basic quality needs of the programmer. Look at the entire Linux construction, there is no normalized and standardized code habit, and global research and development collaboration is absolutely unimaginable.
4: Demand understanding
The programmer needs to understand the needs of a module. Many children write programs often only pay attention to a functional demand. They all overcome the performance indicators in the hardware, operating system, and development environment, and ignore the performance consideration of their own code. Some people have said to write An advertising exchange program is very simple. This person never know how performance indicators in millions or even ten levels are implemented. For such programmers, you give him a deep blue system, he does not do Out of the Taiji chain and visits. In the performance demand indicators, stability, and access to support capabilities, and security are important. As a programmer needs to assess the environment in which the module is in system operation, the load pressure and various potential dangers and malicious attacks. possibility. At this point, a mature programmer requires at least 2 to 3 years of project research and tracking experience, it may have experience.
5: Retrieval, modular thinking
I can often hear some programmers have such complaints, I have written a few years, turned into a skilled worker, and I repeatedly write some code without any new intentions. This is actually the largest waste of Chinese software talents, some repeatability The work has become the main job of skilled programmers, and these are actually avoidable. Multiplexing design, modular thinking is to do more about any functional module or function, do not limit whether the module can be separated from this system without limitation. Can you directly reference it in other systems and applications by simple modification parameters, so you can greatly avoid the development of repetitiveness. If a software R & D unit and the working group can take into account every development process. These problems, then programmers will not delay too much time in repetitive work, there will be more time and effort to put into innovative code work. Some good program module code, even if it is written in the 70s, get it in some system as a function module, and now I see, many small company software is upgraded or improved. All code rewrites, most repetitive work is unfortunately waste time and energy. 6: Test habits
As a result of some commercial formalization, the full-time test engineer is indispensable, but it is not to say that there is a full-time test engineer programmer can not self-test; software research and development as an engineering, one is very Important Features is that the earlier the problem, the lower the cost of solving, the programmer is in each code, after each submodule is complete, you can try to discover and solve some potential problems, so The efficiency and reliability of the overall system construction have the greatest guarantee. The test work actually needs to consider both aspects. On the one hand, it is the test of normal calls, which means to complete basic functions in normal calls, which is the most basic test responsibility, but unfortunately, in many companies, this has become the only test task. It is actually far behind; the second aspect is the test of abnormal calls, such as stability testing under high pressure load, the test in the case of user potential anomaly input, the overall system is subject to affected situation Test, frequent unusual abnormal requests to block the module stabilization test, etc. Of course, it is not a programmer to make this complete test on each code of your own, but the programmer must clearly know his code task in the overall project and various performance requirements, targetedly related tests. As soon as possible, I found and solve the problem, of course, this requires the above to mention the needs of demand.
7: Ability to learn and summarize
Programmers are very easy to be eliminated, and it is easy to lose their profits, because a technique may only have leadership within three or two years, and the programmer must constantly follow up new technologies and learn new skills. Good at learning, for any career, is the driving force necessary for advancement, for programmers, this requirement is higher. But learning is also looking for the goal, some small coding some CodingTo is like some cfans, they also listen to their learning skills. I will learn ASP for a while, I will learn PHP, I will learn JSP for a while. They put this kind of capital, blindly chasing some superficial, surface things and nouns, doing network procedures, do not understand communication transfer agreement, doing applications do not understand interrupt vector processing, such technicians, regardless of how many so-called New language will never have quality improvement. Good at summary, it is also an embodiment of learning ability. Each time a R & D task is completed, complete a code, it should be purposeful to track the application status and user feedback, always summarize, find your own shortcomings, this is gradually improved, one Programmers can grow up. A programmer who does not have growth, even if it looks at it, it is recommended to use it, because he is still arrived. People with all the top quality should be said to be enough programmers. Please note that the above qualities are not determined by IQ, nor is it possible to learn from some of the university. It is only a programmer to himself. The understanding of work is a matter of consciousness. So as a senior programmer, the system analyst, that is, for the designer of a program project, in addition to the above, the following quality is required:
First, demand analysis capabilities
For programmers, understanding requirements can complete qualified code, but for the organization and managers of R & D projects, they must not only understand customer needs, but also have some needs, why do you say this? In general, the R & D task is performed, perhaps the customer's demand, perhaps the demand proposed by the market and marketing department, this time for the R & D department, they are not a complete demand, usually, this demand is only some of the functions The requirements, or more or more, it is possible to get a complete user view; but this is not enough, because the customer may make it difficult to make complete and clear, or professional performance requirements due to non-technical factors, but Project organizers and planners, he must be able to recognize the existence of these needs and appropriate proposals when completing the needs analysis report, while the complete and clear reflection is in the design manual, so that the programmer is not lost when the programmer encodes These guidelines. The program designer must correctly understand the environment in which the user needs, and the analysis of demand, for example, the same software issued and released through the ASP lease, and the performance requirements may be different, the former emphasizes It is better support capabilities and stability, and the latter may emphasize the universal and installation use of universality and installation in a variety of platforms.
Second, project design methods and process processing capabilities
The programming designer must be able to master a project design method for not less than two to three (such as design methods, such as rapid prototyping, etc.), and can choose the appropriate design method according to project requirements and resource matching. The overall design of the project. Improper design methods will delay the R & D cycle, waste R & D resources, and even affect the research and development effect. A program designer also needs to use a lot of effort to use the flowchart design and processing, and he needs to do data flow diagrams to establish a data dictionary; he needs processing logic flow diagrams to form an overall system processing process. A system with a problem with a problem, even if the code is more beautiful, each module is exquisite, and it will not become a good system. Of course, do process analysis and choose a good project design method, you need to have sufficient grasp on demand analysis capabilities. Third, multiplexing design and modular decomposition capabilities
This seems to be old-tonghua, do you have explained this problem in the first basic quality? As a programmer engaged in module tasks, he needs to consider the reuse of the specific function module he faced, and as a system analyst, he has to face more complicated, need to follow the whole system according to one Modular analysis capability is broken down into many reused functional modules and functions and forms an independent design requirement for each module. For example, it is like automobile production. The earliest installation is installed independently, and each component is tailored, but it will not be the same, the machine is produced, and a bus factory begins to produce a car. The independent component begins with certain reuse. In the later standardization, the automotive parts of different models, brands, and even different manufacturers can also perform convenient dressing and upgrading, this time, the efficiency of automotive production maximizes. Software engineering is also the same, a mature software industry, in some related projects and systems, different components can be discouraged, such as Many desktop software of Microsoft, in many operating modules (such as opening files, saving files, etc. Wait, it is a multiplexed function module, and these interfaces are provided to desktop application developers convenient to hook through some class libraries, which is a significant agreement for multiplexing module design. Decompose a large, intricate application system into some relatively independent, highly reused, and can only rely on several parameters to complete the data connection module combination, is the most important as senior programmer and system analyst Work, suitable project design methods, clear flow charts, is an important guarantee for achieving this goal.
Fourth, overall project evaluation capabilities
As a system designer, it must be able to start from the whole game. For the overall clear understanding of the project, such as the company's resource allocation is reasonable and in place, such as whether the project schedule can maximize the efficiency and not completed on schedule. Evaluate the overall workload of the project and various modules, assess the resources required for the project, and the difficulties may encounter in the assessment project, it requires a lot of experience accumulation, in other words, this is a realm of continuous summing. The leaders in the Western software system design are very old, such as 4, 50 years old, even older, they are far less than the young people in the coding, but for the project assessment, they decades The experience accumulation is the most important and valuable wealth. China lacks such a series of programmers, mainly not lacking the programmer, but that aged programmer is basically the research unit, it is not from professional product software research and development, they There is no experience that can accumulate the product development, this is also something that there is no way.
Fifth, team organization management capabilities
Complete a project engineering, need to work together, as the competent personnel of the project designer or R & D should have the ability to maximize the overall strength of the team, technical management due to its professional nature, because of this Some technical indicators and factors are designed inside. The first is the quantization of work, it is difficult to do a suitable performance appraisal without quantifying, and the program quantization is not a simple code line number, so technical managers need to truly assess the complexity and workload of a module. Secondly, the adjustment of teamwork, generally, the cooperation of procedural development is usually divided into a group, and the team has the main program, and there is a democratic approach. According to the ability to level between programmers, and according to project development Demand, choose the right team method, and can closely combine the job task of the responsibility and members, so that you can maximize the efficiency of the team. A person with high code level, may not be a qualified project research and development supervisor, which is often easily ignored by the ability. In summary, as a person in charge of a competent research and development, a project designer, the quality and ability need to have the ability to prepare the program code, of course, a programmer has improved this through a constant summary When the quality, the ability of his code has also been quite uncommon, but please pay attention to the causal relationship in this, a high-level project designer is usually the code to write a prestigious person, but is not a code. Pretty excellent programmers can be competent for project design, and there is no IQ and textbook, or it is that a programmer has accumulated experience and gradually improved, there is no consciousness. The organization and multiplexing design of the project is triggered, and there is no regular documentation and summary habits. Do not change these, our qualified project designers are still very lacking. In addition, in order to prevent boring people from being true, supplementary, this paper is a commercial software project and project, and those scientific research masters, such as algorithms, such as image processing masters, their work is research Questions instead of direct completion of commercial software (of course, the final indirectly became commercial products, such as the research topics in Microsoft Research Institute), so they emphasize the quality may be another thing, these people (experts), do not say to be programmers, You cannot use the programmer's standard to measure.