最近關於 10 倍程序員的事又開始在各個社交平臺火了起來,CODING 做爲國內領先的一站式 DevOps 解決方案,今天也來討論一下 10 倍程序員到底存不存在和這個概念到底意味着什麼。程序員
這個話題之因此會時不時被拿出來討論,主要是由於它觸及了一個比較深的意識形態問題:有些人是否比其餘人更有才華,以及爲何會這樣(這是天生仍是後天能夠改變的)。若是答案是確定的,咱們應該如何正確對待這件事。編程
所以,在各個社交平臺的激烈討論主要分紅了兩派,一邊認爲 10 倍程序員只是一個傳說,是對程序員羣體的刻板印象,並且比起討論這個問題還有更重要的事去作,好比好好寫文檔或者帶帶實習生。而另外一邊則會翻個白眼告訴你 10 倍程序員固然是存在的,那些不肯意認可的人都是被各類正義宣傳洗了腦,或者是一個不想認可本身的失敗的自卑者。編程語言
關於 10 倍程序員的傳說究竟如何,讓咱們來稍微解密一下。工具
此次風波的原由是在 7 月 11 日,Shekhar Kirani(在 Accel 印度的基金擔任合夥人職位)發了一條微博:學習
聲稱 10 倍程序員是一種稀有物種並建議創業公司的 CEO 尋覓這種罕見的程序員,若是能找到一個 10 倍程序員做爲你初始團隊的前幾名程序員之一,能夠顯着提升你的啓動成功概率。而且還列舉了諸如「仇恨會議」,「高度不規則」的工做時間,「能夠高效將想法轉化爲他們心中的代碼」,知道已經投入生產的「每行代碼」,筆記本電腦屏幕背景顏色是黑色的等幾條 10 倍程序員的特徵。3d
咱們暫且不討論他的論斷是否正確,其實在過去關於 10 倍程序員這個概念有着不少的討論,其中比較有名的是 Steve McConnell 在八十年作的研究:Productivity Variations Among Developers and Teams: The Origin of 10x。從中咱們能夠提取出幾個關鍵點:調試
1.10 倍程序員指的是最優秀的程序員和最差的程序員之間的差距,而不是和平均相比orm
這樣其實更好讓人接受,在我看來,更容易相信最好的開發人員比平均水平高出 3 倍,而最差的開發人員的生產力要低 3 倍。這樣可讓你達到 10 倍的總體差價。cdn
也許咱們應該將「x」從新定義爲平均值,稱之爲「3 倍程序員」,這樣就不用吵來吵去了。blog
2. 10 倍程序員的概念的確是基於研究而來,但這並不表明研究是完美的
McConnell 在上面提到的文章中詳細總結了以前關於 10 倍程序員的研究,可是這些研究在今天看來都略顯過期並存在必定的缺陷,好比總樣本量相對較小,而且並無很好的把控變量。其中一些研究是在幾十年前(第一次是 1968 年)完成的,當時計算機、編程語言和開發任務都和如今有很大不一樣。雖然他們採用了一些還不錯的度量方式,好比任務完成時間,可是大部分度量方式是值得商榷的,例如天天的代碼行數,而且在某些狀況下,他們認爲代碼行數是負面影響因子(對於給定的任務,更少的代碼量被認爲是會更好)。
總的來講,雖然有些瑕疵,但仍是有明顯的證據代表,我的之間的生產力差別很大。
3. 10 倍只是一個粗略估計
不一樣研究發現的生產力差距存在必定的範圍,一般在 5 至 25 倍之間。這與剛剛討論的研究的侷限性相結合,意味着咱們不能說「大體數量級」。「10 倍」並不許確,它只是一種方便的方式來記住生產力的差別存在而且很大。
4.10 倍的數字僅僅是對代碼生產力的衡量
它並不是旨在徹底衡量程序員對組織的價值,也不能用於此目的。也就是說,這些仍然是有意義和重要的措施。
5.這些研究並無揭露形成差距的緣由
據我所知,McConnell 的調查至少沒有解決重要的問題,例如:我的的生產力水平是否隨時間穩定? 它是否因環境而異?工做環境對生產力的影響程度如何? 它會由於項目的不一樣或工做內容的變化而變化嗎? 它會隨着經驗而增加嗎? 能夠經過學習進步嗎?(McConnell 表示最初 1968 年的研究「發現程序員的經驗和代碼質量或生產力之間沒有任何關係」,但這並不意味着生產力不會隨着時間的推移而增加,只是它不必定會這樣作)。
如下四個想法不只基於研究,並且基於咱們平常的觀察:
1. 生產力的差別是真實的、重要的,而且可能被低估。
即便差別不是「十倍」,可是不少時候也會舉足輕重,並且我相信這個現象不只僅存在於軟件行業。McConnell 本人就指出過這一點,引用 Norm Augustine 的一項研究:「在各類職業,不管寫做,足球,發明,警察工做仍是其餘職業,必定都是前 20% 的人產生了約 50% 的產出, 不管是橄欖球中的達陣仍是專利,解決案例或軟件。」
2. 工做環境相當重要
在現實世界中,生產力其實很大程度是受工做環境制約的。程序員是否明確了目標和優先事項? 他們是否相信本身作的事情?他們有動力嗎?他們可否相互信任?他們能夠集中注意力嗎?他們必須隨機參加會議嗎?他們有良好的基礎設施和工具嗎?等等。
3. 生產力是自身特徵和後天技能的結合
也就是說,高生產力是能夠經過學習來部分提升的。可得到的技能包括從調試特定工具到思惟模式和解決方式等,經過這些來提升本身的生產力。可是自身的特性暫時仍是不能(或者說還不知道如何)有效的識別和經過學習來習得的,這與我的自身的智力和思惟模式有很大關係。
4. 生產力並不和過往經歷強相關
有很是高效的初級程序員,也有很是平庸(或更糟糕)的高級程序員。所以即便能夠經過學習來提升自身的生產力,可是學習的過程也不會自動發生,固步不前的程序員在咱們的行業中也是很常見的。
關於 10 倍程序員的討論歸根結底是在討論如何僱傭、獎勵員工以及咱們如何對待彼此。
因此咱們總結出了以下的結論,但願對企業的研發團隊有些幫助:
另外,再說一下開頭提到的整場討論的原由——咱們認爲發現 10 倍程序員的規律或者特質並不存在,他們不是什麼特殊物種,不可能經過終端的顏色,鍵盤上的磨損,或任何其餘刻板印象來識別它們。
Reference:
yourstory.com/2019/07/10x…
jasoncrawford.org/10x-enginee…
www.construx.com/blog/produc…