1. 程式人生 > >你的leader還在考核你的千行程式碼Bug率嗎?

你的leader還在考核你的千行程式碼Bug率嗎?

管理學大師德魯克說:你如果你無法度量它,就無法管理它。要想做有效的管理,就很難繞開度量的問題。

軟體開發的過程或者技術團隊的管理也存在著如何去合理的度量效率的問題。而度量是把雙刃劍,度量具有極強的引導性。度量指標會激勵團隊重視並改善能夠度量元素,也會導致你忽視無法度量的元素,並使得問題進一步惡化。所以,選擇合適的度量指標考核技術團隊成員,需要慎重考慮。例如,程式碼行數和千行程式碼Bug率指標就值得商榷。

什麼是千行程式碼Bug率

首先我們來看一下,千行程式碼Bug率是怎麼定義的:

千行程式碼Bug率 = Bug數量/ (程式碼行數/1000)

度量的標準:千行程式碼Bug率數值越小質量越好。

關於CMMI級別中和BUG率相關的資訊如下:

CMMI級別BUG率
CMM1級 11.95‰
CMM2級 5.52‰
CMM3級 2.39‰
CMM4級 0.92‰
CMM5級 0.32‰

考核千行程式碼Bug率的問題

從考核千行程式碼Bug率來看,主要存在兩個方面的問題: 
首先,從考核標準上來說,Bug率數值越小就說明越好,基於這個結果,會引導團隊成員做出一些對長遠和整體效率無益的行為,例如: 
1. 增大基數,增加無意義程式碼 
2. 把定長迴圈分開寫,寫成順序方法 
3. 把可配置資訊寫死到程式碼中 
4. 大量的複製、貼上程式碼 
5. 重新發明各種輪子

統計“千行程式碼Bug率”和“每日生產程式碼行數”一樣,都是沒經過大腦思考,而直接打算把優秀員工踢出團隊的懶人式管理方式。特別是對從事智力型工作工程師來說,是很不合適的考量指標。

因為優秀的程式設計師是通過減少程式碼行數來增加功能的。

千行程式碼Bug率,雖然沒有明確鼓勵增加程式碼行數,但是這個計算結果對於優秀的員工來說是相當的不公平。它隱含的推廣了“儘量增大程式碼行數”這個意思。

其次,從考核階段看,Bug率的資料主要產出在研發階段的後期,及提交測試後產出bug數。從專案的研發階段和效率價值金字塔來看,其對專案的整體質量方面更多的聚焦在微觀層面問題,整體的質量的影響範圍會較小。而前面幾個階段的缺陷,會影響整個專案的進度,甚至導致專案失敗,管理者和團隊更應該將風險控制和度量指標向前移。 

研發階段和效率價值金字塔

如何更合理的度量質量

如果考核千行程式碼Bug率不能很好的解決質量核心問題,那我們還有那些方法和方案來提高專案的整體質量呢? 
個人覺得,我們還是從專案的研發階段和效率價值金字塔出發,重整體上去把控質量,上下游一體,從源頭開始:

1. 需求的評審 
2. 架構設計方案評審 
3. 程式碼模組設計,包的依賴的規劃,介面的設計的review
4. 程式碼的review的機制 
5. 測試用例評審
6. 使用程式碼檢測工具,自動發現問題

過程評審是最有效也是成本最低的質量和效率保證和提升的手段。另外,過程評審還是迅速提高新人能力及其成果物的規範性的一個有效手段。 
但是過程評審,也存在一些問題: 
1. 前期過度依賴於團隊的人員素質 
2. 規則的定義也比較難,產出不好量化 
3. 評審耗時多 
4. 團隊的意識不一致

對於過程評審的實施,最核心的統一團隊意識,團隊意識不一致時,效果一定不好。 意識意識不一致,在資源的投入上就會縮手縮腳;只有把過程評審做到位,才能體會到評審活動的高效,避免那種走馬觀花式的“評審”,是浪費時間,不是真正的評審。到位地完成評審後,會有那種對系統質量“踏實了”的感覺,過程中輔以嚴密的變更管理和風險控制手段,系統質量出大問題可行性會很小或者近乎為零。

系統質量是要靠上游工程做出來的,而且上游的工作質量會更為重要,上游的問題的影響範圍將更廣,對效率和價值的影響更大,應該是我們重點關注的地方。僅僅依賴下游工程(種種測試)來把質量關,是十分低效,而且代價是非常昂貴的。

總結

想做有效的管理,就很難繞開度量的問題。在選擇度量指標上,大部分管理者總是傾向於關注容易度量的指標,而忽略難以度量的指標。但是容易度量的指標不一定是重要的,難以度量的反而可能是重要的。 
軟體開發產出最直觀的結論就是一行行程式碼,實際上程式碼行數的多少並不代表價值的多少。當考核不合理導致出現大量的複製,不合理的設計,大量的冗餘,不但難以理解和維護,甚至沒有實際執行起來。這樣就造成大量的時間浪費,同時也造成質量的嚴重腐化。 
而基於全過程的評審機制和持續改進方法,可以很好的改善質量。但持續改進需要一個過程,需全團隊從認知達成一致,並共享問題,統一步調和規範,持續的執行和改進。

另外,從工程師自身來說,千行程式碼Bug率用來自我評估和改進,還是很有價值的。

相關推薦

leader考核程式碼Bug

管理學大師德魯克說:你如果你無法度量它,就無法管理它。要想做有效的管理,就很難繞開度量的問題。 軟體開發的過程或者技術團隊的管理也存在著如何去合理的度量效率的問題。而度量是把雙刃劍,度量具有極強的引導性。度量指標會激勵團隊重視並改善能夠度量元素,也會導致你忽視無法度量的元素,並使得問題進一步惡化。所以,選擇

關於【程式碼bug】的各種思考

先佔個坑。 初衷是想如何提高程式碼質量。 有幾篇文章還不錯,可以參考下。 【千行程式碼bug率】-1 http://www.sohu.com/a/130146757_354963 【千行程式碼bug率】-2 https://www.jianshu.com/p/5f06bf6ed

阿里的架構師將Python基礎總結為程式碼,只為讓更多的人學好Python

某天大佬很是自信的告訴我,只要學會這千行程式碼,不管你是零基礎還是弱基礎或是沒有接觸過程式設計,都可以快速入門Python!當時我就不信邪啊,等我看完之後,即使作為一個Python老鳥了,還是領會到了很多大佬的獨特見解!   麻省理工教授將Python基礎總結成千行程式碼,讓

mybatis逆向工程,生成的xml檔案重複ResultMap,有上程式碼問題。org.apache.ibatis.exceptions.PersistenceException

org.apache.ibatis.exceptions.PersistenceException: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The

MySql資料庫細節使用規範詳細解讀勝過程式碼優化

版權宣告:本文為博主原創文章,未經博主允許不得轉載。    https://blog.csdn.net/kwame211/article/details/76169262 適用場景:併發量大、資料量大的網際網路業務 一、基礎規範 (1)必須使用InnoDB儲存引擎

現在在手動生成set,get方法?使用lombok

JAVA面向物件程式設計中的封閉性和安全性。封閉性即對類中的域變數進行封閉操作,即用private來修飾他們,如此一來其他類則不能對該變數訪問。這樣我們就將這些變數封閉在了類內部,這樣就提高了資料的安全性,當我們想要操作這些域變數怎麼辦呢?     我們可以通過兩種方

離十萬程式碼差多遠?(程式實現)

前言 自古程式設計界流傳著這樣一個傳說,十萬行程式碼堆出一個程式大牛,所以我們很多小白們都奮鬥在敲程式碼的路上,那麼我們究竟離那十萬行程式碼還差多遠呢?! 這個程式的靈感就來源於此。我們將用golang實現出你離十萬行程式碼的距離! 分析 此程式的關鍵在於能夠深度挖掘目錄中的所有

第一程式碼——第十三章:繼續進階——應該掌握的高階技巧

目錄: 13.1 全域性獲取 Context的技巧 13.2 使用 Intent傳遞物件 13.2.1 Serializable 方式 13.2.2 Parcelable 方式 13.3 定製自己的日誌工具 13.4 除錯Android 程式 13.5 建立定時任務

25程式碼爬取4399小遊戲資料,看下童年的遊戲是否

前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理。 還記得童年的網頁小遊戲嗎?今天帶大家爬取4399小遊戲網站的資料,遊戲名字+連結地址 目標網站 http://www.4399.com/   基本環境配置 python 3.6 pych

的女神變成字元畫,python只需三十程式碼

  專案需求 有時候,我們的女朋友們 總是會莫名其妙的耍點小脾氣~   學習Python中有不明白推薦加入交流群                 號:516107834 &nbs

十幾程式碼就可以讓的微信小程式掛掉

mpvue ( github 地址請參見)是一個使用 Vue.js 開發小程式的前端框架。框架基於 Vue.js 核心, mpvue修改了 Vue.js 的 runtime 和 compiler 實現,使其可以執行在小程式環境中,從而為小程式開發引入了整套 Vue.js 開發體

200程式碼,一行行教自制微信機器人

參加 2018 AI開發者大會,請點選 ↑↑↑ 作者|上海小胖,四大諮詢的TechLead,mongoDB Professional 獲得者。「Python專欄」專注Python領域的各種技術:爬蟲、DevOps、人工智慧、Web開發等。還有「大航海計劃」,各種內推活

從第一程式碼到發鏈只需一小時,用這款新工具,也能做到

古羅馬,“乘法”是隻有御用數學家才能理解的深奧概念——而當阿拉伯數字出現,孩童亦能於紙上演算。 新工具不僅提升效率,還可為前人所不能。作為活躍開發領域之一,區塊鏈新技術、工具、平臺、語言與框架層出不窮,然而面對紛繁複雜的選擇,開發者難以面面俱到。《區塊鏈大本營 | 新工具》欄目

python爬蟲——40程式碼爬取「筆趣看」全部小說 都看了

需求分析 ”筆趣看“ 是一個盜版小說網站,這裡有各大知名小說網站的小說,更新速度略慢於正版網站。但是該網站只支援線上瀏覽,不支援小說下載,對於想要下載下來以防斷網或者網速不好時也能看的童鞋來說不太友好。因此,本次練習將爬取該網站所有小說。PS:本次練習僅為學習交流,請各位童鞋支援正版。 爬取

程式設計師的小技能,1程式碼修改開機密碼、1張圖片讓電腦宕機

程式設計師很忙,忙著敲程式碼debug,程式設計師有時候也很閒,閒下來的就是就開始自黑,自黑的段子越來越多還被編出了一首詩:“格子襯衫雙肩包、錢多話少死得早,晚睡晚起加班多,沒事就和產品吵”。這屬於藝術,來源於生活,也高於生活,有了誇張的成分。 程式設計師作為一個門檻較高的職業,從業人員的

Python 十程式碼秒變撩妹達人

做微信聊天機器人,實現步驟: 1.獲取微信的使用權,即python指令碼能控制微信收發資訊。 2.python指令碼收到聊天資訊後,要對該資訊進行處理,返回機器人的迴應資訊。 簡易版程式碼 from wxpy import * #apikey在http://www.t

12程式碼教會用python讀excel檔案,提取資料,生成條形碼

  一、需求分析 條形碼應用廣泛,尤其是人事、財務和庫管等等崗位,常需根據excel檔案成批生成條碼,如果是經常性天天做,用excel的自己控制元件還是很枯燥煩人的。 當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢?  

在生產環境改程式碼麼?函式計算版本管理(二)事件驅動模式中的使用

在瞭解了函式計算版本管理的基本概念後,我們來看看如何在事件驅動的模式中使用版本和別名。 阿里雲函式計算以事件驅動的方式連線其他服務。事件源是事件的生產者,函式是事件的處理者,而觸發器則提供了一種集中的和統一的方式來管理不同的事件源。當事件源觸發事件時,如果滿足觸發器定義的規則,事件源會自動呼叫關聯的函式處理

在生產環境改程式碼麼?函式計算版本管理(三)使用別名進行灰度釋出

通過了解阿里雲函式計算新功能版本管理在事件驅動模式中的使用,我們看到了別名是如何簡化新版本上線的過程的。然而現實是殘酷的,直接更改別名指向的版本來升級服務時,往往會出現新版本引入帶來的不穩定,有沒有更好的方法呢?別名的灰度釋出功能該登場了。函式計算提供的別名,可以指向一個主版本和一個灰度版本,並指定灰度版本的

工作幾年只會死磕程式碼,難怪升不了職加不了薪

只要需求不改變!哥便待你如初戀! 又到了一年一度的跳槽季,創業維艱,很多人想跳槽卻苦於資本市場不好,老闆們招人少了,或者招人要求提高了。 我的朋友因為公司不漲薪想要換工作,剛開始信心十足,面了好幾家,結果不是她不滿意對方,就是對方不滿意她的價格。最後面得沒了信心和耐心