Understanding R&D Efficiency Improvement in One Article | JD Cloud Technical Team

1 What is R&D effectiveness?

For an enterprise, maximizing enterprise performance is an essential goal, including: profit, user scale, customer service satisfaction, operational efficiency, etc. For Internet companies with self-developed products, R&D efficiency is an important factor in the efficiency of service companies.

The complete process of a software development is shown in the figure below:

The efficiency and ability to deliver the desired product in the entire process from requirement proposal to delivery, that is, R&D effectiveness.

2 Why improve R&D efficiency?

The following two examples illustrate the impact of R&D performance on our daily demand delivery from the macro and micro perspectives:

(1) Efficient and efficient from their own perspectives; slow to respond from a global business perspective.

The above picture reflects the delivery process of a single requirement. A green line indicates that the request is being processed, and a red line indicates that the request is pending. The demand with a small workload has a very long delivery cycle. This is because most of the time the demand is in a waiting state. It may be due to cross-section or because the front, middle and background have different work priorities, which will lead to demand The link is locally optimal and the overall efficiency is not high. I believe many people will feel the same way. This has become a common dilemma in product delivery.

(2) API docking processing

In the process of API interface testing, it is very common that the critical value of the input parameter is not properly handled. For example, an input parameter is of String type, but the code implementation does not consider the case that the String variable is null. Such problems are usually discovered in the later stage of debugging or joint debugging. At this time, the cost of repairing is relatively high, and the cost of regression testing must also be considered after repairing. Therefore, we can introduce a mechanism to actively scan and obtain API input parameter types, generate error-prone values ​​according to the parameter types, and use these values ​​to automatically call the API. If a 500 error occurs or an exception is thrown, it means that a problem has been found. Such a problem It can be exposed earlier, and it also improves the efficiency of subsequent development work.

Through these two examples, it can be found that whether it is product delivery or actual development work, the goal of performance improvement is: the ability to continuously and quickly deliver value . It can be understood that the traditional development method poses a challenge to the team's ability to continuously generate effective value for users. It is necessary to focus on long-term effects through research and development efficiency, and change our focus from local optimization to user value to ensure overall and systematic optimization.

3 How to measure R&D effectiveness?

Drucker, the father of management, said: "If you can't measure it, you can't improve it."

To evaluate the ability of an organization or team to deliver value continuously and quickly, some metrics are needed to help us gain a deeper understanding of R&D performance, set improvement directions, and measure improvement effects.

The fundamental question that performance metrics answer is: What is an organization's "capability to deliver value consistently and rapidly"?

Any improvement in productivity is inseparable from three factors: people, processes and tools, all of which are indispensable. Through the following five specific indicators, you may have a deeper understanding of these three factors.

First: Continuous release capability.

Release frequency: the number of valid releases per unit time.

Release lead time: the time it takes from code submission to function launch, which reflects the basic ability of the team to release.

Second: demand response cycle.

Delivery cycle time: the average time from the confirmation of the user's demand to the time when the demand goes online.

Development cycle time: The average time from when the development team understands the requirements to when the requirements can go live.

Third: delivery throughput.

Quantity of user requirements delivered per unit time: the quantity of requirements delivered by a single team per unit time.

Fourth: the quality of the delivery process.

Defect Creation and Fix Time Distribution: Defects can be found consistently and in a timely manner, and fixed as soon as possible after discovery.

Defect inventory: The development process controls the amount of defect inventory so that the product is always close to a releaseable state, which is the basis of continuous delivery.

Fifth: delivery quality.

Whether it is the number of problems per unit time or the length of time to solve online problems, it emphasizes system availability.

These five sets of indicators, proposed by Alibaba's senior technical expert team, tell a complete story from three aspects: flow efficiency, resource efficiency, and quality, and answer the core question of the organization's ability to continuously deliver value. Among them, the two sets of indicators, continuous release capability and demand response cycle, reflect the flow efficiency of value; the throughput rate reflects resource efficiency; the two sets of indicators, delivery process quality and external delivery quality, jointly reflect the quality level.

4 How to improve R&D efficiency?

Let’s first look at a question: Why are major Internet companies now paying attention to “R&D efficiency”?

Software is eating the world. In the past 20 years, the Internet has grown from nothing. In the future, any business will build its business on the basis of the Internet. Software delivery capabilities have become the core competitiveness of enterprises, and R&D efficiency has become a common challenge for enterprises.

On the one hand, with the intensification of competition, business expectations for R&D efficiency are getting higher and higher; on the other hand, with the development of the Internet into the industry, the complexity of products and collaboration is getting higher and higher, and R&D efficiency has a downward trend , this is the gap between expectations and ideals, and it is also a problem that must be solved to improve R&D efficiency.

In the early stage of promoting R&D efficiency, it is usually possible to adopt a top-down strategy, starting with a small practical pain point in engineering practice, and aiming to improve R&D efficiency by solving problems. At this stage, we are pursuing "short, flat and fast", problems Break down one by one. These issues include but are not limited to:

  • Local compilation takes a long time and consumes a lot
  • Local testing is difficult, and test environment preparation is complex and time-consuming
  • Automated test cases are expensive to maintain
  • Difficulty preparing test data
  • In the late stage of R&D, the code submission is concentrated, and the number of defects surges
  • Performance defects are discovered in the late stage of R&D, and the repair cost is high
  • ……

Entering the mid-to-late stage, return to the field of software research and development, start from the overall situation and optimize the work. Before introducing agile solutions, let's look at a metric chart:

In the figure above, the abscissa is the date, the red vertical bar above the abscissa represents the number of defects found on that day; the green vertical bar below the abscissa represents the number of defects resolved that day; the orange curve represents the stock of defects. The left and right parts of the figure compare the two delivery models.

The left half is the cascade development model. In the early stage of the iteration, the team focused on design and development, introduced defects, but resolved them in time for verification. Defects remain hidden in the system until the late testing and integration stages, where defects explode, causing massive rework, delays, and delivery quality issues.

The right half, the continuous delivery model. Throughout the iteration process, the team develops in small-grained requirements, continuously integrates and tests them, and discovers and solves problems in real time. The defect pool is under control and the system is always in a near-releasable state.

In fact, the continuous delivery model is very similar to the principles of agile development, agile = values ​​+ principles + a series of methods in line with values ​​and principles. The iteration cycle of the agile team is two weeks. Through transparent, collaborative, and disciplined continuous improvement, yes, if that piece is always in a working state, each iteration can deploy the software to a production-like environment and demonstrate it to users. Through the agile method, the "little waterfall" problem can be effectively avoided, and the requirements are sorted according to the granularity and priority of the requirements, and the requirements are split into requirements that can be tested independently. Problems found in the entire process can be solved in time and reviewed and summarized.

From a personal point of view, we must start from reality, from principles, and from individuals to focus on value flow: To-be->design->development->development self-test->code review->test->complete. Continuously learn new development skills to improve your development efficiency.

From the perspective of the team, team culture is the value and code of conduct commonly recognized by team members. A good and effective culture is a key part of ensuring the efficient output of the team. The implementation of cultural values ​​is the winning formula to ensure the efficient work of an agile team. Of course, if any measure involves personal interests, it will inevitably have a bad taste. We can only see whether this measure can guide the team in the right direction, and whether the benefits outweigh the risks.

Thanks for reading.

References:

[1] Tencent Technology Engineering https://zhuanlan.zhihu.com/p/202972178?utm_source=tuicool

[2] Crossing the river and rushing http://www.360doc.com/content/20/0915/11/31263000_935733089.shtml

[3] Alibaba Cloud Yunqi https://zhuanlan.zhihu.com/p/57029968               

[4] huver2007 https://blog.csdn.net/huver2007/article/details/103260847

[5] 36 Strategies for R&D Efficiency Improvement and Agile Implementation https://www.sohu.com/a/340050349_612370

[6] Book reference: "Continuous Delivery", "The Way to Break the R&D Efficiency"

Author: JD Retail Li Zeyang

Source: Reprinted by JD Cloud developer community, please indicate the source

Microsoft official announcement: Visual Studio for Mac retired The programming language created by the Chinese developer team: MoonBit (Moon Rabbit) Father of LLVM: Mojo will not threaten Python, the fear should be C++ The father of C++ Bjarne Stroustrup shared life advice Linus also Dislike the acronym, what TM is called "GenPD" Rust 1.72.0 is released, and the minimum supported version in the future is Windows 10 Wenxin said that it will open WordPress to the whole society and launch the "100-year plan" Microsoft does not talk about martial arts and uses "malicious pop-ups "Prompt users to deprecate Google's high-level, functional, interpreted, dynamic programming languages: Crumb
{{o.name}}
{{m.name}}

Guess you like

Origin my.oschina.net/u/4090830/blog/10106420