Reliable work in software development

Source: Internet
Author: User

For medium and large software development, team development is inevitable, and division of labor and cooperation are indispensable for team development. In team development, of course, everyone's abilities are very important, but I think trustworthy work is the primary condition for team development and the basic guarantee for the existence of team development. Without trustworthy work, there will be no division of labor and cooperation between teams. Even if a team exists, it will become a highly-consuming team. The cost of management and coordination exceeds the team's advantages, the value of the team will be lost, and there will be no value.
Trustworthy work in software development refers to a module or task assigned to a group or individual during team development, which should have a trustworthy evaluation and division of labor before the start, trustworthy plans at the beginning, trustworthy feedback during execution, and reliable completion time during execution, after the execution, you must have reliable quality and reliable testing and subsequent supplementary development and correction work. On the contrary, it is an untrusted work or factor in software development.
The work of the team members in the development work of most new teams is untrustworthy. For example, a simple ionic, after the division of labor between the architect and the main programmer is good, it will be handed over to a group and a module, or give it to a person. Although there have been repeated complaints, we should be careful, and we should do a good job of detail. However, after each module submitted by an employee, after testing, many problems will be found and cannot be trusted at all. Sometimes it takes three days for a module to be handed over to team members for development. To correct their mistakes, I have to read all the code, the final rectification work seems to take three days, and most of these problems are caused by carelessness or carelessness. The vast majority of these problems will be repeated in subsequent work, even if you have reiterated it many times. When you give a job to someone, you can't believe that he can finish the job by quality on time. After the job is completed, you cannot confirm that the job is completed, or he thought it was done to handle the task. So that everyone thinks that the work has not been completed at the end, and the team cannot entrust the work to the team members. This prevents customers from entrusting their products to the company. This is a very serious problem, which may delay the construction period, delay the time, increase the development cost, and increase the team management friction. The heavy lifting may affect the product success or failure, and even the future of the company, therefore, we have to put trustworthy work at the top of all management tasks.
Based on my previous project development experience, I made the following arrangement and reflected the actual software development as follows:
First, before a task starts, the manager should have a clear and profound description of the problem, the task scale, requirements, and quality and constraints after development. At the same time, they have a clear understanding of the technical level, schedule, work efficiency and attitude of the team members, and know who can be competent and who cannot be competent. There is a clear picture of how work should be distributed, how much time is needed, and what will happen. This is a prerequisite for reliable work.
Second, after the task is assigned, the team members should ensure effective communication with the Manager before starting the development. Both parties have a consistent and unambiguous understanding of the task. Then, the team members should make basic plans and plans for the task, list the key points of the task and the sequence of division of labor, and make self-assessment on the task to determine whether the task is competent, the time and workload of the task are also estimated. And should be submitted in the form of a formal report. Although the Team is small, I personally think this report is indispensable, so I don't have to worry too much about the time and cost spent in such a report. Remember to sharpen your knife and never cut firewood by mistake.
Then, after any execution is started, there must be a regular return to help managers know the progress. The returned content should include the completed work, remaining work, and planned adjustments. And difficulties and omissions encountered during development. The return is not to catch up with the progress, but to get an accurate understanding of the information. In the return, managers cannot interfere too much with the work progress, but simply be aware of it. At the same time, members of any team should understand that trustworthy work is not only reliable in time, but also reliable in quality. Quality requirements are far higher than time-based trustworthiness.
Again, after the task is executed, a report must be provided: this report requires that the developer and tester be clearly stated. At the same time, the source code should be checked in. Because the team level cannot be completely consistent, tasks that cannot be completed can be found. However, the report must indicate what is not completed and why. Tasks that cannot be completed are allowed, but the tasks that can be completed must be trustworthy. That is, there are no functional omissions, no technical defects in quality, or any omissions caused by carelessness. At the same time, there is no significant deadline.
Finally, add the checked-in code to the framework for testing, and then perform a basic evaluation on the task. Based on the pre-development report and post-Development Report, and the actual quality of the software module to make an evaluation, the evaluation is objective and authoritative. And then make a penalty.
The above are several key points of trustworthy work, which seem simple and feasible, but are difficult to execute in practice. Based on the personal experience of leading the team, make the following measures.
First, let everyone in the team understand that a person's ability can be large or small, and the technology can be different. However, there is no difference between obedience and meticulous work requirements, no matter whether it's a technical master or an internship or a small dish, you can submit a task beyond your own capacity, but once you do it, you must do it well! Ensure that no problem occurs in every detail and can withstand testing and scrutiny. Every tester should understand the importance of trustworthiness and Earnestly Grasp the importance. At the same time, any bug that has not been rigorously tested should be evaluated. If it is caused by unforeseen factors, it should be punished. We recommend that you clean up people who are not competent for reliable work. Cultivating trustworthy work consciousness is the top priority.
2. leave sufficient room for allocation of work, taking into account the remedy after the occurrence of non-trustworthy work, and multiply the time coefficient by the difficulty and degree of sparsity of work. The general work can be multiplied by 1.2, the number of unfamiliar teams and jobs should be multiplied by 3. At the same time, each team member is evaluated based on previous work. Facilitate future work allocation.
3. Clarify the work content, scope, and quality constraints, and let the team members understand their task requirements, including functional and non-functional requirements, before division of labor, in particular, we should understand the quality constraints of non-functional components, such as Robustness Requirements, scalability and Robustness Requirements. Meanwhile, the team members are encouraged to improve the quality standards and detailed standards, and a clear Reward and Punishment System is determined.
4. Do not schedule a job or task too long. There should be a small-scale acceptance operation every three to five days to ensure that each team member can work reliably for a short term, because the untrusted factors will gradually emerge and accumulate, If you arrange a long-term work, it is often easy to lose control at the end. Short-term, non-trustworthy, easy to control and kick out of adverse factors.
Fourth, do a good job in reward and punishment systems. An untrustworthy job in a team should be a punishment point with heavier punishments. At the same time, each team should designate reliable supervisors and testers to ensure that the adverse factors are resolved at the underlying level, rather than at the upper level. Any small Bug in the program design process, how to deal with the lowest cost, and then enter the program development link, finally enter the test link, to the check in Quality Inspection link, submitted to the customer, after-sales service, each additional step increases the cost.
Fifth, the development is not active, and the test goes first. We tried to allocate a class library according to the interface, and finally combine the class libraries. We found that many people cannot test the library, development is performed, and then assembled together for testing. Some problems cannot be found. In addition, it relies heavily on the experience and technology of developers, which is very different. At the same time, the problem is submitted to the software for testing, which is easy to cover up the problem. It also increases the complexity of problem solving.
Sixth, to establish a good trust tracking system and establish a good quality tracking system, it is necessary to clarify every developer, tester, and any form of decision-making and contributor in each link. Record and track the cause and personnel of the problem. The quality system should not only track bugs encountered in software development, but also track the progress, time, workload, quality, and so on. In this way, you can standardize and document some common problems in the future, and help you grasp each employee during the division of labor and select employees in the future.

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.