一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

程序員編程生產(chǎn)力相差10倍意味著什么?

  在軟件工程研究中,被驗(yàn)證得最多的結(jié)論就是對(duì)于同等經(jīng)驗(yàn)的兩個(gè)不同程序員,在效率和質(zhì)量上可能會(huì)有10倍的差距。研究人員還發(fā)現(xiàn),這種差距也適用于團(tuán)隊(duì)級(jí)別上,也就是說(shuō)在同一行業(yè)內(nèi)不同的團(tuán)隊(duì)也是如此。

  軟件開(kāi)發(fā)中個(gè)人效率的變化

  首先發(fā)現(xiàn)不同的人在編程生產(chǎn)力上的巨大差距的研究,是1960年由Sackman、Erikson以及Grant三個(gè)人完成的。他們研究了工作經(jīng)驗(yàn)平均在7年的專業(yè)程序員,并發(fā)現(xiàn)最好和最差的程序員寫(xiě)新代碼的時(shí)間比為20:1;調(diào)試次數(shù)是25:1;程序大小是5:1;程序的執(zhí)行效率是10:1。他們還發(fā)現(xiàn),程序員的經(jīng)驗(yàn)和代碼質(zhì)量或效率并沒(méi)有關(guān)系。

  在詳細(xì)地研究了Sackman、Erickson以及Grant的研究結(jié)果之后,我們可以發(fā)現(xiàn)他們所使用的方法中有很多缺陷,例如把使用低級(jí)程序語(yǔ)言和高級(jí)程序語(yǔ)言的程序員合在一起研究等。但是,即便把這些缺陷考慮進(jìn)來(lái),他們的數(shù)據(jù)也仍然表明,最好的程序員和最差的程序員之間的差距能達(dá)到10倍以上。

  那次研究之后,還有很多其他關(guān)于專業(yè)程序員的相關(guān)研究都證明了一個(gè)結(jié)論:程序員的水平也分三六九等。

  除些之外,很多軼事傳聞也支持這種觀點(diǎn)。在20世紀(jì)80年代中期,當(dāng)我還在波音公司工作的時(shí)候,有個(gè)約80個(gè)程序員組成的項(xiàng)目組正面臨著無(wú)法按時(shí)完成一項(xiàng)關(guān)鍵任務(wù)的風(fēng)險(xiǎn)。這個(gè)項(xiàng)目對(duì)于波音來(lái)說(shuō)至關(guān)重要,所以他們把項(xiàng)目上80個(gè)人中的一大半換成了另外1個(gè)人,而這位仁兄單槍匹馬地完成了所有的編程工 作,并按時(shí)交付了軟件。我并沒(méi)有在這個(gè)項(xiàng)目組中工作,也不認(rèn)識(shí)這位天才,但是這個(gè)故事是一位我所信任的人告訴我的,所以我相信這是真的。

  這種差距并不僅限于軟件行業(yè)。Norm Augustine的一份研究指出,在各行各業(yè)中,包括寫(xiě)作、橄欖球、發(fā)明、警務(wù)工作等,都存在一個(gè)情況,那就是行業(yè)中位列前20%的頂尖人才的產(chǎn)出占到 了該行業(yè)總產(chǎn)出的50%,無(wú)論這些產(chǎn)出是得分、專利、偵破的案件還是軟件 。你可以想想看,這還是有道理的。我們都知道,有的學(xué)生就是比其他學(xué)生優(yōu)秀,運(yùn)動(dòng)員、藝術(shù)家甚至家長(zhǎng)也是如此。既然這種差別存在于所有人群中,那么軟件開(kāi)發(fā)又怎么會(huì)例外呢?

  巨大的差距帶來(lái)的負(fù)面影響

  Augustine的研究發(fā)現(xiàn),由于有些人完全沒(méi)有任何實(shí)質(zhì)的貢獻(xiàn)(例如不能得分的前鋒、沒(méi)有專利的發(fā)明家、無(wú)法破案的警探等),人與人之間的差距的實(shí)際情況可能比上文提到的數(shù)據(jù)還要大。

  在軟件行業(yè)中似乎就是這樣。在多個(gè)已發(fā)表的關(guān)于軟件開(kāi)發(fā)效率的研究項(xiàng)目中,大約有10%的實(shí)驗(yàn)參與者無(wú)法完成實(shí)驗(yàn)任務(wù)。這些研究報(bào)告常常會(huì)這樣說(shuō) 道:“所以我們從數(shù)據(jù)集中排除了這些參與者的結(jié)果。”但是在現(xiàn)實(shí)生活中,如果某個(gè)人“無(wú)法完成任務(wù)”,你就不能簡(jiǎn)單地“從數(shù)據(jù)集中排除他們的結(jié)果”了。你或者得等他們完成,或者得另外指派一個(gè)人完成他們的工作,等等。這里有一個(gè)有趣(而又可怕)的暗示,那就是在軟件行業(yè)中,差不多有10%的人對(duì)項(xiàng)目產(chǎn)出的貢獻(xiàn)是負(fù)數(shù)。

  和此前一樣,這也和我們?cè)诂F(xiàn)實(shí)生活中的感受一致。我相信很多人都能夠在共事過(guò)的人中找出符合這個(gè)描述的人。

  什么造就了真正的“10倍程序員”

  很多人并不喜歡被貼上“10倍”這樣的標(biāo)簽,因?yàn)樗麄冇X(jué)得人們會(huì)說(shuō):“我們團(tuán)隊(duì)中曾有個(gè)超級(jí)程序員,他牛哄哄的,每個(gè)人都不愿和他來(lái)往,要是沒(méi)有他整體效率反而還要高些。”

  通常來(lái)說(shuō),任何對(duì)10倍程序員的實(shí)用定義都必須考慮這樣的程序員對(duì)于團(tuán)隊(duì)其他人員的影響。我也知道的確有牛哄哄的超級(jí)程序員。但更多的時(shí)候,那些牛哄哄的超級(jí)程序員其實(shí)只是普通水平的一般程序員而已,甚至還達(dá)不到普通水平。他們只是用牛哄哄的外表來(lái)讓自己的表現(xiàn)看上去不那么差而已。我所共事過(guò)的真正的超級(jí)程序員們除了技術(shù)水平以外,通常還有很好的團(tuán)隊(duì)精神(雖然有時(shí)也有些例外)。

  測(cè)量程序員的個(gè)人生產(chǎn)力的問(wèn)題

  由于很多研究都指出不同程序員的效率可以有10倍的差距,導(dǎo)致很多人產(chǎn)生了一個(gè)想法,那就是測(cè)量他們?cè)谧约航M織內(nèi)的個(gè)人效率。無(wú)論如何,這種想法所涉及的測(cè)量“活的”程序員的生產(chǎn)力和一般研究中所說(shuō)的生產(chǎn)力有很大不同。

  軟件工程研究通常用完成某個(gè)任務(wù)所需的時(shí)間、每小時(shí)或每個(gè)月能寫(xiě)多少行代碼或者其他一些標(biāo)準(zhǔn)來(lái)測(cè)量生產(chǎn)力。但如果你嘗試在商業(yè)環(huán)境中用這些標(biāo)準(zhǔn)來(lái)測(cè)量生產(chǎn)力,那就會(huì)碰到很多問(wèn)題。

  生產(chǎn)力=每月產(chǎn)出的代碼行數(shù)嗎

  軟件設(shè)計(jì)是一件非確定性的事情,對(duì)同樣的一個(gè)問(wèn)題,不同的設(shè)計(jì)師/開(kāi)發(fā)人員會(huì)做出完全不同的解決方案。如果我們用每月產(chǎn)出的代碼行數(shù)(或者類似的標(biāo) 準(zhǔn))來(lái)衡量生產(chǎn)力,那么我們就默認(rèn)了用10倍的代碼來(lái)解決同樣的問(wèn)題的程序員就有10倍的生產(chǎn)力。顯然事情并非總是如此。比如某個(gè)程序員可能會(huì)有一個(gè)絕妙的設(shè)計(jì)想法,結(jié)果只用10%的代碼就解決了普通程序員需要100%的代碼才能解決的問(wèn)題。

  有人曾斷言,偉大的程序員寫(xiě)的代碼總是更簡(jiǎn)短。事實(shí)上,編程水平和代碼的簡(jiǎn)潔性之間可能有著某種關(guān)聯(lián),但我現(xiàn)在并不想做這樣一個(gè)寬泛的結(jié)論。我只想說(shuō),偉大的程序員總是努力把代碼寫(xiě)得更清楚,而結(jié)果通常就是更簡(jiǎn)短的代碼。不過(guò)有時(shí)候,最清楚、最簡(jiǎn)單和最明顯的設(shè)計(jì)和那些更“巧妙”的設(shè)計(jì)相比,需要更多一點(diǎn)的代碼。在這種情況下,我認(rèn)為偉大的程序員也會(huì)用稍微多一點(diǎn)的代碼來(lái)避免太過(guò)于取巧的設(shè)計(jì)。無(wú)論怎么說(shuō),用“每月產(chǎn)出代碼行數(shù)”來(lái)衡量生產(chǎn)力的想法都是有問(wèn)題的。

  Dilbert漫畫(huà)中有一個(gè)故事:老板說(shuō)每發(fā)現(xiàn)一個(gè)bug就獎(jiǎng)勵(lì)10塊錢,大家都高呼這次賺到了,還有人想通過(guò)這個(gè)辦法“寫(xiě)出輛小貨車”來(lái) 。故事正好說(shuō)明了這個(gè)問(wèn)題,即如果你用代碼的產(chǎn)出量來(lái)衡量生產(chǎn)力,有的人就會(huì)利用這一點(diǎn),寫(xiě)很多很多也許完全沒(méi)有必要的代碼。這里的問(wèn)題并不在于“代碼量”這個(gè)標(biāo)準(zhǔn),而在于舊式的管理思想,即“人們只會(huì)做會(huì)被考察的事情”。但你必須小心不要考察錯(cuò)東西。

  生產(chǎn)力=功能點(diǎn)嗎

  “每個(gè)月的代碼產(chǎn)出”所帶來(lái)的問(wèn)題有一部分可以依靠功能點(diǎn)的標(biāo)準(zhǔn)來(lái)衡量程序規(guī)模。功能點(diǎn)是一套“合成”的測(cè)量程序大小的標(biāo)準(zhǔn)。包括輸入、輸出、查詢、文件數(shù)量等都被考慮進(jìn)來(lái),作為確定程序大小的參數(shù)。低效的設(shè)計(jì)/編程風(fēng)格并不能產(chǎn)生更多的功能點(diǎn),所以功能點(diǎn)這個(gè)標(biāo)準(zhǔn)不涉及代碼量的問(wèn)題。但是它卻有 一個(gè)更實(shí)際的問(wèn)題,那就是你需要專業(yè)人士來(lái)計(jì)算功能點(diǎn)(很多公司并無(wú)這種人才),而且功能點(diǎn)和個(gè)人產(chǎn)出的對(duì)應(yīng)也非常粗略,所以無(wú)法用于確定程序員的個(gè)人生 產(chǎn)力。

  復(fù)雜度呢

  管理者常說(shuō):“我總是把最困難、最復(fù)雜的編程任務(wù)交給最好的程序員去做。所以無(wú)論用什么方法來(lái)衡量,他的生產(chǎn)力好像總是比別人低,但是如果同樣的事情讓別人來(lái)做,就可能花上兩倍的時(shí)間。”這種現(xiàn)象很正常,但是也會(huì)影響我們定義和測(cè)量生產(chǎn)力的方式。

  到底有沒(méi)有辦法可以測(cè)量個(gè)人生產(chǎn)力

  前文提到的這些困難讓很多人認(rèn)為:要想測(cè)量個(gè)人生產(chǎn)力簡(jiǎn)直困難重重,沒(méi)人可以做到。但我認(rèn)為要想正確地測(cè)量個(gè)人生產(chǎn)力是可能的,只是需要注意以下幾點(diǎn)。

  • 不要指望僅用一個(gè)單獨(dú)的衡量標(biāo)準(zhǔn)就能了解個(gè)人生產(chǎn)力的實(shí)際整體狀況

    你可以參照一下那些在體育比賽中搜集的統(tǒng)計(jì)數(shù)據(jù)。我們甚至無(wú)法用一個(gè)單獨(dú)的標(biāo)準(zhǔn)來(lái)確定棒球比賽中擊球手的水平。我們必須考慮打擊率、全壘打、跑壘得分、上 壘率以及其他種種因素。而且僅有這些數(shù)據(jù)還不夠,我們還得去證明這些數(shù)據(jù)的意義。如果擊球手的優(yōu)劣無(wú)法用簡(jiǎn)單的標(biāo)準(zhǔn)來(lái)評(píng)斷的話,難道程序員的個(gè)人生產(chǎn)力這樣復(fù)雜的事情就可以嗎?我們應(yīng)該用的不是一個(gè)單獨(dú)的標(biāo)準(zhǔn),而是一整套標(biāo)準(zhǔn)的組合。這套組合標(biāo)準(zhǔn)的任務(wù),就是讓我們對(duì)個(gè)人生產(chǎn)力有更深入的了解。比如,這套標(biāo)準(zhǔn)可能包括準(zhǔn)時(shí)完成任務(wù)的百分比、管理者的評(píng)分1~10、同事的評(píng)分1~10、每個(gè)月產(chǎn)出的代碼行數(shù)、每行代碼的平均缺陷數(shù)量、不當(dāng)修復(fù)的比率,等等。

  • 不要認(rèn)為只要有了某種標(biāo)準(zhǔn)(無(wú)論單獨(dú)或者組合)就可以對(duì)不同個(gè)體的生產(chǎn)力進(jìn)行細(xì)致的鑒別了

    要記住一點(diǎn):這些個(gè)人生產(chǎn)力的標(biāo)準(zhǔn)只是為你找出問(wèn)題,但是并不會(huì)回答這些問(wèn)題。對(duì)這些標(biāo)準(zhǔn)的不當(dāng)使用,比如用來(lái)進(jìn)行績(jī)效評(píng)估,不但會(huì)帶來(lái)管理上的問(wèn)題,也會(huì)造成統(tǒng)計(jì)上的問(wèn)題。

  • 整體的趨勢(shì)常常比某個(gè)時(shí)間點(diǎn)上的測(cè)量結(jié)果更重要

    將這些測(cè)量結(jié)果在不同個(gè)體間進(jìn)行橫向比較往往是得不出任何有意義的結(jié)論的。更有用的做法應(yīng)該是將某個(gè)人的測(cè)量結(jié)果進(jìn)行縱向分析,看看這個(gè)人有沒(méi)有隨著時(shí)間的推移而進(jìn)步。

  • 你要問(wèn)自己:我測(cè)量個(gè)人生產(chǎn)力到底是為什么

    在研究環(huán)境中,研究員們需要評(píng)估不同技術(shù)的效率,所以需要測(cè)量個(gè)人生產(chǎn)力。相對(duì)于研究環(huán)境,在現(xiàn)實(shí)項(xiàng)目中使用同樣的測(cè)量標(biāo)準(zhǔn)產(chǎn)生的問(wèn)題就要多得多了。在現(xiàn)實(shí)項(xiàng)目環(huán)境中,你想要用這些測(cè)量標(biāo)準(zhǔn)來(lái)做什么?績(jī)效評(píng)估?這主意不行,原因剛剛才說(shuō)過(guò)。分配任務(wù)?但我所訪問(wèn)過(guò)的大部分管理者都說(shuō)他們不必測(cè)量也知道誰(shuí)是他們團(tuán)隊(duì)中的明星成員,這一點(diǎn)我也相信。做預(yù)算?不行,不同設(shè)計(jì)方法導(dǎo)致的差距、不同的任務(wù)難度以及其他相關(guān)的原因使得我們無(wú)法有效利用這些標(biāo)準(zhǔn)來(lái)做項(xiàng)目預(yù)算。

  在現(xiàn)實(shí)項(xiàng)目中,個(gè)人生產(chǎn)力的標(biāo)準(zhǔn)很難找到一個(gè)對(duì)項(xiàng)目管理有益而又符合統(tǒng)計(jì)學(xué)規(guī)則的用處。根據(jù)我的經(jīng)驗(yàn),除了做研究之外,人們想對(duì)個(gè)人效率進(jìn)行測(cè)量的動(dòng)機(jī)通常來(lái)自一些在統(tǒng)計(jì)學(xué)上不能成立的結(jié)論。也就是說(shuō),雖然我知道在研究中對(duì)個(gè)人效率的測(cè)量非常有意義,但是我認(rèn)為在實(shí)際項(xiàng)目中卻很難找到它的合理用處。

  軟件開(kāi)發(fā)中的團(tuán)隊(duì)生產(chǎn)力差距

  軟件專家們很早就已經(jīng)發(fā)現(xiàn),團(tuán)隊(duì)生產(chǎn)力的差距和個(gè)人生產(chǎn)力的差距一樣大,是以數(shù)量級(jí)為單位的。這里有一部分原因是因?yàn)槲镆灶惥郏艘匀悍?,這一點(diǎn)已經(jīng)由一次對(duì)來(lái)自18個(gè)組織機(jī)構(gòu)的166個(gè)職業(yè)程序員的研究證明了。

  又比如,在一次對(duì)7個(gè)完全相同的項(xiàng)目的研究中,研究人員發(fā)現(xiàn),在這些團(tuán)隊(duì)中耗費(fèi)精力最多的是最低的3.4倍,而對(duì)于程序的大小,最大的是最小的3倍 。雖然生產(chǎn)力有一定差距,但是這次研究中的程序員都來(lái)自相似的背景。他們都是科班出身的職業(yè)程序員,而且都有多年的經(jīng)驗(yàn)。我們可以合理地推測(cè),如果研究對(duì)象的背景差異再大一些,那么他們之間的差距會(huì)更大。早期的一份對(duì)編程團(tuán)隊(duì)的研究曾指出,對(duì)于同樣的項(xiàng)目,不同團(tuán)隊(duì)所提交的程序大小的比例可以達(dá)到 5∶1,而所需時(shí)間的比例可以達(dá)到2.6∶1。

  Barry Boehm等研究人員為了確立COCOMO II成本估算模型而研究了超過(guò)20年的數(shù)據(jù),并總結(jié)到:對(duì)于同樣的程序,能力評(píng)分在15+的團(tuán)隊(duì)需要的時(shí)間是得分為90+的團(tuán)隊(duì)的3.5倍(以100分算)。 如果一個(gè)團(tuán)隊(duì)比另一個(gè)團(tuán)隊(duì)在程序語(yǔ)言或者應(yīng)用領(lǐng)域上更有經(jīng)驗(yàn),那么這個(gè)差距還會(huì)更大。

  一個(gè)具體的例子就是 Lotus 1~2~3 第三版和微軟 Excel 3.0 開(kāi)發(fā)團(tuán)隊(duì)之間的生產(chǎn)率差距。兩者都是在1989~1990這個(gè)時(shí)間段發(fā)布的桌面電子表格應(yīng)用程序。由于很少看到兩個(gè)公司公布相似項(xiàng)目的數(shù)據(jù),所以這 種死對(duì)頭之間的對(duì)比就顯得尤其有趣了。這兩個(gè)項(xiàng)目的數(shù)據(jù)如下:Excel的工作人員總共消耗了50個(gè)工年 ,共寫(xiě)了649, 000行代碼 。而Lotus 1~2~3消耗了260個(gè)工年,共寫(xiě)了400,000行代碼 [13]。Excel的團(tuán)隊(duì)每個(gè)工年的代碼產(chǎn)出是13,000行代碼。而Lotus的團(tuán)隊(duì)每個(gè)工年的產(chǎn)出只有1500行代碼。兩個(gè)團(tuán)隊(duì)之間的生產(chǎn)力差距超過(guò)了8倍,正好證明了我們此前的主張,即團(tuán)隊(duì)的生產(chǎn)力也 有差距,并且有著更大量級(jí)的差距。

  有趣的是,這些量化的結(jié)果和局外人對(duì)于這些項(xiàng)目的感覺(jué)非常貼近。Lotus 1~2!3第三版當(dāng)時(shí)是出了名的跳票王,比預(yù)期的時(shí)間至少晚了兩年才發(fā)布。而在微軟內(nèi)部,Excel大受贊揚(yáng),被譽(yù)為是微軟最成功的項(xiàng)目之一。對(duì)于真實(shí)公司的 真實(shí)項(xiàng)目,這種程度的同類比較恐怕已經(jīng)是能做到的極致了。

  如前所述,這個(gè)例子說(shuō)明了造成生產(chǎn)力差距的各種因素。Lotus和微軟都煞費(fèi)苦心地為各自的項(xiàng)目招募了頂級(jí)的人才,所以我懷疑團(tuán)隊(duì)生產(chǎn)力的差距并不只是由于團(tuán)隊(duì)成員的能力差距造成的,還牽扯到了很多組織結(jié)構(gòu)上的因素,比如產(chǎn)品遠(yuǎn)景是否清楚、客戶需求是否明確以及成員之間是否能同心協(xié)力,等等。

  組織的因素會(huì)影響團(tuán)隊(duì)生產(chǎn)力的發(fā)揮。杰出的組織中個(gè)人能力平庸的團(tuán)隊(duì)可以超越平庸組織中個(gè)人能力杰出的團(tuán)隊(duì)。當(dāng)然,像杰出的組織+杰出的團(tuán)隊(duì)或者平庸的組織+平庸的團(tuán)隊(duì)這樣的組合也不是沒(méi)有的。在這種時(shí)候,團(tuán)隊(duì)生產(chǎn)力(或者叫組織生產(chǎn)力)和個(gè)人生產(chǎn)力一樣相差10倍也就不足為奇了。

  本文摘自《軟件之道:軟件開(kāi)發(fā)爭(zhēng)議問(wèn)題剖析》

it知識(shí)庫(kù)程序員編程生產(chǎn)力相差10倍意味著什么?,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本成人在线网站 | 免费在线色 | 激情六月 | 日韩中文字幕精品免费一区 | 韩国理伦一级毛片 | 欧美爱 | 甘城光辉游乐园在线观看 | 成人在线视频国产 | 欧美一区综合 | 福利一区二区在线观看 | 亚洲欧美成人综合久久久 | 狠婷婷| 自拍一区在线观看 | 久久久久久麻豆 | 色综合色狠狠天天久久婷婷基地 | 成人宗合网 | 激情五月六月婷婷 | 在线免费观看精品 | 手机在线看黄 | 成人影视大全 | 韩国三级久久精品 | 九月丁香十月婷婷在线观看 | 欧美日韩国产在线观看一区二区三区 | 久久久久亚洲香蕉网 | 亚洲第一区二区快射影院 | 91精品国产91久久久久久 | 精品国产一区二区三区在线 | 国产美女又黄又爽又色视频网站 | 麻豆国产精品免费视频 | 9l国产精品久久久久麻豆 | 国内精品视频区在线2021 | 国产精品视频2021 | 国内精品免费视频自在线 | 国产小视频在线免费观看 | 日本大片免a费观看视频+播放器 | 中文字幕不卡一区 二区三区 | 欧美亚洲综合另类成人 | 91麻豆精品国产片在线观看 | 久久国产乱子伦精品免费午夜 | 黄网址在线观看 | 在线国产高清 |