做技術(shù)開(kāi)發(fā),Bug越多的程序員越厲害
悖論:Bug越多越好
對(duì)于互聯(lián)網(wǎng)技術(shù)外行的人來(lái)說(shuō),直覺(jué)上理解,肯定是Bug越少越好的,說(shuō)明 這個(gè)人做事穩(wěn)定,質(zhì)量高。
如果你去問(wèn)測(cè)試人員,一位技術(shù)開(kāi)發(fā)工程師是Bug越多越好,還是越少越好?測(cè)試人員會(huì)告訴你,肯定是Bug越少越好,因?yàn)樗龅墓δ芏挤蠝y(cè)試用例和產(chǎn)品需求的要求,千行代碼缺陷少,質(zhì)量高,返工率低。
但作為技術(shù)人員的我,發(fā)現(xiàn)一個(gè)悖論:Bug越多的程序員越厲害。
為什么?
Bug數(shù)量在直觀上是反映質(zhì)量的水平,看似Bug和質(zhì)量成反比,Bug越少質(zhì)量越高,Bug越多質(zhì)量越低。
我們也可以從另外一個(gè)新穎的視角來(lái)觀察。Bug數(shù)量在一定程度上和程序員的工作產(chǎn)出、負(fù)責(zé)的業(yè)務(wù)范圍、承擔(dān)的責(zé)任和溝通對(duì)接的密集度有關(guān)。簡(jiǎn)而言之,Bug數(shù)量和程序員的效率、能力、職責(zé)有關(guān),而且成一定的正比。
下面我來(lái)解釋下。
再次回顧對(duì)Bug的定義
關(guān)于Bug,百度百科的定義是:
bug是計(jì)算機(jī)領(lǐng)域?qū)I(yè)術(shù)語(yǔ),bug原意是“臭蟲(chóng)”,現(xiàn)在用來(lái)指代計(jì)算機(jī)上存在的漏洞,原因是系統(tǒng)安全策略上存在的缺陷,有攻擊者能夠在未授權(quán)的情況下訪(fǎng)問(wèn)的危害。
百度百科

圖片來(lái)源網(wǎng)絡(luò)
在日常項(xiàng)目開(kāi)發(fā)中,在平時(shí)工作中,根據(jù)Bug產(chǎn)生的時(shí)機(jī)和環(huán)境,我們可以把Bug細(xì)分為:線(xiàn)下缺陷、線(xiàn)上問(wèn)題、線(xiàn)上故障。
線(xiàn)下缺陷,是指在未上線(xiàn)前,主要在測(cè)試階段,在進(jìn)行功能驗(yàn)收時(shí),由測(cè)試工程師發(fā)現(xiàn)和提出、記錄的Bug缺陷。這時(shí)依據(jù)產(chǎn)品需求原型、測(cè)試用例,在技術(shù)人員完成開(kāi)發(fā)并提測(cè)后,測(cè)試工程師通過(guò)軟件界面進(jìn)行操作和人工驗(yàn)收,若發(fā)現(xiàn)功能缺失、邏輯錯(cuò)誤或顯示錯(cuò)亂等問(wèn)題,則記作Bug,并提給技術(shù)人員進(jìn)行修復(fù)。
線(xiàn)上問(wèn)題,是指發(fā)生在正式環(huán)境,也就是生產(chǎn)環(huán)境,因?yàn)闀?huì)直接影響真實(shí)用戶(hù)的使用和體驗(yàn),并且對(duì)正常的業(yè)務(wù)運(yùn)營(yíng)流程有所影響,需要進(jìn)行盡快的修復(fù)。但影響的范圍只是局部功能界面、個(gè)別或少數(shù)的用戶(hù)、或極端的非正常場(chǎng)景分支,通常由內(nèi)部人員或用戶(hù)發(fā)現(xiàn),然后反饋和收集起來(lái)。
線(xiàn)上故障,是情節(jié)最為嚴(yán)重、影響范圍最大、損失最高的,它發(fā)生在正式環(huán)境,可能會(huì)對(duì)公司的收益、服務(wù)的客戶(hù)群體、企業(yè)品牌形象、數(shù)據(jù)庫(kù)信息等造成不可逆轉(zhuǎn)或不可挽回的損失。例如,系統(tǒng)宕機(jī)、停止服務(wù)、無(wú)法響應(yīng)、信息泄露等。
在本次所說(shuō)的Bug數(shù)量,主要是指:Bug數(shù)量=線(xiàn)下缺陷數(shù)量+線(xiàn)上問(wèn)題缺陷數(shù)量,不涉及線(xiàn)上故障。因?yàn)?span style="letter-spacing: 0.544px;background-color: rgb(255, 255, 255);">線(xiàn)上故障是需要嚴(yán)肅對(duì)待的,關(guān)乎企業(yè)層面的SLA服務(wù)水平協(xié)議,也就是通常所說(shuō)的99%、99.9%、99.99%、99.999%。
雖然本次暫時(shí)不討論線(xiàn)上故障這個(gè)沉重的話(huà)題,但我們應(yīng)該清晰,Bug的修復(fù)成本,越往后代價(jià)越高。

例如,前幾天發(fā)生的Salesforce全球大宕機(jī)事件,

又如最近因微信無(wú)法支付而導(dǎo)致美團(tuán)的故障。

厲害的程序員都有哪些硬核技能
硬核技能1、效率高,產(chǎn)出高
高效的程序員,有時(shí)能一個(gè)人頂好幾個(gè)人。他能快速理解業(yè)務(wù)需求,結(jié)合自己對(duì)技術(shù)的掌握,有效應(yīng)用,并和項(xiàng)目成員充分溝通,按計(jì)劃推進(jìn)的同時(shí),主動(dòng)給予反饋。
產(chǎn)出高,意味需求開(kāi)發(fā)速度快,在同一時(shí)間段內(nèi)能完成和交付的任務(wù)、需求、項(xiàng)目和版本就會(huì)比旁邊的人多,需要對(duì)接的測(cè)試人員也會(huì)更多,由此接到的線(xiàn)下缺陷Bug數(shù)量也會(huì)多。
這并不是指為了追求速度而罔顧質(zhì)量,還要分析線(xiàn)下缺陷Bug數(shù)量的歸因,到底是數(shù)據(jù)問(wèn)題,還是環(huán)境問(wèn)題,還是代碼問(wèn)題,還是誤報(bào)或確實(shí)是很隱晦的問(wèn)題。如果分析下來(lái),最后主要?dú)w因分類(lèi)都不是代碼問(wèn)題,那證明這位程序員確實(shí)很高效也很高質(zhì)量。
小結(jié):缺陷Bug數(shù)量越多,反映技術(shù)人員效率越高,但還要分析Bug歸因作為佐證。
硬核技能2、在公司任職時(shí)間長(zhǎng),對(duì)核心業(yè)務(wù)有深厚的理解
技術(shù)人員有兩大優(yōu)勢(shì),一方面是技術(shù)優(yōu)勢(shì),一方面是業(yè)務(wù)優(yōu)勢(shì)。
在公司任職時(shí)間越長(zhǎng),對(duì)企業(yè)的核心業(yè)務(wù)就會(huì)越為熟悉,并且會(huì)比新人、以及其他同伴更清楚特定行業(yè)領(lǐng)域業(yè)務(wù)鮮為人知的邏輯、規(guī)則和設(shè)計(jì)。這是稀缺性和權(quán)威性的代表。
自然而然,當(dāng)新人有不懂時(shí),針對(duì)線(xiàn)上問(wèn)題,就會(huì)首先想到負(fù)責(zé)核心業(yè)務(wù)的核心人員。即便是老員工,在碰到線(xiàn)上問(wèn)題時(shí),也會(huì)把這個(gè)問(wèn)題記錄下來(lái)并轉(zhuǎn)交給有經(jīng)驗(yàn)的核心技術(shù)人員進(jìn)行處理。
所以,程序員的線(xiàn)上問(wèn)題Bug數(shù)量越多,有可能并不是他自身的技術(shù)問(wèn)題,而是由于公司和團(tuán)隊(duì)需要他的豐富經(jīng)驗(yàn)和深厚的知識(shí)來(lái)解決線(xiàn)上發(fā)生的問(wèn)題。
我有一段真實(shí)的親身經(jīng)歷。曾經(jīng)在某租車(chē)平臺(tái)任職時(shí),幾乎我們每天遇到的關(guān)于國(guó)際租車(chē)的用戶(hù)案例都是不一樣的,原因千變?nèi)f化。Bug數(shù)量按負(fù)責(zé)人統(tǒng)計(jì)下來(lái),很明顯看到第一位程序員負(fù)責(zé)的Bug最多,幾乎相當(dāng)于后面全部人的Bug的數(shù)量之和。原因是這位程序員,他工作經(jīng)驗(yàn)豐富,從系統(tǒng)的早期搭建開(kāi)始就一直參與其中,不僅對(duì)技術(shù)、對(duì)業(yè)務(wù)、對(duì)各部門(mén)的人員,還對(duì)各種“疑難雜癥”都有解決的妙招。所以,很多搞不定的問(wèn)題或棘手的難題都丟給他。所以,他的Bug最多,也是最為重要的靈魂人物。
小結(jié):線(xiàn)上問(wèn)題Bug數(shù)量越多的程序員,對(duì)核心業(yè)務(wù)的理解越深厚,并且會(huì)掌握鮮為人知的專(zhuān)家知識(shí)。
硬核技能3、人源廣,影響力強(qiáng)
還有一種情況是,程序員人緣好,平時(shí)工作中也非常樂(lè)意幫助別人解決一些非本職崗位的問(wèn)題。當(dāng)其他技術(shù)人員有解決不了的問(wèn)題,或者有測(cè)試人員提了一個(gè)Bug卻找不到負(fù)責(zé)人來(lái)解決時(shí),又或者產(chǎn)品有一個(gè)很小的尿點(diǎn)需求時(shí),都會(huì)來(lái)找他幫忙解決。
這時(shí),線(xiàn)上或線(xiàn)下Bug就會(huì)轉(zhuǎn)給這位受歡迎的程序員來(lái)解決。能者多勞。
小結(jié):非本職崗位的Bug越多,程序員的影響力越強(qiáng)。
用YesDev統(tǒng)計(jì)和跟蹤缺陷
YesDev是面向軟件研發(fā)的項(xiàng)目協(xié)作套件,你可以使用它來(lái)進(jìn)行問(wèn)題、缺陷、Bug的管理、跟蹤和統(tǒng)計(jì)。
創(chuàng)建問(wèn)題并指派
在YesDev的頂部菜單,有添加 新問(wèn)題的快捷入口。

在問(wèn)題描述中,你可以直接粘貼截圖,非常方便。然后指派給對(duì)應(yīng)的技術(shù)人員。

負(fù)責(zé)人收到郵件通知并修復(fù)問(wèn)題
負(fù)責(zé)問(wèn)題的人員,會(huì)收到相應(yīng)的郵件通知。類(lèi)似:

修復(fù)后,可以關(guān)閉問(wèn)題。隨后,創(chuàng)建人核對(duì)驗(yàn)收關(guān)關(guān)閉問(wèn)題。
查看我負(fù)責(zé)的問(wèn)題和查看我創(chuàng)建的問(wèn)題

缺陷統(tǒng)計(jì)
缺陷統(tǒng)計(jì),常用的統(tǒng)計(jì)數(shù)據(jù),可以分為:
按產(chǎn)品統(tǒng)計(jì)
按負(fù)責(zé)人統(tǒng)計(jì)
按創(chuàng)建人統(tǒng)計(jì)
按項(xiàng)目統(tǒng)計(jì)
按需求統(tǒng)計(jì)
按優(yōu)先級(jí)統(tǒng)計(jì)
按歸因統(tǒng)計(jì)
按解決時(shí)長(zhǎng)統(tǒng)計(jì)

根據(jù)經(jīng)驗(yàn)總結(jié),在按負(fù)責(zé)人統(tǒng)計(jì)時(shí),前面1~3位的人員是BUG數(shù)量最多的人,通常相當(dāng)于后面長(zhǎng)尾全部人員的BUG數(shù)量之和。下面是我們團(tuán)隊(duì)的真實(shí)統(tǒng)計(jì)數(shù)據(jù),BUG數(shù)量越多的技術(shù)人員,他們的貢獻(xiàn)力度就越高。

