The following articles are classic, Kan Bukan as you will, I hope more Chinese knowledge rests in the hands!
China has a lot of children, their age or 21,2 18,9 years old, but also through self-study write a lot of code, some of them written in code is very beautiful, some technical details of the very superior, but also the spirit of great study, but they are some of the wrong understanding of and views about the lack of system, the overall understanding of the process, these person, a very good online friends, they are actually just some Coding fans, are they not qualified as a programmer, but as far as I know, many small Internet companies of the CTO is such a coding fans, holding a scary wages, doing scary projects, project outcome is usually pretty scary.
the basic quality of the programmer:
qualified as a real programmer, or that can really do some code work of qualified programmers, should be with the quality of the.
1:
teamwork and collaboration as the basic quality of it, not least, on the contrary, it is the programmer should have the most basic and most important of the existence and prosperity. the high level programmers are said to be loners in the nonsense, the power of any individual are limited, even if such a genius like linus also need to form a powerful team to create a miracle, those around the world write for the linux kernel master who is unthinkable without spirit of collaboration. Lone Ranger could make some money for a small software made little money, but once the system into a number of large R & D team and products into the commercial development of task, the lack of such qualities completely failed the people.
2: Documents used to
that a high level programmers never write the document must be callow Mao Haizi, good documentation is the formal R & D very important part of the process, as the code program members, 30% of the working time to write technical documentation is normal, and as a senior programmer and systems analyst, this ratio much higher. The lack of documentation, a software system is the lack of vitality in the future troubleshooting, upgrades, and when multiplexing module will experience great trouble.
3: standardization of coding habits
well-known software company as the number of foreign rule, code, variable names, comments within the code format, and even embedded Bank of China set the length of indentation and blank lines between the number of functions are clearly defined, good writing habits, not only contribute to the migration and error correction codes also help the collaboration among different technologies.
some coding fans clamoring for high-level programmers to write code that other people do not understand from the point of view, this clamor only prove himself unworthy of their fundamentally programmers. code with good readability, the quality of the basic needs of the programmer.
again look at the whole linux structures, not standardized, and standardized coding practices, global R & D collaboration is absolutely unthinkable.
4: understanding demand for a module
programmers need to understand the needs of many children tend to write programs focusing on a single functional requirement, they all boil down to the performance of hardware, operating system and development environment, the neglect of the performance of the code itself to consider, some people have boasted that writing an ad exchange program is very simple, such people will never know the millions or even tens of millions of magnitude performance access to case is how to achieve, for such a programmer, you give him a dark blue set of systems, he can not do Tai Chi and visit the chain capabilities. performance needs indicators, stability, and the ability to access support and security are important, as the programmer need to assess the module in the system environment in which operations will be subject to the load pressure and a variety of potentially dangerous and malicious attacks. On this point, a mature programmer at least 2 to 3 years experience in project development and tracking is possible with experience.
5: reusability, modular thinking
programmers often hear such complaints, written procedures for a few years, become a skilled, repeat every day without any new ideas to write some code, this is actually the biggest waste of software talents in China where a number of repetitive work into the main work of skilled programmers, These, in fact, be avoided entirely.
reusability design, modular thinking is to complete any programmer in a functional module or function of the time, to think about many, not limited to the simple idea of the current task to complete on, think about whether the module out of the system exists, it can be a simple way to modify the parameters in other systems and applications of the direct quote, so you can avoid duplication of development work great, if a software R & D units and working groups to research and development process in each of these issues are taken into account, then the programmer will not work in the repetitive too much time delay, it will have more time and energy into creative work in the code.
some good code program modules, even if written in the 70s, get into some of the system which are modules can be fit as well, but now I see that many small companies to upgrade the software of a or improvement to rewrite all the code at every turn, most of the repetitive tasks to waste time and energy.
6: Test used to formalize
as some commercial development, the full-time test engineers are essential , but not to say that test engineers have a full-time programmers can not test yourself; software development as a project concerned, a very important feature is that the sooner the problem and solve the lower the cost of the program members in each code, each sub-module after careful tests, you can try some of the earliest discovered potential problems and solutions, so that the construction of the overall system efficiency and reliability have the greatest promise.
test is actually two aspects to consider, one is called the normal test, it is to see whether the procedures can be done under the normal call to the basic function, which is the most basic test functions, but unfortunately in many companies this has become the only test task, in fact, far short of that; the second exception is called the tests, such as the stability under high pressure load testing, user input potential in case of abnormal test case of partial failure of the overall system, the module affected by the situation testing, frequent requests for blocking the abnormal stability of the test module resources and so on. Of course, not every programmer to code their own need for such a complete test, but the programmer must clearly understand their task in the overall code project status and a variety of performance requirements, targeted to the relevant test and identify and solve problems as soon as possible, of course, this requires understanding the needs mentioned above.
7: Summary of the ability to learn and programmers
is talent can easily be eliminated, it is easy to fall behind in the job, because a technology may be just a couple of years with the leadership, the programmer if you want to settle down, we must continue to follow up the new technology, learn new skills.
good at learning, for any career, for both the forward momentum necessary for the programmer, this requirement is even more high. But the studies also find the target, some small coding fans are, and they relish in their ability to learn, one will learn asp, while learned php, while learned jsp, they put this as bragging, the blind pursuit of a superficial surface of things and the noun, do not understand communication protocol network program, do not understand the interrupt vector processing applications, so the technical staff, no matter how many so-called master the new language, there will never be a qualitative improvement.
good at summing up, but also a reflection of learning ability, each completed a research and development tasks to complete a piece of code should have the purpose of tracking the application status of the program and user feedback, at any time summary and find their own inadequacies, so that gradually increase, a programmer is possible to grow up.
do not have the growth potential of a programmers, even if the sight is a master, it is recommended do not use, because when he was out of date soon to.
with the quality of the people all of the above, it should be said to be qualified programmers, please note that the above are all the qualities determined not by IQ, or some of the textbooks in the university can learn and requires only the programmer's understanding of their work is a problem of consciousness.
then as a senior programmer, so that the system analysts, that is, a program for the project designers, in addition to all of these qualities should have, but also need the following qualities:
First, demand analysis
For programmers, the understanding of the requirements qualified to complete the code, but for the organization and management research and development projects, they not only understand customer needs, more often, but also some of their own development needs, Why?
In general, research and development tasks, Perhaps customer demand, the market may demand and marketing departments, this time for R & D department, they see the demand is not a complete, general, demand is only some of the functional requirements, or some more formal , the user may get a complete view; but it is not enough, because the customer more in non-technical factors, they may be difficult to make a full and clear, or the performance of professional needs, but the organizers and planners for the project, he must be able to clearly recognize the existence of these requirements and complete the needs analysis in the time is right to ask, while a complete and clear instructions embodied in the design of the inside, so that programmers do not lose these guidelines when encoding.
Programming must correctly understand the environment in which user needs and make specific demands analysis, for example, the same way a software release through and through ASP License rented post, performance requirements may be different, the former emphasis is better support the capacity and stability, while the latter may be more emphasis on the universality of a variety of platforms and installation simplicity of use.
Second, project design and process capabilities
programmer must be able to master at least two or three of the project design methods (such as top-down design methods, such as rapid prototyping, etc.), and the ability to match needs and resources of the project to select the appropriate method for the overall project design design. design methods chosen properly, will delay the development cycle, a waste of R & D resources, and even affect the research results.
designers also need a program with a lot of effort in the design and process flow chart, he needs to do the data stream map to establish the data dictionary; he needs to process logic flow diagram to form the overall system processing. a process of system problems, even if the code is more beautiful, more refined each module, and will not be a good system. of course, do Good process analysis and choose the good project design, needs in the needs analysis capabilities with sufficient certainty.
Third, design reuse and modular decomposition
this seems to be old tune, the basic quality of the front on this issue not already do that?
task as a programmer in the module, he needs to face his reuse of certain modules to be considered, and as a systems analyst, he has to face the problem more complex, the need for overall system capacity according to an analysis of modular decomposition of a lot of reusable modules and functions, and form a separate module for each of the design requirements. For example, like a car production, are independent of each car, the first installation, each component is tailored, but then not the same, large-scale production of the machine, started by a car factory assembly line to produce automobiles, beginning with a certain independence of the complex components usability, standardization become a major trend in the later, different models, brands and even car parts from different vendors can be easily facelift and upgrade, this time to maximize the efficiency of automobile production. The same is true of software engineering, a mature The software industry in a number of related projects and systems, different components are free to dress, such as many of Microsoft's desktop software, in many operating modes (such as opening files, saving files, etc.) are the same set of reuse function module, which interfaces and through a number of libraries available to the desktop application developers easily articulated, and this is reuse of the module design was a proof.
a large, complex application system is divided into number of relatively independent, highly reusable, and can only rely on several parameters for data link module combination, as a senior programmer and systems analyst one of the most important work, the appropriate method of project design and clear flow chart is an important guarantee to achieve this goal.
Fourth, the overall project evaluation capacity
as a system designer must be able to proceed from the overall situation, the project has a clear understanding of the whole, such as whether the company's resource allocation reasonable and in place, such as whether the project schedule, but not so to maximize the efficiency of expression can not be completed on schedule. assess the overall project and the workload of each module to assess the resources required for the project to assess the projects may encounter difficulties, will require substantial experience, in other words, this is a constantly sum up the total to reach the state. In some Western leaders in software system design is very old, such as 4.50 years, or even older, they have much in the coding far less active as young men, but to project evaluation, their decades of experience is the most important and valuable asset. lack of such a generation of programmers in China, mainly the kind of age is not the lack of programmers, but it species of young programmers are basically research units to come, not from a professional software development products to come, they are not able to accumulate the kind of products of R & D experience, there is no way this thing is.
Fifth, the team organization and management capacity
complete a project requires team work together, as a project designer or person in charge of research and development, it should have the ability to maximize their team's overall strength, technology management because of its professional nature, no common ground personnel management in general, because it was designed there some technical indicators and factors.
first work to quantify, it is difficult to achieve without the right quantify the performance evaluation, and procedures are not easy to quantify lines of code number can be calculated, thus requiring technical managers need to really evaluate a module of the complexity and workload.
collaborative model, followed by adjustment of the team, in general, program development is usually divided into group collaboration, team the way the Lord programmer, there are democratic ways, according to the ability level of the gap between programmers, and research and development needs of the project, select the appropriate team approach and be able to select the right tasks, and members of the close combination of this to maximize the efficiency of the team.
people with high levels of a code may not be able to become a qualified director of project development, lack of capacity in this area is often easy to ignore.
sum can be seen as a competent person in charge of research and development, a project designer, the need to have the quality and capacity is not the ability to write code, of course, under normal circumstances, a summary of a programmer by continuously improving the quality of the time to achieve this, he has coding ability is quite simple, but please note that the causal relationship between the inside of a high level of project designers usually have a very good person writing the code, but not a very good code, programmers can competent project design work, which is not inside the existing IQ and textbook problem, or is that a programmer in the accumulation of experience, and gradually increase the time did not realize what areas should be thinking of things, there is no conscious organization and the project re- try to figure out with the design, there is no regular habits and summary documents used to, do not change these, our qualified project designer is still very lacking.
addition, to prevent boredom and I seriously, to add that this paper goal is to make commercial software programs and projects, scientific research institutions that programming expert, such as the master algorithm, such as image processing expert, whose job is to complete the research rather than direct commercial software (indirectly of course, the ultimate commercial product, such as Microsoft Research Institute for the Study of the subject), they emphasized the quality may be another thing, these people (experts), and can not be said to be a programmer, the programmer can not be used to measure the standards.
add that the last thing the design of a software project development process is like? the usual standards of design, for example, (but I like the rapid prototyping).
first step is market research, technology and market to combine in order to realize maximum value.
second step is to demand analysis, this phase requires that three things, the user views, data dictionary and user manual. The user view is that the software users (including end users and manage user) can see the page style , which contains a number of operational processes and conditions. data dictionary is specified and the logical relationship of data to collate the East, completed a data dictionary, database design was completed more than half. user manual is to specify the operating process instructions. Please note that user processes and user view is determined by demand and should therefore be completed before the software design, complete these to develop the program provides constraints and criteria, unfortunately, too many companies are not doing so, the causal reversed, regardless of the order, develop work and practical needs are often so detached from the phenomenon of estrangement.
needs analysis, in addition to the above work, I think that as a project designer shall complete the performance requirements to make the project specifications, performance requirements since it is often Only skilled people can understand, which requires technical experts and the demand side (customers or marketing department) to have real communication and understanding.
The third step is to outline the design, the initial division of the system function modules, and gives a reasonable R & D process and resource requirements. as a rapid prototyping method, complete the preliminary design to get into the coding stage, usually because of this approach are involved in new areas of research and development tasks, technical managers can not give a clear up The detailed design specification, but not the detailed design statement that is not important, in fact, the completion of the prototype rapid prototyping code, according to evaluation results and a summary of lessons learned, but also the detailed design of the steps again.
fourth step is detailed design, technical experts that design thinking is a test of the important points, detailed design specification should be specific modules in the most r l a clean manner (black-box structure) available to the coder, the maximum modularity makes the system as a whole; a Good detailed design specification, coding complexity can be reduced to a minimum, in fact, strictly speaking the detailed design specification of each function should be defined for each parameter to provide both fine fine thin out, from requirements analysis to outline design to complete the detailed design specification, a software project should be finished into half. In other words, a large software system in half the time to complete, in fact, a line of code has not yet started work. programmers those who make the software simple to write code to understand , and to fundamentally mistake the.
fifth step is encoded in a standardized development process, the coding process in the whole project up to no more than 1 / 2, usually 1 / 3 of the time , tests the sincerity of the so-called the Brothers, a good design process is completed, will greatly improve the coding efficiency, coding the progress of coordination between the different modules are most in need of care and collaboration, and perhaps a small module that may affect the problem of the overall progress, so many programmers were forced to stop work to this problem in a lot of R & D process have appeared. encoding the mutual communication and emergency response solutions are important tools for the programmer, bug forever, you must always face this problem, the famous Microsoft, is there not issued patches for three consecutive months, when it? never!
sixth step is to test the test there are many: in accordance with the test execution side, can be divided into internal testing and external testing; in accordance with the test range, the test can be divided into modules and the overall joint tune; in accordance with the test conditions, the test can be divided into normal and abnormal operating conditions tested; in accordance with the test input range can be divided into full-coverage testing and random testing. these are well understood, not explained.
In short, the test is also a research and development projects in a very important step, for a large-scale software, 3 months to 1 year of external tests are normal, because there are always unexpected problems and.
finish testing, acceptance and completion of some help to complete the final documents, the overall project be considered an end, of course, ultimately, future upgrades, patches, and so work just do not want to get money through the one-shot deal, we must keep the operational status of the tracking software and continue to patch upgrades, that the software was completely out of date.
not really show off what these steps to write, because I do speak the truth is a , no formal learned profession, and some are long enough credits in the mix of these really useful things put back the teacher.
online now is also very impulsive, some coding fans of voices to confuse the public, the actual technical experts on the real roots rarely post on the Internet, as I like bragging, in fact, it is hardly a master, but could not understand this kind of technology, the programmer's misunderstanding and nonsense, but to come forward out and do things right words, I hope those who have indulged in some wrong coding fans who have been able to seriously think about it, go on the right path, after all, far from the minds of those not smart to play a proper value.
No comments:
Post a Comment