Necessary skills to architect

China has a lot of young people, they 18,9 years and 21,2 years old, also wrote a lot through self-study the code, some of them written in code is very beautiful, some technical details quite outstanding, but also very inquiring mind, but they are about some of the wrong understanding and perspective, the lack of systems to the overall understanding of the program, these people, an online friend very well, they actually fans, are they not qualified as a programmer, but as far as I know, not He left networks Cfans, holding a scary wages, doing scary projects, project outcome is usually pretty scary.

Programmers basic qualities:

Qualified as a real programmer, or that can truly qualified programmers to complete some code work, should have the quality.

  1. Teamwork and collaboration

Take it as a basic quality, not least, on the contrary, it is the programmer should have the most basic, and most important in this 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 create a miracle through the formation of a strong team, who write for the linux kernel worldwide the experts have no spirit of collaboration is inconceivable. Lone Ranger could make some money of small software made little money, but once some large systems research and development team, and commercialization of product development tasks, the lack of such qualities completely failed the people.

  1. Documents habit

He said high-level programmers do not write the document has never definitely callow boy, and good documentation is the formal R & D very important part of the process, as the code a programmer, 30% of working time to write technical documentation is normal, and as a senior programmers and systems analysts, this ratio is even higher. Lack of documentation, a software system is the lack of vitality, it will encounter great trouble in the future troubleshooting, upgrades, and module reuse.

  1. Standardization, standardization of coding habits Code

As the number of foreign well-known software company rules, code named variables, comment format within the code, even number of empty row of nested indented Bank of the length and functions are clearly defined, good writing habits, not only contribute to the code migration and error correction, but also help collaboration between different technicians. fans clamoring for high-level programmers to write code that other people do not understand from the point of view, this can only prove their clamor fundamentally unworthy of claiming the programmer. The code has good readability, the quality of the basic needs of the programmer. Look at the whole linux structures, there is no standardization and standardized coding practices, global R & D collaboration is absolutely unthinkable.

  1. Ability to understand the needs of

Programmers need to understand the needs of a module, many children write programs focus only on a functional requirement, they all boil down to the performance of the hardware, operating system and development environment, the neglect of the performance of the code itself to consider, some people have boasted to speak and write a banner exchange program is very simple, such people never know how the performance indicators in the order of magnitude of one million or even tens of visits is achieved, for such a programmer, you give him a dark blue set of systems, he also did not Tai Chi and visit the chain's ability. Performance requirements indicators, stability, and support capacity visit and security are important, as a programmer need to evaluate the module in the system in which the operations environment, will be subject to the load pressure and a variety of potentially dangerous and malicious attacks possibility. On this point, a mature programmer at least 2-3 years of experience in project development and tracking have experience possible.

  1. Reusability, modular thinking ability

Some programmers have often heard such complaints, wrote a program a few years, become a journeyman, are repeated every day and nothing new to write code, this is actually the biggest waste of software talents in China where some repetitive work into the main work of skilled programmers, and these, in fact, is completely avoidable.

Design reusability, modular thinking is to complete any programmer in a functional module or function of the time, to think about many, not limited to the completion of the current thinking on a simple task, think about whether the module out of the system may exist , can be directly referenced in other systems and application environments by simply modifying the parameters of the way, so that we can avoid duplication of development work great, if a software development unit and the working group were able to take into account in every development process these issues, then the programmer would not have wasted too much time on repetitive tasks, they will have more time and energy into the code to work in innovation.

Some good code program modules, even if written in the 70s, get into some of the system now functional modules can fit inside as well, and now I see that many small companies a software upgrade or improve it at every turn rewrite all the code, most of the repetitive tasks unnecessary waste of time and effort.

  1. Test habit

For some commercial development as formalized, 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 the sooner the problems identified, the lower the cost of solving the programmer in each code, each sub-module for serious testing is complete, we can try and resolve some of the earliest discovered potential problems, so that the efficiency and reliability of the overall system construction will have the greatest promise.

Testing actually need to consider two aspects, one is called the normal test, that is, to see whether the procedure can be completed in the normal call to the basic function, which is the most basic test duties Unfortunately, in many companies this has become the only test tasks in fact it is much worse; a second aspect of the test is abnormal call, such as stability tests under high pressure load, under test potential abnormal situation the user input, the partial failure of the overall system where the condition of the affected module tests, frequent exception request module stability test when the blocking resources like. Of course, not programmers want to own each piece of code that need to be such a complete test, but the programmer must clearly understand the status and performance of various tasks needs its own code in the overall project, targeted and related tests identify and solve problems as soon as possible, of course, this requires understanding the needs mentioned above.

  1. Ability to learn and summarize

Programmer is talent can easily be eliminated, it is easy to fall behind the occupation, because a technology may only have a couple of years in 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 study also have to find the target, some small coding some codingTO is such a coding are just some Cfans, they also relish in their ability to learn, one will learn asp, while learned php, while learned jsp, they put this as bragging, blind pursuit of some of the superficial surface of things and nouns, do not understand the communication transmission protocol network program, do not understand the interrupt vector processing applications, such as 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, the completion of a piece of code should have a program to track the status of applications and user feedback purposes, at any time summary, to find their own inadequacies, so gradually increase, a programmers only likely to grow up.

A programmer does not have the growth potential, even if short-term view is a master, it is recommended not to use too, because he left behind when soon arrived. People with the quality of all of the above, it should be said to be qualified programmers, please note that the above is not all the qualities determined by the IQ nor the university can learn some of the textbooks, the programmer needs only to myself understanding of the work, a sense of the problem.

Senior Programmer

So as a senior programmer, so that systems analysts, that is, a program designer for the project, it should have all of the above in addition to the quality, but also have the following qualities:

  1. Demand analysis capabilities

For programmers, the understanding of the requirements to complete a qualified code, but R & D projects for the organization and management, they not only understand customer needs, more often, but also to develop some of their own needs, Why?

In general, research and development tasks, perhaps as customers demand, perhaps the market demand and marketing departments, this time for the R & D department, they see the demand is not a complete, general, the demand is just some of the features requirements, or some more formal, the user may get a complete view; but this is not enough, because the customer due to the non-technical factors more, they may be difficult to make a complete and clear, or professional performance requirements, but for project organizer and planner, he must be able to clearly recognize the existence of these needs and propose appropriate time to complete the needs analysis in the report, while a complete and clear instructions embodied in the design of the inside, so as not to lose time programmers coding these guidelines.

The programmer must correctly understand the environment in which user needs and make specific demands analysis, for example, is also a way of software distribution and publication by License, may demand performance is differentiated by ASP hire ways, the former stressed it is better support and stability, while the latter may be more universal and emphasis is mounted in a variety of simple platform.

  1. Project design and process capabilities handling

Programmers must be able to master not less than two to three kinds of project design (such as design method to lower the top, such as rapid prototyping, etc.), and be able to choose the right design method based on project needs and resources with the overall design of the project. Inappropriate choice of the design method will delay the development cycle, a waste of R & D resources, and even affect the research results.

A programmer also need to use a lot of effort in design and process flow chart, he needs to do to establish a data flow diagram data dictionary; he need to be processed to form a logic flow diagram of the overall system processing flow. A flow system in question, even if the code more beautiful, and more refined each module, it will not be a good system. Of course, good process analysis and choose the good project design, needs to have enough grasp on the needs analysis capabilities.

  1. Reuse and modular design decomposition

This seems to be old tune, not already on the basic quality of the previous illustrates this problem? As a programmer in the module task, he needs to reuse modules for specific functions he faced to be considered, and as a systems analyst, more complex problems he has to face, the need for overall system according to one modular analytical decompose any functional modules and functions can be multiplexed, and formed a separate design requirements for each module. For example, like a car production, the first installation of each car are independent, each part is tailor-made, but then not the same, large-scale production machine, and a car plant to start production of cars through the pipeline , began to have some independent components reusability, 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, automobile production efficiency is maximized. The same is true of software engineering, a mature 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 modules (such as opening files, saving files, etc. etc.) the same set of functional modules are reusable, which in turn provides an interface through a number of libraries to the desktop application developers to easily mount, this is the reuse of the module design obviously a testament to this.

A large, complex application system is divided into a number of relatively independent, with a high degree of reusability, and can only rely on a combination of several modules for data connection parameters, as a senior programmer and systems analyst one of the most important work, appropriate project design, a clear flow chart is an important guarantee to achieve this goal.

  1. The ability to assess overall project

As a system designer must be able to proceed from the overall, the project has a clear understanding of the whole, such as the company's resource allocation is reasonable and in place, such as whether the project schedule to maximize efficiency but also not reflected not be completed on schedule. Assessment of the overall project and the workload of each module, resources, difficulty required to assess the project evaluation project may encounter, need a lot of experience, in other words, this is a constantly sum accumulated in order to reach the realm. In some Western leaders in software system design is very elderly, such as 4,50-year-old, or even older, they have been far less active as young men in terms of coding, but in terms of project evaluation, they are decades the experience is the most important and valuable asset. China lack such a generation of programmers, mainly the kind of age is not the lack of programmers, but programmers are basically the kind of older units to come study, is not made from a professional software development products to come, they It failed to gain experience of the kind of product research and development, and this is no way to do.

  1. Team organization and management capacity

The completion of a project requires team work together as a project designer or person in charge of research and development, they should be able to play to maximize the team's overall strength, technology management because of its professional nature, not Datong personnel management in general, because it which designed a number of technical indicators and factors.

The first is to quantify the work, did not quantify it is difficult to achieve an appropriate performance review, and not a simple procedure to quantify the number of lines of code can be calculated, thus requiring technical managers need to really evaluate the complexity and workload of a module.

Followed by the adjustment of the team collaborative model of collaboration in general, program development is usually divided into teams carried out, the group has the main programmer mode, there are democratic ways, according to the ability level of the gap between the programmer and project development in accordance with needs, choose the right team approach, and can work tasks and responsibilities and rights of members closely, so as to maximize the efficiency of the team.

A high level of code that people may not be able to become a qualified director of project development, lack of capacity in this area is often overlooked.

In summary can be seen as a responsible person in charge of research and development, a project designer, quality and capacity is not the ability to write program code required to have, of course, under normal circumstances, a programmer by continuously improving reached this summary kinds of qualities, he has the ability to write code that has also been quite simple, but please note that there's a causal relationship, a high level of project designers usually have a very good person writing the code, but the code is not a very good programmers to be competent project design work, the existence of which there is not a problem IQ and textbooks, or that a programmer did not realize what areas should be thinking of things when the accumulated experience, and gradually improve, there is no conscious carried out on the organization of the project and reuse of design figured out, there is no regular habits and summary documents used to, do not change these, our qualified project designer is still very lacking.

In addition, to prevent boring people like me seriously, add that, this paper aims to make commercial software projects and engineering, programming experts who research institutions, such as experts algorithms, such as image processing expert, whose job is to study topics rather than directly to complete the Business software (indirectly, of course, eventually becoming a commercial product, such as Microsoft Research in a research project), so they stressed the quality may be another thing, these people (experts), and can not be said to be a programmer, programmers can not use the standard to measure.

Finally, add a little something, a software development project design process is like? The usual standards of design methods, for example, (but I like the rapid prototyping).

  • The first step is market research, technology and market to combine in order to realize the greatest value.

  • The second step is to demand analysis, this phase requires that three things, user views, data dictionary and user manual. User view that the software users (including end users and user management) can see page style, which contains a number of operations which aspects of processes and conditions. Data dictionary is to specify the logic and data to collate the East, completed a data dictionary, database design was completed by more than half. It is specified in the user's manual operation flow instructions.

Note that the user operational processes and user view is determined by demand, and therefore should be completed before the software design, complete these constraints and provides a yardstick for the research and development program, unfortunately too many companies are not doing so, cause and effect reversed, order regardless, development and practical needs are often therefore estrangement from the phenomenon.

Needs analysis, in addition to the above work, I think that as the project designer should make a complete performance requirements of project specifications, performance requirements since it is often only skilled people could understand, which requires technical experts and the demand side (customer or company marketing department ) can have real communication and understanding.

  • The third step is to outline design, the initial division of the system function modules, and gives a reasonable R & D processes and resource requirements. As a rapid prototyping method, to complete the outline design can enter the coding phase, this method is commonly used because it involves research and development tasks belong to new areas, a technical supervisor can not give a clear up the detailed design specifications, but does not mean that detailed design specification is not important, in fact, rapid prototyping after completing the prototype code, according to the summary of the evaluation results and lessons learned, but also to re-step detailed design.

  • The fourth step is the detailed design, which is an important test of the level of technical experts to design thinking, the detailed design specification should be most specific module 'clean' manner (black box structure) to the coder, the overall system is modular so that maximum ; a good detailed design specification, coding complexity can be reduced to a minimum, in fact, strictly speaking the detailed design specification should be defined for each parameter for each function are provided fine fine thin out, from requirements analysis to complete the outline design to detailed design specification, a software project should be finished become a half. In other words, the completion of a large software system in half the time, in fact, has not started a line of code work. Those who make software programmers to write code that is simple to understand, it is fundamentally a mistake.

  • The fifth step is encoded in a standardized development process, the coding process in the entire project up to no more than ½, ⅓ of the usual time, so-called quicken power, good coding efficiency of the design process is completed will greatly improve the progress of coordination and collaboration between the different modules is the need to be careful when coding, perhaps a problem of small modules that may affect the overall progress, so many programmers forced to stop working and wait for this problem in many R & D process have appeared. Microsoft mutual communication and emergency means of settlement when the codes are very important for programmers, bug forever, you never have to face this problem, the famous, can be had for three consecutive months when not send patches ? there has never been!

  • The sixth step is to test

There are many test: performed in accordance with the test side, can be divided into internal and external testing; according to the test range can be divided into test modules and the overall FBI; according to the test conditions, the test can be divided into normal and abnormal operating conditions where the test; in accordance with the input range of the test, the test can be divided into full coverage and sample tests. Above it is well understood, not explained.

In short, the test project is also a step in a very important development for a large software, 3 months to 1 year of external tests are normal, but also because there are always unexpected problems.

After completion of the test, and complete acceptance of some help to complete the final documents, the overall project be considered an end, of course, ultimately, future upgrades, repair work, etc., as long as do not want to get money through a one-shot deal, it must constantly tracking software operations continued to upgrade and repair the situation, know that this software is completely out of date.

These steps are not really show off what to write, because I tell you the truth at hand is a "software engineering" in university computer science this is a required course, but I know that many programmers never seem only interested in what "proficient 30 days VC "and the like, some of them, like me, came from the guerrillas, no formal learned profession, and some are long enough credits in the mix really useful to put these things back to the teacher.

fans of voices to confuse the public, in fact, the real roots of technical experts rarely post on the Internet, such as the author bragging, in fact, what it is not really a master, but could not understand this kind of technology, the program members of misunderstanding and nonsense, had to come forward and do the things right words, I hope also those fans who can seriously think about it, go on the right path, after all those clever mind is far achieve the desired value. Indulge in some coding errors people

Upgrading from programmers to engineers, most people like this I have a strong interest in software, after graduating from turning back into the business, and began programmer career. At that time, we obsession "bible", "Cheats" category of books, only the hearts of the code. When I see a line of code into a line of boring equipment can call into a beautiful form on the screen, turned into a beautiful music, tremendous sense of accomplishment. I also feel a great programmer. Working hard and making for three days to solve the bug in the software of the user's machine room, it has become a kind can boast qualifications. Five years ago, one day, after I had handed over excites me proud of a lot of code and very little documentation, came to Huawei. There are more young people, I like a duck, can give full play to their imagination. Is still the code is still in a hurry to write down on paper the fleeting inspiration (we call it the document), still endlessly and bug fight. When one day, a new colleague took my name Department documents carefully to ask me, I found myself like a little not recognize it. I was a little frustrated, and then look at the code and found some inspiration recorded on the document was unrecognizable. I did not know who new colleague how to feel, but I have since then, what seems to realize. Now we look, then a lot of things are less effective.

Late last year, I learned in India engaged in project development, learning Indian software development management. One kind of returning to the impulse to rise in my heart. I talked to Indian engineers in the learning process, their conversation filled with confidence. They explained to me was doing the testing environment of the software, to show me what they write unit tests documentation. When I see a software module unit test cases of more than three hundred pages, I felt my heart was very heavy. When I set foot on this land the third time, I saw the familiar people, bright eyes, gentle smile, casual wear, maneuvering the motorcycle, and the university campus wearing slippers, books hugs young .

I also saw my project manager, a taller, thin young man, said to be back from the States, has been working for five or six years. I listened to my heart very happy, this time to a one-trick to learn hands. Time is one month needs analysis, project managers and we (in fact on behalf of clients) to discuss the contents of the proposal, determining each are required. Then he took a little roughly divided into modules, entered the learning phase plan. Everyone in the learning stage to write the film functions described, to explain to other people, unconsciously, everyone on the project team has overall understanding.

He also arranged some training, such as their company's software development model, the project team in the definition of the role, after timely training constantly, as long as there is demand in the project team, he always qa or related person hired, training is profession. After completing a needs analysis submitted a forty-page document, when I saw this document I wrote the English part neatly listed in it, I feel very complicated, some joy, but more is bitter, how come I've never done it needs analysis.

In the process I wrote the document, qa writing to us trained srs template, and then I still do not trust them an experienced engineer to write for a while, and then we write wondering shining. Although this is srs co-wrote more than one person, but the same style, informative. More valuable is, until the last, needs analysis of the content of this did not turn over, so we do not have the opportunity to go about their needs change processes.

Needs analysis is the first phase of the project, the second phase of development time to be determined based on the results of the needs analysis. When the other party's chief technology officer (equivalent to an overall leader in our sales department) to discuss plans with us, they have a list of predicted number of lines of code for each module, the risk may exist. According to their company's productivity - 300 lines / person-months, he came to the second phase of the project how many weeks.

At that time, we raised an objection: 1) Company urgent needs of the project; 2) whether the row 300 a month too; 3) we have to download the source code for reference. He explained that the 300 lines / man-month project is to enable them to achieve the quality standards of empirical data, taking into account the reference source code, the productivity of a maximum of 350 lines / person-months.

When he asked the productivity of our company, my head turned three laps, did not dare to say, about 600 to 700 okay. He was silent for children, then said firmly, our plan is built on the basis of ensuring the quality, I want you to India to develop software, first saw India should be our company's quality assurance. I know you do not lack of software developers, why do not you choose to download the software yet. A few words to my pain, now our brothers are still using the downloaded software portability products running around it!

Subsequent development activities in an orderly, we honestly follow suit. System test program, use cases, the outline design, integration test plans, use cases, detailed design, unit test plans, use cases, coding, unit testing, integration testing, system testing. V A complete model development process, in which each process has a review. When we do not quite understand some of the design methods, the project manager sent us the relevant information, I do not know how he was thinking, some basic analysis and design methods is ten years, or even 20 years ago the book talked about software engineering, professional staff each computer is compulsory in India such content. And we in addition to some specific protocol code very well, these commonly used methods seem to know nothing about. I feel some shame, went straight to the bookstore into the city, he gave me a list of books to find out, in bed at night, read carefully, as if I had suddenly encountered a mentor can give me figure it out. Now India has formed a strong learning culture. I come back to sell more than 700 books, these books teach us how to use engineering approach to developing software, it is to become a software engineer must-read information.

Planning and control capability our strong project manager, when what impact the project happen, such as resignations, lab moving, some inaccuracies module (This module is our forecast), he always take the necessary measures to reduce delays, adjust the plan. At first, we went downstairs to drink them every day at 11 am, 16:00 coffee a little advice, but later went along with drink, original, very rich exchanges when drinking coffee, from project management to design approach, from technology development to customs, all-encompassing, mutual understanding between us, helpful atmosphere on the team. qa our project is also the right time in front of us, we work only some of her perceptions. Every time she participated in the meeting, often holding the hands of a check list, project managers prepare the appropriate information to answer some questions, hook her name or written explanation of the project manager. She gave us the time to do the training is also very patient, reflecting the great professionalism, I'm still I miss her to give us help.

I am engaged in software development for four years, but I still can not say that he is a qualified software engineer, what qualified managers not to talk about. I saw one report that the authorities in Lausanne, Switzerland a comprehensive competitiveness of China's science and technology transferred from the original dozen thirteenth, because they adjust some of the evaluation criteria, which is a qualified Chinese engineers availability is very low. Brothers thought bloodshot eyes, tired running around the figure of an upgrade, I have a strong desire: Get out of our own to upgrade qualified engineers now!

Guess you like

Origin www.cnblogs.com/burningmyself/p/12115716.html