The following article is from msup
Proofreading: Zhang Le
Author: Ru Bingsheng
Introduction: Tencent T4 level expert, special researcher of Tencent Research Institute, well-known industry expert in the field of R&D efficiency and software quality. The most valuable expert of Tencent Cloud, Alibaba Cloud, and Huawei Cloud, Certified DevOps Enterprise Coach, the most influential author of IT books of the year, the best-selling book "Test Engineer Full Stack Technology Advancement and Practice" and "Efficient Automated Test Platform: Design and Development The author of "Practical Combat", the author of Geek Time "52 Lectures on Software Testing-Practical Psychology from Workers to Experts".
When it comes to R&D efficiency, we have our own unique insights. The phenomenon we see is: as long as you work hard, there is no team 1615c222c5e3fe. Although there are many large manufacturers that are doing well in R&D efficiency and have become the object of worship, we have also seen a lot of "involution" phenomena occur. After experiencing many stories, we can talk more about our own understanding and perception.
R&D efficiency is currently an area that both Internet companies and traditional software companies are paying close attention to. Internet companies hope to achieve continuous R&D capability improvement through "R&D efficiency" to cope with increasingly complex product development; waist manufacturers hope to achieve bending through "R&D efficiency". To overtake, give full play to the advantages of latecomers; more and more small and medium-sized enterprises see domestic Internet giants in this field coincidentally, and they are also gearing up to make efforts in the field of efficiency.
Overnight, it seems that can only improve the efficiency of the R&D team be able to keep oneself from losing on the starting line in the competition with friends.
So how much advantage does the company's R&D efficiency practice have brought to the company, and what problems have it solved? What is the current state of those companies that promote R&D efficiency? Has the research effect problem been solved?
Don't worry, most of these problems have not yet been resolved, and some problems may have become worse. After all, there is no shortcut to the implementation of R&D efficiency. It is necessary to cross the river by feeling the stones. It will certainly not be destined to have a happy ending like the movie. After wind and rain, you may not be able to see the rainbow, and you are more likely to catch a bad cold. R&D efficiency problem cannot be solved today, so don’t worry, because the will also not be solved tomorrow. So let us "rest assured and bold" to see how research and development efficiency can bring down a team.
To understand how R&D efficiency can bring down a team, we first need to have an overall understanding of R&D efficiency, and we need to understand R&D efficiency from a positive perspective.
What exactly is R&D performance
Similar to the concept of agile, it is difficult to precisely define what R&D efficiency is. In fact, many complex concepts are not defined, but evolved gradually, where there is a phenomenon before a suitable expression is found. In fact, efficiency and effectiveness have never been terminology of software engineering. Throughout the history of human development, it is the development chapter of the continuous improvement of productivity and production efficiency. In the digital age, the importance of software development effectiveness has been highlighted . If we want to sum up research and development efficiency in one sentence, we will sum it up with "more efficient, higher quality, more reliable, and sustainable delivery of better business value".
"First Principles" of R&D Effectiveness
Explain some of the key concepts:
- More efficient: The flow of value must be efficient and smooth, and the smaller the resistance, the better.
- Higher quality: If the quality is not good, the faster it flows, the faster it will die.
- More reliable: Security and compliance must be guaranteed.
- Sustainability: The output cannot be intermittent, and running at small steps is the right way. Don't hold back big moves.
- Better business value: This is from the demand level, does your deliverable really solve the user's essential problem? For example: "It is not the essential problem for girls to lose weight, but for girls to love beauty." You can experience it.
Under the guidance of this concept, we introduce the concepts of continuous development, continuous integration, continuous testing, continuous delivery and continuous operation and maintenance, which are necessary practices for the implementation of research and development effectiveness . At the same time, we also need to effectively measure R&D efficiency from the four dimensions of flow speed, long-term quality, customer value, and data-driven.
Why are major manufacturers beginning to engage in R&D efficiency
Alibaba’s cloud efficiency, Tencent Cloud’s coding, and Baidu’s engineering efficiency white papers are all benchmarks in the field of domestic R&D efficiency, but have you ever wondered why in recent years leading companies in major industries have begun to make efforts in the field of R&D efficiency. And the pace is so consistent, we think the reasons behind it are the following three points:
The "barn dilemma" at the organizational level
01
Many companies have a large number of duplicate wheels
Just like the concept of "middle stage", many large companies now have very broad product lines, and there are a lot of repeated wheels among them. If we pay attention to the repeated wheels in the business, then it is the middle stage in the business; if we pay attention to the repeated wheels in the data construction , Then it is the data center; if we pay attention to the repeated wheels in the construction of R&D efficiency, it is the research performance platform. In fact, the research performance platform can also be called "the research and development efficiency center" to some extent, and its goal is to realize the enterprise The multiplexing of R&D capabilities across products and projects prevents each product line from doing the "0 to 1" necessary for R&D efficiency. No one has the energy to pay attention to the more valuable "1 to n". The modern research efficiency platform will be unified to create a best practice platform for general research and development capabilities at the organization level.
02
toC product has become saturated
From a commercial point of view, toC products are now becoming saturated. The bonus era that used to be filled with apps for a lot of idle time is gone forever. In the past, the business developed extremely fast, so use the method of burning money (extensive research and development, People-sea tactics) in exchange for a faster market share to achieve winner-take-all is the best choice. At that time, the focus was on software product output, and the efficiency of research and development could be filled with money. And now toC has gradually moved towards the Red Sea, and the scale of research and development is larger than ever before. It is time to tighten your belt and live your life. When the open source (open source in open source and throttling) encounters a bottleneck, throttling should play a role. . This throttling is to improve the efficiency of research and development, the same resources, the same time to get more output.
03
Some companies have "barn dilemmas"
From the perspective of organizational structure, many companies have "barn dilemmas", and various aspects of R&D may have been optimized internally, but the may have a large amount of circulation and communication costs, which will affect the overall efficiency of . Based on process optimization, breaking the invisible walls of all links, removing unnecessary waiting, and increasing the speed of value flow are a large category of problems that R&D efficiency is trying to solve at the level of process optimization.
research and development efficiency really be improved?
Since it is so important, the next question is whether R&D efficiency can really be improved?
Unfortunately, our view is rather pessimistic. We believe that the absolute value of R&D efficiency will inevitably become worse and worse with the growth of the following factors, just like my (to declare, there is no teacher Zhang Le) hair, it will inevitably become less and less over time Same.
- Increased complexity of the software architecture itself (microservices, service grids, etc.)
- Continuous growth of software scale (cluster scale, data scale, etc.)
- The continuous expansion of R&D team personnel has led to increased difficulty in communication and collaboration
Therefore, we can do with 1615c222c5eb05 is not to increase the absolute value of R&D efficiency, but to slow down the deterioration of R&D efficiency as much as possible, so that it does not decline too fast, and strive to maintain the status quo is success.
R&D efficiency gap
Slow down the deterioration of R&D performance What can we do
After seeing the essence, what can we do about how to slow down the deterioration of R&D efficiency?
research and development efficiency is very wide. Each stage of software research and development has issues that need attention in research and development efficiency. 1615c222c5ebb6 Tencent's "R&D efficiency dual-stream model" can be said to be a good interpretation of this concept . The Shuangliu model puts forward various engineering practices to improve R&D efficiency from various stages of software development, and advocates the automatic linkage of demand value flow and R&D engineering flow.
Two-stream model of R&D efficiency
Here we enumerate some practices to give you some suggestions. In the next article, I will explain the best practices in a more systematic way.
- The All-in-one development environment can reduce the time cost of each developer's development environment preparation, while ensuring the consistency of the development environment. more advanced gameplay of 1615c222c5ec61 is to use the cloud integrated development environment IDE, which allows you to change the code as long as you have a browser. Typical domestic representatives in this field are Cloud Studio under Tencent Cloud Coding and CodeSpaces currently in beta testing on Github.
- With the help of AI-based code prompt plug-ins, the development efficiency of the code in the IDE can be greatly improved. Entering a piece of the same code, without the help of AI code prompting the plug-in, requires 200 keystrokes on the keyboard, and enabling the plug-in may only require 50 keystrokes, which makes it easier for the development engineer to enter the state of "heart flow" and achieve "human code integration" one".
- The static check of the code does not need to be initiated by the Sonar process in CI after the code is submitted. At that time, it is too late to fix the problem. It is completely possible to initiate a local code check in real time through the Sonar Lint plug-in combined with the IDE. has a problem directly in The IDE prompts to repair directly, so that the development engineer will be more willing to repair the problem, because the cost is lower, and it will not cause the re-release after the repair.
- Unit testing is time-consuming, and tools such as EvoSuite can be used to reduce the development workload of unit testing.
- For larger projects, the compilation time is longer after each modification. Incremental compilation or even distributed compilation (Distcc and CCache) can be used to improve efficiency. For Maven projects, you can further reduce compilation time by caching the pom dependency tree.
- Front-end development can use tools such as JRebel and Nodemon to make the front-end development preview experience smoother, realize the "what you see is what you get" of front-end code, avoid repeated compilation, packaging, deployment, and restart steps, thereby improving the smoothness of the development process Spend.
- Choosing a code branching strategy suitable for the project is also very helpful to improve efficiency.
- Building a highly automated CI and CD pipeline will greatly increase the rate of value circulation.
- Choosing an appropriate release strategy will also play a positive role in the balance between performance and risk . For example, the architecture is relatively simple, but the cluster is large, and canary is preferred. If the architecture is more complex, but the cluster is not too large, blue-green releases may be more dominant.
- Introducing DevSecOps and DevPerfOps practices, so that security and performance are no longer limited to the testing field, but to form a systematic global engineering capability, making security testing a security engineering, and performance testing a performance engineering.
- ...
R & D efficiency "Rashomon"
Well, after understanding the positive view of R&D efficiency, let’s come back to see what the R&D efficiency looks like in the actual landing process.
It can be said that the ideal is full, but the reality is very skinny. Let me take a look at the various chaos of domestic research and development performance.
01
superstition in single-point local capabilities, ignoring the importance of global optimization and pull-through
In fact, there is no shortage of single-point capabilities for R&D efficiency. There are many good vertical capability tools in various fields, but the horizontal integration and integration of various single-point capabilities can design and plan from the one-stop full-process dimension. The R&D efficiency is mature. Platforms are still rare. At present, many domestic companies that have invested in the field of research results are actually still building, or even repeatedly building research tools for single-point capabilities. This idea is feasible in the initial stage, but the effect of single-point improvement will diminish over time. Companies often Lack of the ability to plan the overall R&D efficiency from a higher perspective. In many cases, local optimization does not lead to global optimization, and sometimes it is global degradation.
02
Universal R&D performance tools with universal applicability are actually not as easy to use as exclusive tools
built research and development tools, it needs to be promoted in the business department so that these research tools can be used by the business department . In fact, many relatively large business teams have their own human investment in the fields of CI/CD, testing, and operation and maintenance, and they have also developed and maintained many R&D tool systems that can effectively meet the current business. At this time, if you want to replace the original tools of the business department with the newly created research tools, you will definitely encounter strong resistance. Unless the new tool is 10 times better than the old tool, the user may be willing to replace it, but the actual situation is that the newly created tool may not be as good as the original tool in order to consider the universality, plus the learning cost of tool replacement , So unless it is forced by the management, the probability of successful promotion is minimal. Even if it is forced by the management, the actual execution will be greatly reduced, and there are not a few cases of access but not actual use.
03
Use "pseudo" engineering practice and "face engineering" to
If you compare the gap between domestic and foreign R&D efficiency engineering practices, you will find that the gap between domestic companies and Silicon Valley companies is quite obvious. But when you compare the specific engineering practices carried out by both parties item by item (such as unit testing, static code scanning, compilation acceleration, etc.), you will be surprised to find that in terms of the number of practice items, domestic companies are no less than Silicon Valley companies. , In some areas, it is even worse. So why is this gap still so obvious? We believe that the most critical point of this is that many domestic engineering practices are done for the sake of "political correctness", rather than essentially approving the actual value of this engineering practice. Typical examples here are code review and unit testing. Although many major domestic Internet companies are promoting the implementation of code review and unit testing, they often go off track in the actual process. Code review has become a process, and no one cares about the actual quality and effect of the review. The reviewer’s review is not a workload, nor does it bear any responsibility. What effect can such a code review have, and the results can be imagined. Unit testing has also become a slogan, saying that single testing should be implemented, but when planning and scheduling, there is no time and human resources for single testing. It is conceivable whether such single testing can be successfully carried out. Therefore, what domestic companies lack is not the amount of engineering practice, but the depth of engineering practice implementation. Don’t use "pseudo" engineering practices and "face engineering" to .
04
Ignore the long tail effect of the R&D efficiency tool system
Returning to the topic of research efficiency tool construction, many times the management team hopes to build a one-stop universally applicable research and development efficiency platform, and hope that most of the company's business can be smoothly connected. This and the idea are indeed very good, but It is undeniable that research efficiency platforms and tools often have non-standard long-tail effects. It is difficult for us to build a unified research efficiency solution to meet all business research and development needs. The various business research and development processes cannot be ignored. The . Take a step back and say that even if we implement a unified research effect solution through a highly configurable process engine, such a system will be too flexible and use too many paths and its ease of use will become poor. The contradiction between the two is difficult to reconcile.
05
blindly follow suit
Let’s take a look at some small and medium-sized R&D teams. They see the heavy investment of domestic manufacturers in the field of research and efficiency, so they will follow suit. They often try to introduce big factory tools and talents as a breakthrough point for research results, but the actual effect may be unsatisfactory. Dachang’s research tool system has its advanced nature, but whether it can be adapted to your research and development scale and process is open to question. The same medicine can be given to elephants to cure diseases, but if given to you, it may be directly killed. In many cases, research tools should be regarded as the starting point, not the end point. Just like you bought a sports car, you still cannot become a racer.
06
Superstitious external experts
The introduction of experts from major manufacturers is actually similar in logic. I am often asked questions like: "The research efficiency improvement projects you led before have all been successful. If you ask you to come over, how long will it take to get it done?"? This is actually an unsolvable problem. a certain extent, if the investment is large, the cycle will be short, but the implementation cycle will not be infinitely shortened because of the infinite investment . I can help you avoid many pits that you have stepped on, try to avoid detours, and don't make mistakes again. However, you still have to take the path that suits you. It will only harm your long-term interests.
07
and punishments measured by research results
Finally, let's look at metrics. The measurement of R&D effectiveness has always been a very sensitive topic. In the age of scientific management, we pursue "no improvement without measurement", but whether this proposition in the digital age is still valid requires our reflection. Real things are complex and multi-faceted. The to describe and compare these concrete facts. In a sense, the result of the metric must be one-sided, reflecting some facts. But there is no silver bullet, and there is no perfect measure of performance. The data itself will not deceive, but the presentation and interpretation of the data has a lot of space worth exploring. Those who don't understand data are bad, and the worst are those who only look at numbers. When turning measurement into an indicator game, never underestimate people’s “creativeness” in pursuing indicators. In short, we should not work solely on indicators, but should look at the larger goals behind indicators, or formulate these indicators. The real motivation behind it.
Generally speaking, for R&D efficiency, I think the most important thing is not technology upgrade, but thinking upgrade. We are in the process of digital transformation, and what needs to be changed is our way of thinking. We need to thoroughly understand the thinking of the era of scientific management. Turn to the thinking of the byte economy era.
"Cool Thinking" on R&D Efficiency
Finally, back to the engineer level, what does the improvement of R&D efficiency mean to us?
01
The increase in tool efficiency did not reduce our working hours
While new tools and new platforms help us improve efficiency, they also continue to increase the cost of our learning. Using front-end development as an example, the front-end engineering based on the family bucket has greatly improved the efficiency of front-end development, but at the same time, the learning cost of front-end development engineers has increased exponentially. "To a certain extent" reflects the sadness and helplessness of the front-end development.
02
Technology upgrades are constantly blurring the boundary between work and life
In the early years, work communication mainly relied on emails besides face-to-face chats. When the boss sent you emails during non-working hours, you had various legitimate reasons not to reply in time, but now the instant communication tool IM (reminder that the message has been read, you understand) is combined Various ChatOps practices have made it impossible for engineers to distinguish between work and life. Is this what we want?
With the continuous investment in the field of research and development efficiency, more and more research efficiency tools will be born. All these tools make the link between people and work closer. People become more like tools, and tools become more and more. Like people . The reason why we create tools is to ease our own work, but the reality is likely to develop into that we will eventually become enslaved by the tools created by ourselves. The research and development efficiency we are committed to, will it make us or ruin us? It is worth thinking about.
For R&D efficiency, the implementation of the idea is wrong, and the method is wrong to destroy a team. What we need is a systematic methodology and corresponding engineering practices. Please look forward to our next article to explain this. At the same time, we also warmly invite you to participate in the Tencent Cloud CIF Engineering Performance Summit —— CODING DevOps Senior Architect Wang Wei will take you to the forum —— Cloud native blessing, R&D performance upgrade , 6 industry experts will From tools to practice, in-depth analysis and solving the pain points and difficulties of the process of business access to the cloud native, helping the team achieve real-time response to needs, and rapid business development and online.
The summit will be held 2021 October 19 - 20 to online meeting held in the form of order " on cloud development, simplify " as the theme, focused R & D performance in the cloud native blessing upgrade , And the practice of corporate transformation under the trend of digitalization.
Scan the poster QR code
an appointment now for Tencent Cloud CIF Engineering Efficiency Summit
More exciting agenda waiting for you to open
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。