聊聊中美在軟體開發間的不同(以 TikTok「重QA 輕測試」為例)
在一個十萬人的企業裡,沒有單元測試也沒有程式碼審查,僅依賴 QA,但這卻是「有效」的方式!
中國眾多的出海企業正在國外快速佔領市場。例如在 2021 年 TikTok 就成為了全球訪問量最大的網路網站,超越原來的領頭羊、美國 Alphabet 旗下的谷歌。
中國人創造的網路平台,超越向來雄霸全球的美國平台,這是一個很具實質和象徵意義的發展。
同時,隨著中國科技企業的影響力日益提升,許多人對中國企業的工作文化充滿了好奇,想了解到底是什麼造就了這種成功。
最近,一位曾在一家在美中企(TikTok)工作了一年多的華裔(之前任職於Snapchat 和Facebook),在YouTube 上發布了一個視頻“5 crazy things about working for Tiktok(why we quit our PM and engineering jobs)”,從五個方面總結了他從中國企業學到的經驗。
YouTube 地址: https://www.youtube.com/watch?v=RNUrZFkHXlo
他的觀點在Twitter 上吸引了大批對中美或中國科技感興趣的人,網友認為該帖子很準確地描述了中美工程文化差異,我們將這些觀點翻譯了出來:
第一點:很多西方企業都會寫單元測試,每個人都知道這是非常基本的事情。但這裡的中國工程師不需要寫單元測試!每項代碼提交都指望 QA 部門的手動測試,團隊在提交之前手動測試每個 code commit 提交。
你可能認為這完全是瘋了,為什麼不寫單元測試?利用 QA 進行測試,實際上是希望工程師們專注於功能,並快速啟動,寫入測試就完全交給了 QA。
而且令人震驚的另一件事情是,程式碼合併請求也不需要批准。在一個十萬人的企業裡(這不是一個小型新創公司),沒有單元測試也沒有程式碼審查,僅依賴 QA,但這卻是「有效」的方式!也沒有發生過重大宕機事件。
中國企業的產品團隊往往人員較多,也更傾向於依靠營運團隊來推動業務成長;這一點與美國被動加數據驅動的成長思路不太一樣。我注意到中美科技企業之間的主要差異,是中國企業對人力的依賴性更高,這個優勢也是中國企業得以迅速佔領新市場的核心原因。
第二點:在中國企業,很少見到一對一式的會議,因為擴展性太差了。各個團隊內部很少進一步細分,所以需要跟更多同事進行互動。經常見到那種典型的、自上而下的會議,一開就是 90 多分鐘,期間 60 多人同時參加。大多數情況下,都是 1 個人在前面講、剩下的人在翻看會議資料。很少有歐美公司常見的那種暢談會或是討論會。
第三點:為了防止獵人頭挖人,這裡並沒有公佈明確的組織結構體系。組織架構高度扁平,某些工程經理需要接手 200 多份績效評估報告(未經劃分!),有些報告提交者甚至不知道自己的頂頭上司長什麼樣子。
第四點:從流程與執行上來說,中國企業裡的屁事不多,大家都在低頭工作,很少會去傳閒話或搞道德評判。另一方面,中國企業在流程設計上還不夠成熟。文件與改進團隊的同事們無論做得多好,但很難得到激勵。也沒人審查工程師們的程式碼。
第五點:從工作與生活的平衡上來說,美國團隊不需要 996,但要求必須適應中國時區。這真是挺難的,也是造成人員流失的主要原因,我接觸過的所有 PM 都在工作一年後離職了。
中國的STEM(科學、技術、工程與數學)專業博士是美國的四倍,但技術職位反而比美國更少,所以這裡的競爭強度高於美國,大家把這種狀況稱為「內卷」。中國的同事們很怕自己失去科技優勢並被社會的發展甩在身後,所以他們才能迸發出巨大的工作能量。
從人力QA 說開去
#可以說近年來中美在科技和網路創新領域已經並駕齊驅,中國出海企業能順利搶佔市場,起碼能說明在競爭上有一定的優勢。
然而我們也可以進一步從 Lucas 的描述中看到中美軟體開發流程上的一些差異。例如美國公司在軟體開發上會非常注重技術文件和使用文件的細緻規範,注重程式碼提交和審核流程,也特別注重單元測試,不是依靠人力,而是依靠開發過程來確保最後的品質。
網路企業的崛起改變了許多軟體設計、開發和發布的模式。
以單元測試來講,在傳統開發流程中,一般來說,QA (Quality assurance) 負責對程式進行黑盒測試,呼叫介面時傳確定的參數,再校驗介面回應值符合某種預期。而單元測試是一種白盒測試,要求測試人員了解被測程式的建構,從而建構測試案例校驗程式各個分支邏輯。
顯然,後者更具挑戰性,不可能像黑盒測試那樣能依靠堆積人力的方式快速地完成工作,所以單元測試會導致交付變慢。為了加快發布週期,我們在實踐中的分工也逐漸有了改變,開發人員專注於功能創建,而業務領導者則專注於交付,開發人員的測試工作就被忽略了。
開發和 QA 測試是一個長期受關注的經典主題。不同公司有不同的辦法,在這一點上,中美軟體開發團隊的差異較大。 Google 算是其中一個典型,其測驗總監 James Whittaker 於 2011 年曾表示 Google 沒有一個「龐大」的測驗部門,相反,部分測驗工作委派給了開發人員。在「Google 是如何進行測試」的文章中,James 寫道:
「測試和開發同時進行。寫一些程式碼,馬上進行測試和建構。接著,寫更多的程式碼,繼續測試。更好的是,在你編碼的時候或編碼之前,就計劃好你的測試。測試不是一個獨立分開的過程,它是開發的一部分。品質不等於測試;要想有高品質的產品,就要把開發和測試緊密捆綁在一起,直到不分彼此。品質來自開發,而不是測試。」
在Google,測試人員主要是「確保開發人員有自動框架和相關流程」進行測試即可。解決開發人員依賴他人的問題的關鍵思路是,不在團隊中配備數量眾多的測試人員。十多年前,Google 開發和測試的比對是 10:1,其後甚至喊出了「去 QA」的口號。在文章「 QA 部門消亡日」中,Google 專家甚至認為單元測試是QA 殺手:
單元測試是一種測試特定程式碼片段的方法,它可以確保該程式碼片段可以正常運行並且契合軟體拼圖。有證據表明,借助單元測試,你可以檢查超過 90% 的程式碼,而且,和 QA 的手動測試工具不同,恰當建置、可以自動測試的單元測試可以隨著程式碼庫一起演化,即時測試程式碼。
Google 認為,當將測試職責轉移到開發人員身上時,開發人員將會寫出更乾淨的程式碼,建構出缺陷更少、品質更高的軟體。這一切都取決於公司如何組織,以便在不降低品質的情況下降低成本。
到了 2017 年,Google 宣布取消舉辦了十年的測試技術會議 GTAC,Google 的理由是「相比自動化測試技術,他們更關心工程效能的提升」。工程效能在實踐中的落地通常就體現在“開發人員完成開發工作的基礎上,還需要承擔測試、上線和運維的全部工作”,為開發人員的“一條龍”工作提供所有必要的全鏈路工具鏈支援。
但 Google 之前提倡的這套組合完全依靠開發保證品質的方法,似乎和 Lucas 提到的「依賴 QA」正好相反。
國內網路企業近年來快速崛起,2018 年初 Mary Meeker 的年度網路報告裡面,Top 20 市值 / 估值的網路公司中國佔了一半。國內網路企業強調在業務模式上的創新,在軟體開發流程上,和傳統軟體相比開始有了一些變化。例如迭代速度比不出問題更重要,如果出了問題,能盡快定位,快速修補,減少影響;用戶反饋比按期交付更重要,用最快的迭代速度開發,再收集用戶的反饋,來確定這個產品的功能要不要或怎麼改;捨棄比較可能導致延期交付的「測試」環節…
只是我們也很難說清楚,這種技術優勢是一種進步,還是需要大家逐漸去改變的地方。或許能結合歐美軟體產業中先進的管理方法和技巧,充分發揮中國開發人員的優勢和專長,才能更好地提升整體軟體開發水準。
更多程式相關知識,請造訪:程式設計影片! !

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

furmark怎麼看?1、在主介面中設定“運行模式”和“顯示模式”,還能調整“測試模式”,點擊“開始”按鈕。 2.等待片刻後,就會看到測試結果,包含了顯示卡各種參數。 furmark怎麼算合格? 1.用furmark烤機,半小時左右看一下結果,基本上在85度左右徘徊,峰值87度,室溫19度。大號機箱,5個機殼風扇口,前置兩個,上置兩個,後置一個,不過只裝了一個風扇。所有配件都沒有超頻。 2.一般情況下,顯示卡的正常溫度應在「30-85℃」之間。 3.就算是大夏天周圍環境溫度過高,正常溫度也是「50-85℃

新派幻想仙俠MMORPG《誅仙2》「無為測試」即將於4月23日開啟,在原著千年後的誅仙大陸,會發生怎樣的全新仙俠冒險故事?六境仙俠大世界,全職修仙學府,自由自在的修仙生活,仙界中的萬般妙趣都在等待著仙友們親自前往探索! 「無為測試」預先下載現已開啟,仙友們可前往官網下載,開服前無法登入遊戲伺服器,啟動碼可在預先下載安裝完成後使用。 《誅仙2》「無為測試」開放時間:4月23日10:00——5月6日23:59誅仙正統續作全新仙俠冒險篇章《誅仙2》以《誅仙》小說為藍圖,在繼承原著世界觀的基礎上,將遊戲背景設

《三角洲行動》將在今日(3月7日)開啟一場名為「代號:ZERO」的大規模PC測試。而在上週末,這款遊戲在上海舉辦了一次線下快閃體驗活動,17173也有幸受邀參與其中。這次測試距離上一次僅相隔四個多月,不禁讓我們好奇,在這麼短的時間內,《三角洲行動》將會帶來哪些新的亮點與驚喜?四個多月前,我已先行在線下品鑑會和首測版本中體驗了《三角洲行動》。當時,遊戲僅開放了「危險行動」這個模式。然而,《三角洲行動》在當時的表現已然令人矚目。在各大廠商紛紛湧向手遊市場的背景下,如此一款與國際水準相媲美的FPS

人工智慧的崛起正在推動軟體開發的快速發展。這項強大技術有可能徹底改變我們建構軟體的方法,對設計、開發、測試和部署等各個方面都會產生深遠影響。對於企圖進入動態軟體開發領域的企業來說,生成式人工智慧技術的問世為它們提供了前所未有的發展機會。將這項前沿技術納入其開發流程後,公司可以大幅提升生產效率、縮短產品上市週期,並推出在激烈競爭的數位市場中脫穎而出的優質軟體產品。根據麥肯錫的報告,預測2031年,生成式人工智慧市場規模可望達到4.4兆美元。這項預測不僅反映了一種趨勢,更顯示出技術和商業格局

Maven是一個開源的專案管理工具,常用於Java專案的建置、依賴管理及文件發佈等任務。在使用Maven進行專案建置時,有時我們希望在執行mvnpackage等指令時忽略測試階段,這在某些情況下會提高建置速度,尤其是在需要快速建置原型或測試環境時。本文將詳細介紹如何在Maven中忽略測試階段,並附有具體的程式碼範例。為什麼要忽略測試在專案開發過程中,通常會

Go語言函數閉包在單元測試中發揮著至關重要的作用:捕獲值:閉包可以存取外部作用域的變量,允許在巢狀函數中捕獲和重複使用測試參數。簡化測試程式碼:透過擷取值,閉包消除了對每個循環重複設定參數的需求,從而簡化了測試程式碼。提高可讀性:使用閉包可以組織測試邏輯,使測試程式碼更清晰、更易於閱讀。

簡介持續整合(CI)和持續部署(CD)是現代軟體開發的關鍵實踐,它們可以幫助團隊更快、更可靠地交付高品質的軟體。 jenkins是一個流行的開源CI/CD工具,它可以自動化建置、測試和部署流程。本文將介紹如何使用PHP與Jenkins一起設定CI/CD管道。設定Jenkins安裝Jenkins:從Jenkins官網下載並安裝Jenkins。建立項目:從Jenkins儀表板建立一個新的項目,並將其命名為與您的php項目相符的名稱。設定原始碼管理:將您的PHP專案的git儲存庫配置為Jenkin

譯者|陳峻審校|重樓上世紀90年代,當人們提起軟體程式設計時,通常意味著選擇一個編輯器,將程式碼檢入CVS或SVN程式碼庫,然後將程式碼編譯成可執行檔。與之對應的Eclipse和VisualStudio等整合開發環境(IDE)可以將程式設計、開發、文件、建置、測試、部署等步驟納入到一個完整的軟體開發生命週期(SDLC)中,從而提高了開發人員的工作效率。近年來,流行的雲端運算和DevSecOps自動化工具提升了開發者的綜合能力,使得更多的企業能夠更輕鬆地開發、部署和維護軟體應用。如今,生成式AI作為下一代開