Several stages of software developers ' thinking and summarizing

Source: Internet
Author: User

Recently in the understanding of the development of things, feel some text on the developer's summary and thinking quite good.

People who enter it are the basic quality of good people, but it industry seems to always lack the right developers, why this phenomenon, the key is the lack of suitable developers, that is to say we do not lack of developers, but to identify senior or professional personnel, so that our overall human advantage can not be reflected , here is my own experience in the process of the development of software developers during the work.
First of all, describe the classification of the development process of the IT staff, and the approximate relationship with the working hours (the following views are personal)
Stage name Working life
1 entry-level undergraduate 1-2-year graduation and newly graduated postgraduate
2 intermediate graduates 3-4 years and 1-2 years of postgraduate graduation
3 Senior staff graduated 5-6 years and graduate 2-3 years
4 Architects graduate 7-8 years and graduate from 3 years
5 Project managers graduate for more than 9 years and graduate from 4 years

This is a general phase based on my experience and a brief correspondence with the work qualifications of the developers. There are a few points to note about this correspondence,
1 Undergraduate graduation refers to the software engineering major, or related majors, some university computer science and other professional and software engineering major is very different, such as software professional emphasis on data structure, algorithm, software engineering, operating system, database design introduction and other professional courses of study, Other computer-related majors do not have these courses, in which the data structure, algorithm, software engineering on the developer's ability to work and development impact is relatively large.
2 Now, although the number of undergraduate and graduate students increased a lot, but from the overall capacity of the level has declined a lot, which is related to the whole social atmosphere and its own quality. Overall, the current graduate work ability and 10 years ago, the undergraduate is similar to the current undergraduate and the original college.
3 Doctoral degree I did not add, mainly the research direction of the Doctor is too special, once the simple software industry doctor less, more than the professional doctor of other industries, these people are characterized by a high overall quality, there are many people, in the development of the software professional knowledge of the master to be proficient in a lot of software, But more attention to the details of software development is not enough, and often these details can bring great risk to the project, so it is not very good to do a standard.
4 The project manager was the last one I wrote. This position and other positions do not seem to be a series of, but in the actual work, the technical staff ultimately development is this position, if you have a good technical background and project experience, becoming a project manager is not a difficult thing, butIf there is no solid technical foundation prone to the phenomenon of layman leadership, the result is superior pressure, subordinate, both sides of the problem.
Okay, that's a lot of crap, let's get to the point. There are many ways to evaluate a developer, and I will generally evaluate a developer's ability to work in several ways (only the ability to evaluate, not the attitude, and the work attitude of the developer in the actual work has a great impact on the ability to work, which we must pay attention to). A code writing ability, b design ability, c debugging ability, D document writing ability, E research ability, F code reading ability, as senior technical personnel also need G project management ability (including communication ability, project control ability, etc.)


We have graduated from the undergraduate staff to tell the different development stages and related performance of developers
1 Entry-level undergraduate 1-2-year graduation and newly graduated postgraduate
The entry level of the work is just graduating from college undergraduate students, generally they do not have too high ability to work, technical ability is their weak point (China's education is really a failure), their advantage is their mentality, now the undergraduate generally understand their employment situation, So once you give them a chance, they tend to hold on and work hard. If you can really work hard, after 2-3 years, their practical ability is often much stronger than the graduate students. All right, just say it.
Disadvantages:
1 Code writing ability is poor, generally in the university 4 years of all lines of code below 120,000 lines (this number 10 years ago the undergraduate is unable to graduate), another important issue, a single program of less code lines, basically around 1000 lines, lack of large code complex program programming experience, And in the actual work of 2-3 thousand lines is impossible to be an effective system. Because of the small amount of code, their understanding of many theories is largely based on paper. Because of the neglect of the basic theory, which caused them to be in the development of the rush to code, rather than design, the effect is to write a lot of chicken code. This is a disaster for other developers, and the evaluation of their code directly strikes the confidence of these people.
2 design capabilities, although the code development environment is more convenient than 10 years ago, but due to the limitations of the code, they do not have a clear understanding of the overall structure of the system and anomalies, they designed the system in normal use normally can run normally, but once encountered abnormal situation is completely unable to use, and the resulting problems, Serious time will not only affect themselves, but also affect other modules, and even cause the whole system to crash. So generally should not let them do too large system design, another need to be particularly explained a problem, the use of design methods is a great lack of them, such as the design of the database structure using the forehead method, setprocess-oriented programs do not use flowcharts, and design object-oriented without using UML is their hallmark.
3 encodes, does not debug, does not detect problems, does not analyze the cause of the problem, and troubleshoot errors. When the testers raised the problem to them, they generally did not first check their own code, but the problem to others, what testers test data is not standardized users will not be so perverted input these wrong data, what this is the above interface transmitted data, he passed the wrong, I have no way to deal with and so on. Even if it is determined that their problem is, how to reproduce the problem, the methods and means of locating the place where the problem occurs are what they lack, often helpless.
4Basic lack of document writing awareness and ability, as if the final outcome of the project is code, do not know what the document can play a role, do not know how to write, solve the problem, the most favorite way to discuss the problem is to shoot the forehead method and direct communication, so you often in the project into the stage will see a few new developers in a mess together. And the content of the discussion is nothing more than that, the last agreed to do so, how to change now, or, you do not give me anything, my function can not go on, and so on ... And these things are really a problem that should have been solved when the program was discussing and writing the relevant documents. Because they do not have the ability to write documents, they often cannot describe a business process or process, (experienced developers can write them directly to you without the help of documentation, which is reflected in their brains by thinking and documenting the process).
5 Research ability, just participate in the work of the developer is not to do research work, do research and technical personnel should be the project team of the most skilled staff, unfortunately in practice is not this appearance, a lot of just the beginning of the technical staff did not undergo any training is sent to do research, do the system to investigate what content, How to communicate effectively with customers, or real needs (rather than superficial needs). It is a question of how these needs are correctly expressed in words without ambiguity, and the 40-50-page requirement document is the first signal for a project to fail.
6 code reading ability, which says the code reading ability is not to say in reading what "Java applet" and other books in the book of the understanding of the code, for a good developer,the real code reading ability is that you can read the real system code, and even in the absence of any technical documentation and program annotations of the code reading, can through the reading of these code to understand the system architecture, system operating procedures and find errors in the program, the ability to read the code is very important, But unfortunately, just graduated developer code reading ability is basically zero, an entry-level developer who can understand the code of the Java applet is pretty good. It is virtually impossible for them to read directly the code of 2000 + lines of application system.

Having said so much, it is estimated that many of the technicians who have just joined the work are going to be angry, now let's look at their merits .
1 The mentality is good, can accept other people's opinion, especially the veteran's opinion (certainly to the same class other people may not be able), do not underestimate this, whether is good at accepting others ' suggestion to the developer's growth is extremely important, but the entry level developer at this point is often the best.
2 have a job enthusiasm, willing to work overtime. overtime is not a good way to work, but it is important for the developer who is just getting started, efficiency * time = Work result. If the efficiency is very high, the working time is small, the work result is not bad, but since our new staff can not improve work efficiency, but may improve the working hours of the method to ensure the work results, in addition, with the increase in working hours, work experience is also increased, and this will make your productivity gradually improve, Let's assume that a staff member works more than 1 hours a day to calculate, 220 business days a year, and if you can stick to how many times you are better than others, you can calculate it yourself. (Why do the rookie see the veteran is what unattainable, you calculate to know)
3 You can make mistakes, new people must make mistakes, even low-level mistakes, and because you are young, you will have more opportunities, so this stage of technology can use their own sometimes try various methods.
These are some of the characteristics of the people-level it developers, and how to quickly help them become a good developer we'll introduce you in a future article.

2 Intermediate graduates 3-4 years and 1-2 years of postgraduate graduation
Intermediate developers generally have a certain coding experience, generally speaking, if your work is more full, a mid-level developers should have about 780,000 lines of code, their use of a language has been more experienced, the system architecture has some understanding, as for the document, They have now written only useless documents, why they write documents that are useless, mainly because they do not have a deeper understanding of the role of the document, they can clearly say that in the development process need those documents, but the documents should include those content, This content is not very familiar to the future development can play any role. That's why they're writing documents more to deal with unit checks than on development, and many developers have been in the middle of development (sometimes for years or even more than 10 years) because the problem has not been overcome. Well, let's talk about some of the features of intermediate developers.
1 Code Authoring capabilities: Emphasis on language differences, is Java or. NET good, is they are keen to discuss the question, but to some of the basic theory of programming, but little attention, they have been using the development language for more than 3-4 years, will be more proficient in a development language, and can produce a lot of code in a short period of time, For example, in a day to write 1-2 thousand lines of code is very normal for them, but the quality of the code is not good to say, the cause of this problem sometimes roughly two, an understanding of code programming norms, such as what is high cohesion low coupling, how to improve code reuse and other issues, As a developer without regard to these issues, the code quality is not very high, another problem is the research, design quality of the impact of coding quality, we develop the actual situation is that developers are often research/design/coding Shi, if the front of the research and design problems, Inevitably reduce the effectiveness and quality of the code. Finally, one is that the ability to quickly master a language development is an important capability for mid-level developers. If you can't quickly learn a new development language and use it to develop new systems, you're probably not a good mid-level developer.


2 Design Capabilities, it should be said that design competency is the main difference between intermediate developers and junior developers. But the reality does not allow us to be optimistic. The design ability of our mid-level developers is now restricted to the project, which has produced a great resistance to their development, and the main performance is the irregular design work. Sometimes it's like a joke. Let's give some examples.
1 does not use the formal design method, in the process-oriented design does not draw the flowchart and the DFD diagram, the object-oriented design method does not use the UML, the design database does not know 3NF and the bcnf and so on, the best use method is pats the forehead to carry on the various designs.
2 A variety of design methods mixed, a moment to use a process-oriented approach, a moment to use the object-oriented approach, there is a flowchart and system structure diagram together, in short, the best design is a mas, if you ask him why he did so, he will always tell you to draw clearly, In fact, this is the basis of the design method to master the poor performance.
3 hierarchy is not clear, a single level of complexity, intermediate developers a measure of whether it is possible to complete a task independently, this is the primary and intermediate technical staff of the landmark difference, independent dealing with the problem, the most important one is whether complex problems can be simplified, And the most common method of simplification is to divide the problem into different levels, simplifying the complexity of the same level, from the design of the flowchart, is based on the complexity of the problem, layered drawing, and the same level of processing modules should not exceed 8 items, so you can control your program well. If the system is indeed complex, you can continuously refine the processing module down to the lowest layer of processing module.
4 design can not be combined with the code, whether the use of the design method, good design is able to correspond to the code, if you do the design report is very detailed, design reports can even and code line-by-row correspondence, if you can not do this, can only show that your understanding of the system and design is problematic
5 can not explain the detailed process of processing, the so-called detailed process refers to whether the computer can be said to do a thing step, if you can say the computer every process step (the most detailed steps can be fine to the value of the variable), if you can really say that you have a detailed understanding of the system and consider, In general, the code you write is less likely to be problematic. By the way, this is also an inspection method for the outline design and detailed design.
6 regardless of the system anomalies and exception handling, there are two questions, one is whether you are familiar with the customer's business processes, and processing methods, if you do not understand the customer's business processes, you can not find that there are anomalies and the handling of these anomalies, and in the actual situation these anomalies will always appear, If you lack the consideration of these problems, then you are ready to constantly revise your code.
7 interface problem considerations, and design is an aspect of the developer's ability to reflect
In the middle of the development of the thinking, there will always be the use of their own ideas to replace the actual needs of users, for example, they always say, I think the customer should be how, or say, what the customer needs what function, with some vague, uncertain statement description system is a middle-level personnel a feature, And these vague languages are a sign of the failure of system development.


3 Document editing capabilities:As a mid-level developer, are you able to do your design work without coding while the system is developing and just using documents? I think a lot of people can not do this, in our actual development environment, it seems that the development ability is the code to write, but in fact, the writing ability of the document is the most important, how to write a document, how to let others understand how to write the document, how to make their own documents to become a real effective document, These are the basic qualities that intermediate developers should have, and the quality of the documentation is a manifestation of your design capabilities (no good design ability is impossible to write a good design document), the other is a reflection of your writing skills, if you can only do, but not express, How can you lead a team to complete a complex project.
4 Research Ability:80% software project failure is due to the investigation of the problem, this statistical results fully illustrates the importance of research capabilities in software development, generally speaking, research work should be done by a project of the most experienced staff to develop, but unfortunately, in our actual development is often not this way. How to investigate? Research the content? What are the steps for research? How detailed should the investigation be? These questions should be very clear, otherwise you will not be able to conduct effective research, our developers generally in the survey system often submitted dozens of pages of research documents, if more than 100 pages can be considered to be very successful, This is the middle-level developers in the research performance (if you can provide more than 100 pages of research reports must be good intermediate developers), in fact, this degree of research reports are very vague, this vague research report can not meet the needs of actual development, and in the development process is difficult to carry out supplementary research, So in the design and coding phase will show obvious phenomena, such as developers in the design phase of the head to determine the function or in the code when the constant quarrel is the performance of imperfect demand.

5 Debugging Ability:3-4 years of work developers should have mastered the basic methods of debugging, but they are faced with the problem can be mastered and the ability of others to co-develop, several people cooperation development, interface problems, problem positioning on the test of intermediate development is relatively large, In particular, the ability to locate the exact place of occurrence of stability is a sign of the ability of intermediate developers, and the ability to help others with debugging, debugging in a code you don't know much about, and discovering the regularity of the problem, is important for an intermediate developer. Especially when debugging those nonstandard code, it is the middle-level developers often have to do.


6 Code reading Ability, mid-level developers have some code reading ability, otherwise he can not and other developers to joint development and joint debugging, but the intermediate code personnel lack is fast reading ability, and other language reading ability (refers to those who have not studied language). So mid-level technicians are most afraid of the development platform changes.
Said so much. About the intermediate technical staff to say a bit of their own views. Intermediate technical staff is a connecting class, on the one hand they want to complete their work, another aspect they want to complete the dissemination of technology, with the gate level of work is usually one of their formal or informal tasks, but unfortunately: because of their technical level now, often let new technology personnel go more detours. How to improve their technical level is the most important problem they face. It is also important to emphasize that the methodology (the method of doing things) is often better than doing specific things, but this is a problem that many technical staff neglect, which caused our technicians to always be at a low level in the loop, rather than spiral up. Because there is no way to do things, intermediate technical staff are always a little afraid to accept new, they are unfamiliar with things. Because of their own technical foundation is not reliable, will encounter many technical career failures, failure of development experience and do not know the reasons for failure, unable to find an effective way to solve the problem, resulting in a large number of mid-level actual personnel leave the technical post (don't tell me code can only do 30 years old, I have seen a lot of 50. 60-year-old software developer). and formally because of this level of technical personnel and technical level can not meet the requirements of development (including technical and other aspects). Make our software development process is very irregular, and this kind of nonstandard often will cause the project failure, from a certain extent, the technical level of intermediate technicians to improve and ensure a certain number of qualified intermediate technical personnel is to ensure the success of the project, enterprise development Important factors.
Let's talk about the improvement of technical level for intermediate technicians.a personal view
1 emphasis on methodology
The biggest difference between mid-level and junior staff is that intermediate developers should have mastered a certain development method and not only the use of a certain tool, to know the reason why. If you're not paying attention to the improvement of your working methods, you can only be a low-level developer and keep on going down the loop, and it's easy to lose interest in development. For example, no matter how the development method has the abstraction of the problem, how to abstract the nature of the problems is very important, many developers in the discussion is not abstract, or the use of the abstract method is not correct, become air-to-air missiles. In such as how to reduce the difficulty of the problem, when you write various technical documents and code development when the problem can be layered, good hierarchy can not only reduce the difficulty of the problem, but also increase the flexibility of the system, when the system needs change can reduce the difficulty of solving the problem, These questions are questions of methodology, one of the simplest questions, how to write a document, how not to leave anything behind, how to keep the structure of the document clear, how to make your document non-kuse so-called pure technical documents, how to check the document these are some methods and tips, Whether you have mastered these methods directly related to your future technical career is really a problem that cannot be taken seriously.
2 pay attention to communication, do not engage in technical blockade
A recruit to eat all over the day, it is a Chinese old adage is very reasonable, mastery of a skill is really important to us developers, but if it is understood that the technical blockade of others is wrong. Since there are two, the first technology development soon, in the IT industry basically does not exist a technology can eat a lifetime situation, and network development makes your blockade basically become an impossible. Tell me a story of my own technician, 2005, when I recruited a tester, and at the end of the year I asked him to learn QTP automated testing techniques. This comrade study very seriously, quickly mastered the use of the tool, and then I let him summarize the experience to write a summary, will be in the study of the problems encountered in a summary. It is strange that he did not write for a long time (his usual efficiency is not so), and then in a chat when he told me the real reason, the original is his mother told him, if these things are written out and published on the network, afraid of the future has an impact. Knowing this, I told him very clearly that first QTP this thing was a momentary tool, not a tool of the world. I have worked for 15 years, the development platform has gone through the dos-win30-winnt-win2003, the original development tools and code is now unable to use, so there is no need to secrecy. In addition, if you are willing to share your knowledge with others, you can expand your circle of friends and create a better environment for your technical career. Later, he completed the summary of the use of QTP, at that time to answer a total of more than 80 in the use of QTP will encounter problems. This electronic document he published in the www.51testing.com on the Test forum. The result is also good, first caused the attention of the owner, he raised from the junior comrades to senior comrades-in-arms (I now or junior comrades, haha). Then a lot of friends asked him questions, then a friend in Beijing about him Saturday, Saturday to lecture, 500 yuan/day. Haha, the effect is very surprising. Therefore, as an intermediate technical personnel, you should pay attention to communicate with others, and constantly summarize their experience and others to share, the simple technical blockade of both the development of individuals and the project team has no advantage.
3 Stone of the mountain can attack Jade
To become a senior developer, there are two areas of knowledge that must be available, one of which is expertise, including knowledge of development platforms/tools, understanding and use of the development process (software engineering). Another aspect is the understanding of the customer's business process. It is difficult to be a good senior technician if you only understand the simple development knowledge. Our current application system should be combined with specific applications to become a truly practical use of the system. such as office automation system you do not understand the state organs of the rules of the flow of documents, do not understand the ERP system financial systems, logistics management, do not understand the mobile phone development communication systems, user habits can not ensure that your system is in line with the real needs of users, Therefore, as a mid-level developer to develop into senior technical personnel in addition to the knowledge of development expertise, will need to develop the industry knowledge of design, industry norms more understanding, and this understanding on the one hand through a variety of industry documents to understand, another important aspect through and customer communication to understand.
4 Pay attention to the training of emotional quotient
As a mid-level developer, its interaction with the population than the initial development of a wide range of people, from a wide range to divide, there are customers, company managers, technical personnel, and each type of personnel can be subdivided such as technical staff, senior technical staff, the same level of technical staff (intermediate technical staff). Low-level technical staff, due to different roles, the content and manner of communication are very different. Even if the same type of people, due to the different temperament of each person, the way of communication is also very large, as intermediate technical staff can and other collaborators, deal with each other, the use of other forces, is the key to further development, and your EQ at this time is often more important than your IQ.
In short, the situation of middle-level developers will often determine the development of a unit and department, they are the backbone of the company's development, whether it will guide their continuous progress is a company and department leaders to pay extra attention to the issue. In my own development experience, the loss of middle-level personnel is not only a company or department of the problem, but the whole IT industry problems, many developers have to bear the middle-level developers without training to bear the work, because of the comprehensive ability of the problem, waiting for them is often one after another failure, And in seeing a lot of sales of peers, regardless of income and status and their differences, have changed careers, which further caused the loss of intermediate technical personnel. The overall quality of intermediate technical personnel and personnel loss is the real pain of Chinese IT staff

Several stages of software developers ' thinking and summarizing

Related Article

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.