不要成為工具的奴隸

jopen 11年前發布 | 8K 次閱讀 工具

開發人員很容易迷戀上工具,因為工具通常比較實用,而且具備明確定義的行為,比起學習最佳實踐或方法,學習工具更為簡單。然而,工具僅僅為解決問題提供協助,他們并不能自行解決問題。
 不要成為工具的奴隸

一位理解問題實質的開發人員能夠使用工具提高生產率和質量,而拙劣的程序員從來不投入時間或精力去理解如何更好的編程和如何避免缺陷,他們會花時間學習如何使用工具,但這種學習方式脫離了對工具目標以及如何高效使用的正確理解。

在某種程度上說,這其中有一部分是工具供應商的錯,他們嗅到了為一些普遍問題提供支持是一條財路,比如說:
 不要成為工具的奴隸

*缺陷追蹤器,幫助你進行缺陷追蹤管理
*版本控制系統,管理源代碼更改
*敏捷開發支持工具(Version One, JIRA)
*調試器,幫助你尋找缺陷

市面上有很多工具,但在這里我僅僅瀏覽一下下面的列表,同時指出在哪些地方開發人員和組織正在經受挑戰。記住,以下所有的統計數據都來源于40多年間的超過15000個項目。

缺陷跟蹤器

 不要成為工具的奴隸

一些公司還沒有用過缺陷跟蹤軟件,不管你信不信,我反正是信了,我遇到過這樣幾個奇葩公司,你一定覺得難以置信吧。沒有缺陷跟蹤軟件的結果是相當杯具的,我們有證據證實。

不充分的缺陷跟蹤方法:生產率 -15%,質量 -21%
就此我們達成了高度共識,那就是我們需要進行缺陷跟蹤,并且我們都清楚,離開了這類工具,管理大量缺陷是不可能的。

自動化缺陷跟蹤工具:生產率 +18%,質量 26%*

 不要成為工具的奴隸

先說一個問題,開發人員總是愛爭執哪個缺陷跟蹤系統最好,這里的根本問題在于,幾乎每個缺陷跟蹤系統設置不好都會導致糟糕的結果。實際上,如果每個缺陷跟蹤系統都能進行合理配置的話,結果都會大有裨益。這里最常見的誤區是:
*在缺陷生命周期狀態中引入了不相關屬性,即創建諸如”延期“, ”無法解決“或 ”已設計的功能“這樣的狀態。
*無法指出問題是否已被修復。
*無法理解誰負責解決缺陷。

工具的供應商非常樂意繼續提供這些缺陷跟蹤器的新版本,然而要高效地使用缺陷跟蹤器,更多的是取決于如何使用好這個工具,而非選擇哪一種工具。

很多公司都在設法解決的一個最基本的問題是:如何定義缺陷?缺陷通常是指代碼沒有遵照規范工作,但是假設我們沒有規范或規范很爛,那又會如何?你可以看一下《It’s not a bug, it’s…》獲取更多信息。

聰明的公司知道,是否理解缺陷跟蹤器的工作方式會帶來很大不同,你可以在《Bug Tracker Hell and How to Get Out》中找到更多缺陷跟蹤系統的周邊知識。

另一個普遍的問題是,公司通常會嘗試在缺陷跟蹤系統中管理新功能和需求,畢竟無論是需求還是缺陷都會導致代碼變動,那么為什么不將所有信息都放到缺陷跟蹤器中呢?你可以在《Don’t manage enhancements in the bug tracker》中學到為什么在缺陷跟蹤系統中管理需求和新功能是愚蠢的。

版本控制系統

 不要成為工具的奴隸

和缺陷控制系統一樣,大部分開發人員都將版本控制視為是一個必須的“保健”過程,如果離開它,你就可能換上嚴重疾病(在最不合適的時間)。

不充分的變動控制:生產率 -11%,質量 -16%
其實,所有的程序員都不喜歡版本控制系統,并且他們會相當直言不諱地指出版本控制系統所不能做到的事情。如果你很不幸,需要拍板最后用哪個版本控制系統,那么就寬慰一下自己吧,你的背后一定會有成群結隊的家伙在詛咒你。

版本控制只是個開始,與選擇哪個版本控制系統相比,理解如何組織代碼、集成持續構建技術、確保缺陷對應正確的版本,這些也同樣重要。

敏捷開發支持工具

很抱歉,對于Version One和JIRA,至簡的真理是,使用敏捷開發工具并不能讓你變得敏捷,看這里

當你真正理解敏捷開發的時候,你才能將這些工具的作用最大化,我有一個最高效的敏捷開發實現僅僅用到了Google Docs而已。

毋庸贅言。

調試器

 不要成為工具的奴隸

我已經寫了大量的文章,說明為什么調試器不是跟蹤缺陷的最好工具,所以這里我會換一種說法!

在軟件工程領域,最經久不衰的比率是1:10:100。也就是說,如果在測試前就能跟蹤缺陷(即QA前)的成本為1的話,那么在QA階段發現缺陷的 成本就是10倍,如果在部署的時候被你的客戶發現了,成本就是100倍,而大部分調試器在整個過程的10倍至100倍階段才會被使用。

這并不是說我不喜歡調試器,我只是相信所謂的預先測試消除缺陷策略,因為它的成本很低,又能保證高質量,預先測試消除缺陷策略包括:
規劃代碼,即PSP
測試驅動開發,TDD
契約式設計,DbC
代碼審查
對復雜代碼段進行結對編程

你可以在下面找到更多信息:
Defects are for Losers
Not planning is for Losers
Debuggers are for Losers
Are debuggers crutches

很少用到的工具

以下這些工具能夠帶來巨大的不同,但是很多開發人員卻不用它們:
自動化靜態分析:生產率 +21%,質量 +31%
自動化單元測試:生產率 +17%,質量 +24%

自動化單元測試經常在測試驅動開發(TDD)或數據驅動開發中引入,同時伴隨著持續開發技術。
自動化功能點分級:生產率 +17%,質量 +24%
自動化質量與風險預測:生產率 +16%,質量 +23%
自動化測試覆蓋率分析:生產率 +15%,質量 +21%
自動化部署支持:生產率 +15%,質量 +20%
自動化圈復雜度計算:生產率 +15%,質量 +20%

還沒有工具支持的一些重要技術

我們還有一些軟件開發的重要技術存在,但是那些工具供應商還沒有找到賺錢的方式。這些技術往往被大多數開發人員忽略,即便它們能在生產率和質量上帶來巨大改變。

個人軟件過程和團隊軟件過程是由Watts Humphrey建立的,他是致力于構建高質量軟件產品的先驅。
個人軟件過程:生產率 +21%,質量 +31%
團隊軟件過程:生產率 +21%,質量 +31%

代碼審查的重要性可以在下面兩篇文章中找到:
Inspections are not Optional
Software Professionals do Inspections

代碼審查:生產率 +21%,質量 +31%
需求審查:生產率 +18%,質量 +27%
正式的測試計劃:生產率 +17%,質量 +24%
功能點分析(IFPUG):生產率 +16%,質量 +22%

總結

肯定是一大群開發人員認為使用工具能夠使他們變得更給力。

但現實是,如果你脫離了對所要解決問題的實質的學習,僅僅去學一門工具的話,那就像你覺得你能夠在籃球場上贏下喬丹,僅僅因為你擁有一雙好的跑鞋。
學習工具并不能取代學習如何把一件事情做好。

真正給力的開發人員會持續學習那些能帶來更高生產率和質量的技術,無論這門技術是不是有工具支持。

原文鏈接: Dalip Mahal   翻譯: 伯樂在線 - Justin Wu
譯文鏈接: http://blog.jobbole.com/71689/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!