開發(fā)者生產(chǎn)力/代碼質(zhì)量與經(jīng)驗(yàn)無關(guān)?!
引用
你知道嗎,我們從來沒有發(fā)現(xiàn)一個(gè)開發(fā)人員多年的經(jīng)驗(yàn)與他的代碼質(zhì)量或生產(chǎn)力之間有直接關(guān)系。 |
關(guān)于開發(fā)人員經(jīng)驗(yàn)與生產(chǎn)力關(guān)系的研究
最初對于個(gè)人編程生產(chǎn)力的研究是在1968年進(jìn)行的,在這之后的30年間,其他研究人員至少做過8次同樣的研究,結(jié)果并沒有什么不同。他們在研究了一些平均有7年開發(fā)經(jīng)驗(yàn)的專業(yè)開發(fā)人員后統(tǒng)計(jì)出:
- 開始編碼時(shí)間比率約20 : 1
- 調(diào)試時(shí)間比率約25 : 1
- 程序執(zhí)行速度比率約10 : 1
- 程序大小比率為5:1
他們發(fā)現(xiàn)沒有一個(gè)開發(fā)人員的多年經(jīng)驗(yàn)和代碼質(zhì)量或生產(chǎn)力之間存在直接聯(lián)系。這說明經(jīng)驗(yàn)和生產(chǎn)力(即生成代碼的能力)之間不存在相關(guān)性,也說明經(jīng)驗(yàn)和軟件質(zhì)量(即***限度地減少缺陷)之間沒有相關(guān)性。
上圖展示了兩個(gè)開發(fā)人員群體——差的(生產(chǎn)效率、產(chǎn)品質(zhì)量均低)和優(yōu)秀的。研究發(fā)現(xiàn),每個(gè)群體中都存在開發(fā)經(jīng)驗(yàn)豐富和貧乏的開發(fā)人員。該研究只是說明多年的經(jīng)驗(yàn)并不重要,并沒有說明培訓(xùn)指導(dǎo)是否能幫助開發(fā)人員提升。
在不考慮合法性的前提下,這意味公司可以辭退掉擁有多年經(jīng)驗(yàn)、工資高但產(chǎn)出低的開發(fā)者,并雇用一些沒幾年經(jīng)驗(yàn)但高效高質(zhì)的開發(fā)者。
盡管研究存在缺陷,但是仍顯示出好的開發(fā)人員和差的開發(fā)人員之間存在數(shù)量級的差別,而這種差別與經(jīng)驗(yàn)無關(guān)。關(guān)于“開發(fā)人員之間存在數(shù)量級的差異”已經(jīng)被其他研究所證實(shí)。(見英文原文***的參考文獻(xiàn))
技術(shù)越來越先進(jìn),而開發(fā)者不是
你可能會認(rèn)為與過去相比,現(xiàn)在我們對軟件開發(fā)了解得更多,畢竟現(xiàn)在:
- 我們有更好的計(jì)算機(jī)語言
- 我們有更先進(jìn)的技術(shù)
- 我們有對高效開發(fā)模式有更好的研究
- 我們在大學(xué)中有正規(guī)的軟件專業(yè)
上面這些都是事實(shí),但現(xiàn)在開發(fā)人員之間仍然存在較大的差異。這意味著有一些X因素驅(qū)動著產(chǎn)品開發(fā),X因素可能是開發(fā)人員規(guī)劃并作出正確決定的能力。
壞消息是,如果你不是一個(gè)高效、高質(zhì)量的開發(fā)者,那么僅僅是多年的經(jīng)驗(yàn)可能不會令你變得更好。 |
學(xué)會決策
開發(fā)人員每一天都面臨著“如何構(gòu)建自己的代碼”的決策。比如如何:
- 規(guī)劃代碼路徑
- 將函數(shù)封裝成類
- 將類封裝成包/模塊
開發(fā)人員面臨的編碼決策,其中有許多是復(fù)雜的,好的開發(fā)人員會安排他們的工作,并做出正確的決定。差的開發(fā)人員只是“跳過”,他們認(rèn)為,他們總是可以重寫代碼或在做出決定后再彌補(bǔ)錯(cuò)誤。差的開發(fā)人員甚至沒有意識到他們的決策過程是糟糕的,他們完全可以通過規(guī)劃工作來變得更好。
解決方案:可能是PSP和TSP
Watts Humphrey試圖通過針對個(gè)人的PSP(Personal Software Process,個(gè)體軟件過程)和針對團(tuán)隊(duì)的TSP(Team Software Process,團(tuán)隊(duì)軟件過程)來讓開發(fā)人員了解評估、規(guī)劃開發(fā)和決策的價(jià)值。但只有很少的組織接受他。Capers Jones已經(jīng)分析了超過18,000個(gè)項(xiàng)目,發(fā)現(xiàn):
- PSP可以提高生產(chǎn)力21.2%,提高質(zhì)量31.2%
- TSP可以提高工作效率20.9%,提高質(zhì)量30.9%
這些研究,對創(chuàng)建開發(fā)團(tuán)隊(duì)有一定的幫助。比起擁有平庸開發(fā)人員的大型團(tuán)隊(duì)來說,擁有高效開發(fā)人員的小型團(tuán)隊(duì)更為合理,因?yàn)樗麄冎廊绾我?guī)劃并作出正確的決定。
PSP和TSP建議:改造一個(gè)差的開發(fā)人員的***的方式是教他們?nèi)绾巫鞒龈玫臎Q策。 |
要知道,隨著時(shí)間的推移,知識技能、編寫高效高質(zhì)代碼的能力是會提升的。
結(jié)論
本質(zhì)上,我們都知道這一點(diǎn),但只是很難做到。如果公司中的高級管理人員知道這些研究,那么高效高質(zhì)的開發(fā)者會得到更多的報(bào)酬,差的開發(fā)者可能就需要另謀高就了。這樣做不僅降低了構(gòu)建軟件的成本,同時(shí)也提高了軟件質(zhì)量。
不幸的是,我們一直都在為各種編程方法、語言和技術(shù)辯論、斗爭不已。大多數(shù)組織中的開發(fā)人員的編碼方式,正在逐步使“巫毒科學(xué)(VoodooScience)”看起來像“科學(xué)”。(譯者注:指一些不正統(tǒng)的編碼方式逐漸成為主流)。