英文原文:Your Developers Aren’t Bricklayers, They’re Writers
如果你有 10 個程序員,最好的那個可能至少比最差的那個好 5 倍。這絕對不是胡扯。
我們這樣定義“更好”:工作速度更快,產(chǎn)生的 bug 更少,代碼更具可讀性、邏輯性和可維護(hù)性。
程序員不是砌磚工人,但他們往往被當(dāng)成是砌磚工人。 (我并不是說歧視這些職業(yè))
“為什么我需要高級程序員,要知道同樣的薪酬我可以雇兩個初級的了?”
“這個功能一個程序員做需要三個月的時間,那就只需要再加兩個,就可以在一個月內(nèi)搞定了?!?/p>
為什么說上面的想法很荒謬?因?yàn)槲覀儧]有一種簡單又有效的方法來衡量程序員的生產(chǎn)力。一旦碰到我們無法衡量的東西,我們就會忽略它。
我這樣問你好了:你是愿意讓兩個新手來照顧你的寶寶,維修你的車,給你做腰椎穿刺,還是寧愿找一個資深的?
相關(guān)研究表明,最好程序員的生產(chǎn)力最高可比最差程序員的高 28 倍。但是用在這些最好程序員身上的成本肯定不會有這么多,所以他們是軟件領(lǐng)域中最劃算的“特價(jià)商品”。
ROBERT GLASS,《FACTS AND FALLACIES OF SOFTWARE ENGINEERING》
如果你一定要比較的話,那么其實(shí)程序員更像是作家。
有些作家寫出的東西能數(shù)以百萬計(jì)地賣出去,而有些作家寫出來的東西無聊至極最后只能用來燒火用!
但是,他們都生產(chǎn)出了一本書,因此,他們都是作家??墒浅悄闳ラ喿x他們的書,否則你就不會知道他們倆的差別。
編程經(jīng)理老早就認(rèn)識到好程序員和差程序員兩者的生產(chǎn)力有著天囊之別。但實(shí)際測得的數(shù)據(jù)結(jié)果依然讓我們所有人都大吃一驚。在研究中,Sackman、Erickson 和 Grant 想要衡量一組經(jīng)驗(yàn)豐富的程序員的表現(xiàn)。結(jié)果表明,最佳和最差的生產(chǎn)力比例平均約為 10:1,特別是編程速度的比例令人吃驚地達(dá)到5:1!
FRED BROOKS,《THE MYTHICAL MAN-MONTH》
下面我給你講一個真實(shí)的故事。(有關(guān)名字已作更改。)
一家軟件公司需要在他們的標(biāo)志產(chǎn)品中實(shí)現(xiàn)一個新的模塊。Mr Lousy(差先生)剛好有空,于是就將這個任務(wù)交給了他,讓他立馬開工!
經(jīng)過四個月的修修補(bǔ)補(bǔ),差先生終于完成了。 QA 團(tuán)隊(duì)發(fā)現(xiàn)存在著大量的 bug 和矛盾之處,并將報(bào)告返回給差先生。差先生根據(jù)報(bào)告又花了 2 周的時間來修復(fù)這些 bug,并最終給出了一個新的版本!那些該死的惱人 bug 真是絞盡了差先生的腦汁。
測試然后修復(fù),如此循環(huán)了兩三次。
用戶已經(jīng)在期待這個新的模塊。銷售人員也簽署了一些新的客戶。把這個模塊做出來,并整合到下一版本中這一過程的壓力之大可想而知。但是,所幸,成功了!開香檳慶祝吧!
呀,不對,新模塊中依然滿是 bug。群眾的眼睛總是雪亮的,客戶總是特別擅長于找到一些以前從未被發(fā)現(xiàn)的 bug。于是他們聯(lián)系技術(shù)支持。技術(shù)支持團(tuán)隊(duì)再去找是什么地方出了錯,是客戶不知道如何操作功能,還是他們自己搞錯了,抑或這只是一個 bug,一個可以重現(xiàn)的 bug?!?然后技術(shù)支持團(tuán)隊(duì)提交了錯誤報(bào)告。于是,差先生悲劇了,——我的意思是,哪怕他正在搞另一個項(xiàng)目,在這個時候也只能放下手頭的一切工作來解決這些麻煩事。
?。ㄟ@還沒有涉及到代碼的維護(hù)性,邏輯性和文檔化問題——因?yàn)橐院罂隙〞衅渌藖砀倪M(jìn)這些代碼)
但是,唉,怎么說呢……似乎有一些 bug 超出了差先生的能力范圍,他根本修復(fù)不了。此外,不斷出現(xiàn)的新 bug,沒人知道確實(shí)它們是新出來的,還是以前就有但就是沒有被發(fā)現(xiàn)而已的。技術(shù)支持煩不勝煩。而銷售越來越惱火,因?yàn)樾驴蛻艏娂姳硎具@個模塊太不靠譜了,他們要取消合同!
最后,老板不得不讓 Mr Rockstar(好先生)來看一看這些代碼。
好先生并不想為差先生收拾爛攤子,很多結(jié)構(gòu)在他眼中都是沒有意義的。他建議重寫代碼,預(yù)期大概需要一個月的時間。然后他開工了,只比原先估計(jì)的多了幾天就完成了模塊(他是好先生,而不是完美先生)。除了 QA 團(tuán)隊(duì)發(fā)現(xiàn)了一些小錯誤,一切都能如期工作。 QA 團(tuán)隊(duì)在心里默默擔(dān)心:如果所有的程序員都像他一樣,那他們就沒有用武之地了。差先生認(rèn)為好先生這是在傲慢地嘲笑他,但他的看法對好先生而言是無關(guān)緊要的。
改進(jìn)過的模塊很快發(fā)布了。每個人都很高興,因?yàn)榻K于可以正常工作了。萬歲!
現(xiàn)在真的到了可以開香檳慶祝的時候了!
但是此時,似乎所有人都忘記了好先生只用了一個月左右的時間就成功搞定了差先生用了七八個月也搞不定的任務(wù)。
這兩個開發(fā)人員生產(chǎn)力水平的巨大差異由此可見一斑——他們執(zhí)行的是完全相同的任務(wù)。
通過編寫更精簡但功能更多的代碼,通過編寫 bug 更少更易于維護(hù)的代碼,一個優(yōu)秀的開發(fā)人員可以減輕 QA 人員,同事和管理人員的工作壓力,提高身邊每一個人的生產(chǎn)力。這就是為什么研究得出的這些數(shù)據(jù),如 28 倍的生產(chǎn)效率是可能的,甚至可能還報(bào)低了,如果你縱覽全局的話。
PHIL HAACK,《10 DEVELOPERS FOR THE PRICE OF ONE》
那么,在這個故事中可能會發(fā)生的最糟糕的事情是什么呢?
好先生終于注意到他比差先生的效率要高得多:他能輕易識別不良代碼。但是盡管如此,他很肯定自己的薪資和差先生的差不多。他表示不滿,甚至于毅然決然地離開。于是你的開發(fā)團(tuán)隊(duì)失去了一個高效的力量支柱。
即使他不離開,當(dāng)面對由于發(fā)布/項(xiàng)目延遲導(dǎo)致的整個團(tuán)隊(duì)的加班,他會怎么想?離開是必然的,只是時間早晚而已。
并且,如果你真的運(yùn)氣實(shí)在不佳,提了另一個人去取代好先生的位置,卻不幸是另一個差先生的話,那我就只能默默地為你點(diǎn)根蠟燭了。
那么,為什么我們總是習(xí)慣于忽略這個事實(shí)呢?
因?yàn)楹鲆暠燃m正問題容易得多——至少某種程度上,的確如此。并且沒人愿意做告發(fā)同事的小人,成為他丟掉飯碗的原因:因?yàn)楦悴缓貌钕壬嫌懈咛靡狆B(yǎng),下有兒女嗷嗷待哺;或許他剛剛買了新房子,每個月都要還貸——最重要的是,真的很難衡量開發(fā)人員的工作效率,除非你讓他們倆做相同的任務(wù)來做對比,就像上面的故事一樣。
于是我一直在想這個問題:該如何衡量開發(fā)人員的工作效率。我很嫉妒做銷售的,因?yàn)樗麄兊男匠晔歉鶕?jù)業(yè)績來的。我有一些想法(還不成熟)能讓你去其糟粕取其精華。我也有一些想法關(guān)于如何識別、吸引和留住好的開發(fā)人員。
我的身份以及我為什么要告訴你這些真相
我曾作為一個全職的開發(fā)人員干了 10 多年。早在 1989 年我做出了我的第一個商業(yè)化的產(chǎn)品(游戲)。雖然它并沒有給我?guī)砗芏噱X,但感覺真的超好(那時我才 16 歲)。幾年后,我出售了其中一個游戲點(diǎn)子,并最終發(fā)布于任天堂游戲機(jī)(以及其他格式)上!從我經(jīng)驗(yàn)的角度,我可以告訴你,當(dāng)你看到你想出來的東西(包括名稱)最終出現(xiàn)在商店中,這感覺不要太爽。
2008 年,我應(yīng)聘了一家技術(shù)驅(qū)動公司的一個非技術(shù)職位。我想了解企業(yè)一般的運(yùn)行模式,包括銷售在內(nèi)的企業(yè)中發(fā)生的所有非技術(shù)進(jìn)程。雖然,我的技術(shù)能力對我的求職很有幫助,但不再是工作的重要組成部分。
我不再為了謀生而編程(確切的說,是當(dāng)時),但經(jīng)常在業(yè)余項(xiàng)目上鼓搗各種新技術(shù)。對我來說,讀一本好書,既令人興奮,同時又能夠得到放松。
在我目前的崗位上,我經(jīng)常會遇到一些誤解概念或缺乏開發(fā)基本知識的人。而在他們身處的職位上(通常是那些 CxO 們),這些基礎(chǔ)知識會造成巨大的影響。
很多 CxO 會將開發(fā)人員當(dāng)作是砌磚工人,死板地計(jì)算他們的工作效率。但是,在這里,我想再次重申這個“作家理論”,開發(fā)人員是腦力工作者,OK?
-------------------------------------------------------------------------------------
譯文鏈接:http://www.codeceo.com/article/programmer-not-bricklayers.html
翻譯作者:碼農(nóng)網(wǎng) – 小峰
聯(lián)系客服