Facebook沒有測試工程師,如何進(jìn)行質(zhì)量控制的?
Facebook從04年的哈佛校園的學(xué)生項目在短短的7-8年的時間中快速增長為擁有10億用戶的世界上最大的社交網(wǎng)絡(luò),又一次見證了互聯(lián)網(wǎng)創(chuàng)業(yè)成功的奇跡。同時它的產(chǎn)品研發(fā)流程也成為了眾多互聯(lián)網(wǎng)產(chǎn)品公司的追逐對象。
?
在如今的互聯(lián)網(wǎng)領(lǐng)域,F(xiàn)acebook的創(chuàng)新能力一點也不弱于google。上篇文章談到Google,今天再來談?wù)凢acebook。首先聲明,由于沒有在facebook實地工作過,因此,對Facebook的質(zhì)量控制體系,均來自于Facebook工作的員工及網(wǎng)絡(luò)相關(guān)資料的論述。
?

?
?
在分析FB的質(zhì)量控制前,還是需要先了解其文化特點及業(yè)務(wù)形態(tài):
?
1、“這是《財富》500強(qiáng)中首家由千禧一代創(chuàng)建的公司,”Facebook前人力資源和產(chǎn)品經(jīng)理莫里·格雷厄姆(Molly Graham)表示。出生在1980年以后的千禧一代,常常無拘無束,并抱有一種幻想——工作應(yīng)該是一件有趣的事情。
?
而Facebook的CEO,接受了年輕人的特點,并為他們精心制定了管理方法。Facebook高層精心設(shè)計下“黑客“也是成為Facebook的企業(yè)文化標(biāo)簽?!昂诳汀弊孎acebook顯得卓爾不群,它標(biāo)志著Facebook始終擁有著最先進(jìn)的生產(chǎn)力, 旨在通過不斷的創(chuàng)新和實驗來拉近世界的距離。
?

?
?
因此在Facebook內(nèi)部主管理
?
強(qiáng)調(diào)發(fā)現(xiàn)員工優(yōu)勢
Facebook的企業(yè)文化受到了馬庫斯·白金漢(Marcus Buckingham)的影響。白金漢是一名出生在英國的管理專家。他呼吁人們“揚(yáng)長避短”,建議經(jīng)理們在分配員工職務(wù)時要迎合他們的優(yōu)勢。
?
上下層級的平等
Facebook甚至鼓勵低級別員工質(zhì)疑和批評經(jīng)理。谷歌的管理結(jié)構(gòu)更為森嚴(yán),成為一名“經(jīng)理”意味著擁有更大的權(quán)力。而在Facebook,“職稱毫無用處,”大家只看你的工作質(zhì)量、信念的力量以及影響其他人的能力。”
?
2、facebook的產(chǎn)品特點
用戶對社交產(chǎn)品質(zhì)量的容忍度相對較高。比如現(xiàn)在連不上,等一會在連接也可以,現(xiàn)在發(fā)布不出去可以等一會再發(fā),粉絲數(shù)量統(tǒng)計有誤,沒有人太關(guān)心。其實facebook并不認(rèn)為自己的質(zhì)量差。他們認(rèn)為產(chǎn)品的質(zhì)量高低不是有多少個failed測試用例,有多少個bug來確定的,而是由用戶對質(zhì)量的期望值來決定的。
?
如果用戶對產(chǎn)品質(zhì)量的期望值很高很高,一個bug漏掉了都會造成質(zhì)量差的印象,用戶很有可能放棄使用。相反,如果用戶的期望值一般,100個bug漏掉了都不會影響用戶繼續(xù)使用。所以facebook產(chǎn)品發(fā)布的條件是滿足用戶對質(zhì)量的期望值即可。
?
相對寬松的產(chǎn)品發(fā)布周期。不想微軟或google很多產(chǎn)品已經(jīng)在市場上,用戶對下一版本的發(fā)布時間和新增加功能的期望很高,這往往給產(chǎn)品開發(fā)組的壓力很大。Facebook基本沒有這個問題,它有適合自己的發(fā)布期限,不用受到外界干擾。
?
因此,在其產(chǎn)品研發(fā)團(tuán)隊組成上,依然可以保持小的研發(fā)團(tuán)隊規(guī)模,同時保留創(chuàng)業(yè)團(tuán)隊的特點。Facebook 項目的人員配比:一個項目一般是兩三個設(shè)計師、5-10個工程師 ,產(chǎn)品經(jīng)理要確保代碼按時發(fā)布。
?
在運(yùn)作中會遵循幾個非常重要的原則:
?
每個工程師自始至終負(fù)責(zé)產(chǎn)品。從最開始的一個想法,到開發(fā)原型,到內(nèi)部審核,反饋,到產(chǎn)品開發(fā),上線和維護(hù),全部有工程師自己搞定。
?
非??粗胤答仯绕湓缙趦?nèi)部反饋。他們鼓勵工程師有了想法后,盡快開發(fā)出原型,盡快得到反饋。
動手去做,去實現(xiàn)。
互聯(lián)網(wǎng)產(chǎn)品是不斷變化的,不需要等到把一個產(chǎn)品設(shè)計的很完美了才發(fā)布。
?
相比較于Google,facebook確實沒有測試工程師。不過,F(xiàn)acebook 仍然有負(fù)責(zé)質(zhì)量評估的工程師,并積極鼓勵每位工程師報告產(chǎn)品漏洞。而且各角色相比較于傳統(tǒng)公司定位也有所差異。
?
1、同谷歌一樣,F(xiàn)acebook 的企業(yè)文化同樣以工程師為主。一名工程師說:“產(chǎn)品經(jīng)理基本上在這里毫無作為?!惫こ處熆梢孕薷纳形凑缴鲜械漠a(chǎn)品規(guī)格,在任何時間提出新的功能創(chuàng)意。
?
2、產(chǎn)品經(jīng)理如果要獲取開發(fā)資源,不會如很多公司通過立項評審然后組織分配,而是需要產(chǎn)品經(jīng)理通過自己發(fā)布產(chǎn)品的創(chuàng)意,吸引有興趣的工程師。
?
3、與產(chǎn)品經(jīng)理確定產(chǎn)品定義的方式不同,產(chǎn)品經(jīng)理通常不會干涉工程師的偏好,如果出現(xiàn)爭論,工程師們會開發(fā)出原型機(jī),用一周的時間開發(fā)某項功能并進(jìn)行測試,以確定它是否值得推出成品。通常情況下,新功能都是由 Facebook 員工親自測試。
?

?
?
由此,facebook采用以下質(zhì)量控制手段來保證產(chǎn)品質(zhì)量:
?
開發(fā)對質(zhì)量負(fù)責(zé):?開發(fā)從設(shè)計,實現(xiàn),測試,到部署都要自己做。其它做工具,流程的工程師通過開發(fā)工具和流程來幫助開發(fā)人員更為簡單方便地做測試,做部署和做監(jiān)控。每個開發(fā)人員有自己單獨的測試環(huán)境,測試環(huán)境就是運(yùn)行在開發(fā)本地機(jī)器上,部署非常簡單快速。測試環(huán)境用的是真實的用戶數(shù)據(jù)。
?
持續(xù)集成和測試自動化:每周發(fā)布一次。星期天晚上,要發(fā)布的構(gòu)建從主線上分支出來到發(fā)布分支,到星期二的中午如果沒有大的問題,就可以上線了。所有的測試運(yùn)行控制在10分鐘以內(nèi),所以不需要考慮不運(yùn)行哪些測試用例。運(yùn)行所有測試用例。(只是聽說,沒有經(jīng)過考證。)
?
嚴(yán)格實施代碼審計:在Facebook 做 code review時間大約占50%,管理者對代碼質(zhì)量負(fù)有一定責(zé)任 。甚至代碼質(zhì)量高于一切:Facebook Code review是重點KPI考核的對象,實行連坐制,如果因為代碼質(zhì)量問題,那么產(chǎn)生的KPI責(zé)任包括領(lǐng)導(dǎo)30%、程序員50%、審核人員20%。
?
在代碼checkin之前,都要由專人進(jìn)行review。Facebook 創(chuàng)始人兼 CEO 馬克扎克伯格會親自對 News Feed 每個代碼更新把關(guān)。在 Facebook,所有重大升級的代碼都進(jìn)行強(qiáng)制評估,任何一個改動都至少由一人把關(guān)。但是,無論工程師對 News Feed 做出任何改動,都將由扎克伯格親自把關(guān)。
?
內(nèi)測 (dog food):發(fā)布之前,公司員工使用要發(fā)布的功能。2-3天之內(nèi)可以有幾百個或上千個人在使用新功能。負(fù)責(zé)要發(fā)布功能的開發(fā)人員在星期天晚上到星期二中午之間會做大量的測試 (一邊上班,一邊刷微博,豈不是很爽 )。
?
通過灰度發(fā)布控制風(fēng)險:新功能本身質(zhì)量可能有問題,新功能也可能影響其它現(xiàn)有功能。為了減少或控制這些風(fēng)險。Facebook開發(fā)了一整套完善的發(fā)布,控制,監(jiān)控流程和工具。
?
做到:1.測試通過后,產(chǎn)品質(zhì)量基本有保證。2.即使有漏測的bug,只會影響很少量的用戶。3.及時監(jiān)控到問題。4.及時修復(fù)。
?
產(chǎn)品監(jiān)控:通過社區(qū)討論的正負(fù)面輿情,及與歷史應(yīng)用數(shù)據(jù)的對比情況,監(jiān)控產(chǎn)品的系統(tǒng)的運(yùn)行狀態(tài)技術(shù)修復(fù)。
?
Facebook質(zhì)量控制中引以為豪而且倍受矚目的就是“沒有專職測試工程師”, 所以個人認(rèn)為,專職測試工程師是個非常模糊的結(jié)論。尤其現(xiàn)在我們對產(chǎn)品質(zhì)量控制方法的不斷演變和提高,“測試”的概念不僅僅是指找bug了,所有圍繞提高產(chǎn)品質(zhì)量的工作都是測試。
?
頭銜上有沒有“測試”不重要,有沒有“測試”崗位不重要,重要的是如何有效保證和提高產(chǎn)品質(zhì)量。因此,某種意義上,開發(fā)工程師、運(yùn)維人員,其實都承擔(dān)了測試的職能,但沒有作為專門的崗位存在而已。
?
大家其實也關(guān)心,這么創(chuàng)新的氛圍下如果確保Facebook員工的質(zhì)量意識呢?我認(rèn)為其實有2點非常值得借鑒
1、公開透明化:Facebook的每個員工都有個積分系統(tǒng),其他員工可以對其進(jìn)行”點贊、踩“,當(dāng)然,對工程師而言。如果在發(fā)布過程中,出現(xiàn)有代碼bug導(dǎo)致無法順利發(fā)布的、或者代碼審查時發(fā)現(xiàn)代碼質(zhì)量很差的,都會被“踩“。
?
當(dāng)然,工程師努力取得牛逼的業(yè)績可以獲其他人的“贊“。這個積分直接會影響半年一度的績效評估。而且,透明化后如果經(jīng)常被裁的員工,在公司也很難立足了。
?
2、嚴(yán)格結(jié)果考核:工程師負(fù)責(zé)質(zhì)量,如果在運(yùn)維時出現(xiàn)由于某工程師代碼bug導(dǎo)致發(fā)布回退,或嚴(yán)重質(zhì)量事故的,會導(dǎo)致該工程師被“解雇“
?
因此,F(xiàn)acebook在質(zhì)量控制過程上有一套方法,在考核激勵上,也確保每個工程師必須重視自己代碼的質(zhì)量。因為,除了自己沒有其他人為你的代碼負(fù)責(zé),而且一旦出錯就是工程師的全責(zé),無可推卸。保證考核制度簡單,易于實施。
?
Facebook確實對員工賦予足夠的信任,但由此對立面。每個員工一旦違反規(guī)則,必須承擔(dān)嚴(yán)重的后果與責(zé)任。所以,對于很多人來說其實facebook的氛圍其實壓力非常大,而不像外界想的那么好“混“,創(chuàng)新企業(yè)的工作壓力不大,其實是誤解。因此,也印證一句話話,“天道酬勤”,創(chuàng)新也是如何啊。
?

?
?
如果對python自動化測試、web自動化、接口自動化、移動端自動化、大型互聯(lián)網(wǎng)架構(gòu)技術(shù)、面試經(jīng)驗交流等等感興趣的老鐵們,可以關(guān)注我。歡迎分享,評論,轉(zhuǎn)發(fā)。