Standardization and multiple talks

A user encountered a problem when using the system, but not confirmed that the system’s bug, then the problem passed the Weibo @ message at all levels to the product and technical team. In the feedback chain, every colleague needs to confirm that this problem has occurred in order to confirm whether it is true and the scope of the problem (you can understand why the Internet is so busy).

When this @ message eventually passed to the engineer’s engineer, he also need to test the question again. If the problem cannot be reproduced, the problem becomes more complicated, the engineer needs to position from a bunch of massive logs at the time of the user. This phenomenon is reasons. At that time, I found that the reason is that the data returned by a server is not caused, and that server may be due to a different version, and the user’s call cannot be returned normally. If you are also an engineer, is there a few familiar feelings?

Since engineers typing the first line of code, there is an error in each link in the development process. for example

The code may not be covered by unit testing. Of course, there are more teams without writing unit testing; the business process is not covered by functional testing; therefore when the end user discovers incorrect issues (such as the situation described by the document), The entire technical team needs more time to resolve.

The call mode, the parameter or logic is incorrect; when the service is maintained by different teams, the error probability will be larger; another team’s service is often only a few lines of writing, many parameters are unknown, you need The role of these parameters is speculated by calling the previous code or personally calls. At this time, if you need it, you will be able to transfer, and you will be submitted and published, because it has already begun to be too long for your joint time.

Published version, configuration, order, server, etc. are incorrect. Although everyone feels that there is a guidance document such as the online manual, the interaction of development and operations in the actual work may be through the IM tool, the development engineer said that the order of the online module is ABDC, and the operation and maintenance engineer is why Not a bit confused in this order of ABCD, but it is done in accordance with the order of development. In front of the next time, the development engineer did not mention the order of the line, the operation and maintenance engineer may be wondering, what is ABCD or ABDC?

In all cases, if each code is modified and published, it relies on the careful and considering of each engineer, and the quality of high probability is inevitable. Engineers are very frustrating findings often solve the same type of problem. The unit programming the whole process is more difficult to change, controlled by the program, and can reduce the problem from the source, so that software development is simple and enjoy. In the above example, the (1) test process can be standardized. (2) Standard more units in the service scheme. (3) Release process standardization. These points more about the maturity of each team project. The higher the degree of standardization in the team, the better the software reliability, and more energy will be liberated from various uncertain problems.

Say an example of the standardization of the 2nd point of service, the team in the team in recent years has intensively used the message queue, after several years of evolution, also achieves a variety of complex scenes within the system, such as multi-stage series Pub / SUB, in parallel, and real-time requirements, with customized various service pools to make task schedules, and have accumulated a lot of experience. However, standardized awareness and abstract abstract ability, business architecture and technology architecture have also lack of separate sites, so most systems are mainly for their own specific scenes, even if there are many valuable characteristics, they cannot be reused. When some newcomers go to learn Kafka, the old architect will also reflect on standardized issues. Of course, more than 3 years of technical teams will have these sentiments, and young teams usually immersed in the pleasure of building their own system.

Another example is another example, there is a technical post that said a US engineer Twitter technology interview failed.

Then we talked a small meeting about life in Twitter.

I hang up the second second. I realized that my answer is wrong.


Now I am self-friendly: What did I learn in this matter? Objectively speaking – not much. For the interviewer did not ask my correct question to guide me to think about the right direction, I am very sad. When my answer is actually incorrect, I don’t know why Justin tells me “this should be useful.”

It can be partially referred to the strict requirements of Silicon Valley Technology for Engineers. However, the situation in China is different. Due to some overheating of the Internet industry, qualified talents are in short supply, most of the job requirements are lower than those described above. Engineers have to have basic learning and imitation capabilities, such as referring to an existing software to achieve the same function, then this engineer can basically enter various Internet technical positions (of course, the work experience of the surface is also required).

In this case, the entire technical population is difficult to form too much consensus on code quality. In addition, most teams are business-driven (technology-driven phenanthus angles), and companies are limited to technical requirements. The well-carved software is better than the software that is supplemented by patching, so the wind of high quality software is not easy to form. The software inside the company can be reused in the case of a vicious cycle. For example, an engineer has a public component to solve some public problems, but another team finds some problems after use, and the ideal situation is that the feedback problem is Timely repair, solve the needs of various team commonality, and public components have been promoted in more occasions. But in reality, people with a good public component capability are very scarce, although every web development team has a development of their own MVC framework, but there is still a shortcomings in achieving elegant business implementation, The wishes to do their own standard components are more difficult to grasp the needs of commonality and approved.

On the other hand, other teams are also easy to put the “That version is not good to meet our needs”. The reason for the starting stove, through the respective construction, on the surface, and complete its internal demand, self-consciousness Cognitive cost is reduced, but people’s energy is limited, limited time can only do limited things, and ultimately they can only build some unused systems, except for short-term self-fulfilling It is difficult to have more value.