Home  >  Article  >  Let's talk about the differences between China and the United States in software development (taking TikTok's 'emphasis on QA and light testing” as an example)

Let's talk about the differences between China and the United States in software development (taking TikTok's 'emphasis on QA and light testing” as an example)

青灯夜游
青灯夜游forward
2022-03-03 09:27:423468browse

In a company with 100,000 people, there is no unit testing or code review, and it only relies on QA, but this is the "effective" way!

Many Chinese overseas companies are rapidly occupying markets abroad. For example, in 2021, TikTok became the most visited Internet website in the world, surpassing the original leader, Google, owned by Alphabet of the United States.

The Internet platform created by the Chinese has surpassed the American platform that has always dominated the world. This is a development of great substantive and symbolic significance.

At the same time, as the influence of Chinese technology companies increases day by day, many people are curious about the working culture of Chinese companies and want to understand what drives this success.

Recently, a Chinese-American who has worked for a Chinese company in the United States (TikTok) for more than a year (previously working at Snapchat and Facebook) posted a video on YouTube "5 crazy things about working for Tiktok (why we quit our PM and engineering jobs)", summarizing the experience he learned from Chinese companies in five aspects.

Lets talk about the differences between China and the United States in software development (taking TikToks emphasis on QA and light testing” as an example)

YouTube 地址:
https://www.youtube.com/watch?v=RNUrZFkHXlo

His views attracted a large number of people on Twitter who are interested in China and the United States or Chinese technology. Netizens believed that the post accurately described the differences in engineering culture between China and the United States. , we translated these points:

The first point: Many Western companies will write unit tests, and everyone knows that this is a very basic thing. But the Chinese engineers here don't need to write unit tests! Every code commit counts on manual testing by the QA department, and the team manually tests each code commit before committing it.

You may think this is completely crazy, why not write unit tests? Using QA for testing actually means that engineers are expected to focus on functionality and start quickly, while writing tests is completely left to QA.

And another shocking thing is that code merge requests do not require approval. In a company of 100,000 people (this is not a small start-up), there are no unit tests and no code reviews, just relying on QA, but this is the way to "work"! There have been no major outages.

Chinese companies tend to have more product teams and are more inclined to rely on operations teams to drive business growth; this is different from the passive and data-driven growth idea in the United States. The main difference I noticed between Chinese and American technology companies is that Chinese companies are more dependent on manpower. This advantage is also the core reason why Chinese companies can quickly occupy new markets.

Second point: In Chinese companies, it is rare to see one-to-one meetings because the scalability is too poor. There is little further segmentation within each team, so interaction with more colleagues is required. I often see a typical, top-down meeting that lasts for more than 90 minutes, during which more than 60 people participate at the same time. In most cases, one person speaks at the front while the rest look through the meeting materials. There are rarely the kind of open talks or discussions that are common in European and American companies.

The third point: In order to prevent headhunters from poaching people, a clear organizational structure system is not announced here. The organizational structure is highly flat, with some engineering managers having to handle more than 200 performance review reports (without division!), and some report submitters who don’t even know what their immediate boss looks like.

Fourth point: In terms of process and execution, there is not much going on in Chinese companies. Everyone is busy working with their heads down, and rarely gossip or make moral judgments. On the other hand, Chinese companies are not mature enough in process design. Colleagues on the Documentation and Improvement team are hard to motivate no matter how well they do. No one reviews the engineers' code.

The fifth point: In terms of work-life balance, the American team does not need 996, but it is required to adapt to the Chinese time zone. It’s really hard, and it’s also the main reason for attrition. All the PMs I’ve dealt with have left after a year.

China has four times as many PhDs in STEM (Science, Technology, Engineering and Mathematics) as the United States, but there are fewer technical positions than in the United States, so the competition here is higher than in the United States. Everyone thinks of this situation It's called "involution". Chinese colleagues are afraid that they will lose their technological advantages and be left behind by social development, so they can burst out with huge work energy.

Let’s talk about human QA

It can be said that China and the United States have kept pace with each other in the fields of technology and Internet innovation in recent years, and China has gone global. If a company can successfully seize the market, it at least shows that it has certain advantages in the competition.

However, we can also further see some differences in the software development process between China and the United States from Lucas's description. For example, American companies pay great attention to the detailed specifications of technical documents and usage documents in software development, focus on code submission and review processes, and also pay special attention to unit testing. They do not rely on manpower but rely on the development process to ensure final quality.

The rise of Internet companies has changed many software design, development and release models.

In terms of unit testing, in the traditional development process, generally speaking, QA (Quality assurance) is responsible for black-box testing the program, passing determined parameters when calling the interface, and then verifying that the interface response value meets certain expectations. . Unit testing is a kind of white-box testing, which requires testers to understand the structure of the program under test, so as to construct test cases to verify the logic of each branch of the program.

Obviously, the latter is more challenging, and it is impossible to complete the work quickly by relying on accumulation of manpower like black box testing, so unit testing will lead to slower delivery. In order to speed up the release cycle, the division of labor in our practice has gradually changed. Developers focus on feature creation, while business leaders focus on delivery, and the testing work of developers is ignored.

Development and QA testing is a classic topic that has long attracted attention. Different companies have different methods. At this point, the differences between Chinese and American software development teams are quite large. Google is one example. Its testing director James Whittaker said in 2011 that Google does not have a "huge" testing department. Instead, some testing work is delegated to developers. In "How Google Tests," James writes: "Testing and development happen simultaneously. Write some code, immediately test and build. Then, write more code, Keep testing. Better yet, plan your tests as you code or before you code. Testing is not a separate process, it is part of development. Quality is not the same as testing; to have quality For products, development and testing must be closely tied together until they are indistinguishable from each other. Quality comes from development, not testing."

At Google, testers mainly "ensure that developers have automatic frameworks and related processes" can be tested. The key idea to solve the problem of developers relying on others is not to have a large number of testers on the team. More than ten years ago, Google's development and testing ratio was 10:1, and later it even shouted the slogan "Go to QA". In the article "The Day the QA Department Died", Google experts even consider unit testing to be a QA killer:

Unit testing is a method of testing a specific piece of code to ensure that it works properly And it fits the software puzzle. There is evidence that you can check over 90% of your code with unit tests, and, unlike QA's manual testing tools, properly built, automated unit tests can evolve with your codebase, testing code in real time.

Google believes that when testing responsibilities are shifted to developers, developers will write cleaner code and build higher-quality software with fewer defects. It all depends on how the company is organized in order to reduce costs without compromising quality.

In 2017, Google announced the cancellation of GTAC, a testing technology conference that had been held for ten years. Google’s reason was that “they are more concerned about improving engineering efficiency than automated testing technology.” The implementation of engineering efficiency in practice is usually reflected in the fact that "on the basis of developers completing development work, they also need to undertake all the work of testing, online and operation and maintenance", providing all necessary full links for developers' "one-stop" work road toolchain support.

But the method that Google previously advocated relied entirely on development to ensure quality seems to be exactly the opposite of the "reliance on QA" mentioned by Lucas.

Domestic Internet companies have risen rapidly in recent years. In Mary Meeker’s annual Internet report in early 2018, China accounted for half of the Top 20 Internet companies with market capitalization/valuation. Domestic Internet companies emphasize innovation in business models, and the software development process has begun to undergo some changes compared with traditional software. For example, the iteration speed is more important than the absence of problems. If a problem occurs, it can be located as soon as possible, repaired quickly, and the impact is reduced; user feedback is more important than delivery on schedule. Use the fastest iteration speed to develop, and then collect user feedback to determine this Whether or how to change the function of the product; abandon the "testing" link that may lead to delayed delivery...

It's just that it's hard for us to say clearly whether this technical advantage is an improvement or whether everyone needs to gradually change it place. Perhaps by combining advanced management methods and techniques in the European and American software industries and giving full play to the advantages and expertise of Chinese developers, we can better improve the overall software development level.

For more programming related knowledge, please visit:

Programming Video

! !

Statement:
This article is reproduced at:toutiao.com. If there is any infringement, please contact admin@php.cn delete