導(dǎo)語
本文為《Quality Wall to Protect Developers Against Stress and Fear》文章的內(nèi)容摘要,1200字帶你領(lǐng)略質(zhì)量墻的魅力,完整版本,敬請期待。
作者:Yegor Bugayenko譯者:徐毅前言
程序員到底應(yīng)該為所寫軟件的質(zhì)量擔(dān)負(fù)多大的責(zé)任?有人認(rèn)為程序員應(yīng)該為產(chǎn)品負(fù)責(zé),也有人認(rèn)為程序員的主要責(zé)任是交付速度,項(xiàng)目質(zhì)量是項(xiàng)目要去考慮的問題。
程序員編寫軟件的過程中,會創(chuàng)造有缺陷代碼或“Bug”。軟件項(xiàng)目的主要目標(biāo)之一就是在提升質(zhì)量的同時(shí)減少Bug數(shù)量。手工測試和同行評審等常用方法都是等代碼里已經(jīng)出現(xiàn)了Bug才去尋找,過于被動(dòng)。采取預(yù)防措施提升代碼質(zhì)量的代價(jià)更低,也更為人所青睞。
“招募更好的程序員”是最為流行的一種方法,我們都認(rèn)為更專業(yè)、更昂貴和更有才干的程序員能夠?qū)懗鰶]有錯(cuò)誤的代碼。然而,真相并非如此。正如Kaner等人所言,“程序員相互之間存在著巨大的差異,但沒有誰的工作是不會出錯(cuò)的”。
責(zé)備那些產(chǎn)出了Bug的程序員們,是另一種同樣備受質(zhì)疑的方法。其負(fù)面影響廣為人知,弊遠(yuǎn)大于利,導(dǎo)致程序員們壓力越來越大、工作越來越慢、拋出更多代碼,被稱之為“恐懼驅(qū)動(dòng)開發(fā)”。但正如Evans知名博文“恐懼讓你成為更糟的程序員”所言,對軟件開發(fā)來說,恐懼只會讓我們事與愿違。
打造“質(zhì)量墻”
所有程序員都會犯錯(cuò),但他們不應(yīng)該因此而被責(zé)罰。該如何解開迷局呢?該怎么做才能夠減少代碼缺陷、同時(shí)允許程序員隨意犯錯(cuò)呢?辦法是有的。別為了代碼質(zhì)量責(zé)怪他們,讓項(xiàng)目去關(guān)注質(zhì)量、讓程序員能夠無所畏懼地全速編碼,效果好得不是一點(diǎn)點(diǎn)。辦法就是打造一面強(qiáng)大的、自動(dòng)化的“質(zhì)量墻”,守護(hù)其代碼基。墻越強(qiáng)大,程序員就越覺得安全。
首先,他們將在自己的“特性分支”上修改代碼和犯錯(cuò)誤;其次,向主代碼基提出合并代碼變更,建議采取拉取請求的方式;第三,質(zhì)量墻將驗(yàn)證這些變更,如果發(fā)現(xiàn)任何新錯(cuò)誤就會拒絕合入;最后,只要作者移除掉所有錯(cuò)誤,質(zhì)量墻就會合入這些變更。
如何構(gòu)建這堵“墻”
軟件項(xiàng)目可以采取如下一些技術(shù)性和組織性的措施來構(gòu)建這樣的質(zhì)量墻,并保護(hù)源代碼不被程序員們所破壞。
自動(dòng)化構(gòu)建
單元測試和集成測試
強(qiáng)制覆蓋率閾值
變異覆蓋率閾值
強(qiáng)制靜態(tài)分析
多步驟代碼評審
只讀主干分支
“質(zhì)量墻”讓程序員快速交付,保護(hù)項(xiàng)目
讓程序員在合并前備受折磨的障礙還有很多。Nygard在他的《發(fā)布!軟件的設(shè)計(jì)與部署》書中給出了建議。測試失敗?拒絕。Lint有告警?拒絕。集成測試導(dǎo)致構(gòu)建失???拒絕。換句話說,拒絕變更的動(dòng)作越快速越便宜,給項(xiàng)目帶來的好處也越大。問題是,如果流程和代碼倉有這么多限制,一個(gè)程序員怎么做到更快速地交付呢?如果質(zhì)量墻已經(jīng)罩住整個(gè)項(xiàng)目,那么如下這些技巧,不管誰用都能受益:
提交更小變更
以退為進(jìn)
別害怕搞破壞
隔離變更
如果項(xiàng)目和程序員之間存在利益沖突,那就能創(chuàng)造出高質(zhì)量的產(chǎn)品并迅速發(fā)展。項(xiàng)目可以強(qiáng)化質(zhì)量,而程序員也可以提交代碼向前進(jìn)、快速頻繁地完成變更。但不幸的是,大多數(shù)項(xiàng)目都與之背道而馳,他們將質(zhì)量控制權(quán)交予程序員,滿心期盼程序員們會“不作惡”。而這會導(dǎo)致沮喪、痛苦、對犯錯(cuò)的持久恐懼、長時(shí)間的拖延、責(zé)備和羞辱。最終,項(xiàng)目及其程序員兩敗俱傷。
快快建好質(zhì)量墻吧,它既保護(hù)了程序員,也保護(hù)了項(xiàng)目。
原文標(biāo)題:這本書終于有人翻譯了!“程序員到底應(yīng)該為所寫軟件的質(zhì)量擔(dān)負(fù)多大責(zé)任?”
文章出處:【微信公眾號:華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
程序員
+關(guān)注
關(guān)注
4文章
949瀏覽量
29744 -
BUG
+關(guān)注
關(guān)注
0文章
155瀏覽量
15639
原文標(biāo)題:這本書終于有人翻譯了!“程序員到底應(yīng)該為所寫軟件的質(zhì)量擔(dān)負(fù)多大責(zé)任?”
文章出處:【微信號:Huawei_Developer,微信公眾號:華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論