別再説什麼“10 倍開發者”了!

別再説什麼“10 倍開發者”了!

摘要:2019 年,由印度初創公司投資人 Shekhar Kirani 提出的“十倍工程師”的概念在圈內引起熱議。他提出,有些程序員能以一當十,創業有了這類人,成功率將大幅提升。對於這個説法,多數人持反對態度,但直至如今,有關“十倍工程師”的討論依舊沒有停歇。

原文鏈接:https://earthly.dev/blog/stop-10x-developer/

聲明:本文為 CSDN 翻譯,未經授權,禁止轉載。

作者 | Adam Gordon Bell譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

“10倍開發者”這個説法源自一則推特:

10倍工程師很少查看類或方法的幫助文檔。拿到一個產品功能後,他們只需一杯含咖啡因的飲料,沒有任何人打擾,就可以坐下來連續工作4~6個小時編寫出整個功能。

10倍工程師很討厭開會,認為那是在浪費生命,會議上討論的事情都是顯而易見的。

大多數10倍工程師都是全棧工程師。但是,我很少看到他們做UI的工作。

以上觀點由一位印度初創公司投資人 Shekhar Kirani 提出,並建議初創公司牢牢把握住10倍工程師——雖然我不同意這個看法,但“10倍工程師”這個話題並不會消失。

在本文中,我們來深入剖析一下這個概念,看看“10倍工程師”究竟有什麼意義,也許我們能找到一種更好的方式來描述天才工程師。

別再説什麼“10 倍開發者”了!

定義

“10倍開發者”這個概念源自Tom Demarco的研究。他研究了600多名開發人員的編程練習結果,發現有些人的效率是其他人的10倍(在相同研究條件之下)。

10倍開發者指的是,有些開發人員的生產力是該領域具有同等專業知識水平的其他開發人員的10倍。也就是説,一位10倍開發者可以完成10倍的工作量,而且在相同條件下他們編寫的代碼質量是團隊其他成員的10倍。究竟誰才是10倍開發人員,如何才能成為10倍開發者?

網上經常討論的一個問題就是:10倍開發人員是否真的存在?畢竟,現在不是1984年,整個編程領域的水平也提高了。所以,我們先來解決這個問題。

95倍開發人員

同一個地方不可能同時出現兩位10倍工程師,否則就會引發生產力奇點。

—— Xanda Schofield

開發技術千變萬化,而且可以不斷提高,這一點沒有爭議。但是,能夠完成10倍工作量的人真的比那些不稱職的同事好10倍嗎?事實上,我認為“10倍”這個數字太小了。

下面,我們來看一個例子,雖然這個例子很極端,但很有啓發性。

Leetcode網站上的問題表明開發人員的技術力有着數量級的差異。在LeetCode上,競賽選手的評分可以轉化為他們能夠解決問題的概率。具體來説,在實踐中,如果你遇到一個評分與你個人評分相同的問題,這就意味着你能夠解決該問題的概率為50%。LeetCode使用了ELO排名,這個排名可以直接等同於成功係數。雖然LeetCode不會公開問題的評分,但有一位用户計算了各個問題的評分,並分享到了GitHub上(https://github.com/zerotrac/leetcode_problem_rating/blob/main/ratings.txt)。

通過這則信息,再加上概率表,我可以告訴你,對於LeetCode上的問題“Count Ways to Make Array With Product ”(https://leetcode.com/problems/count-ways-to-make-array-with-product/),排名3000的用户中有95%的人可以解決這個問題,但排名1700的用户中只有大約1%的人能夠解決。

想象一下,Jira面板由2500個困難問題組成,如果LeetCode的規則非常貼近我們的實際工作,那麼一位排名3000的用户的效率相當於95位排名1700的用户,那他們就是所謂的“95倍開發者”。所以,可以肯定的是,如果LeetCode中存在95倍開發者,那麼只要難度上限足夠高,任何領域都有可能存在10倍開發者。

但是,日常工作的難度是否給了技術牛人大展拳腳的空間呢?

豪斯醫生,10倍醫生

技術力的差異並不是軟件開發領域獨有的。如果説真的有10倍開發者,那麼就會有10倍醫生和10倍機械師。但是,一種能給團隊或組織帶來重大影響的技術,一定會成為限制因素。

如果《豪斯醫生》中的主角在一家小診所工作,每天的工作是打流感疫苗和抗生素,那麼他的效率不一定會比一個平庸的醫生更高。同樣,如果你們團隊沒有遇到高難度的編程問題,那麼即便是LeetCode冠軍也不會有突出的表現。如果説10倍開發者應該完成10倍的工作,那麼前提是你能拋出一些具有挑戰性的問題。

(個人認為:許多團隊更需要的是具有10倍溝通能力的開發者。)

所以説,有些開發人員的效率確實更高,但這並不一定意味着完成更多的工作,除非高技術力能夠提高團隊的工作效率,或者解決團隊的瓶頸。時間和技術力在量上是不可互換的。但是,10倍開發者的思想還有一個更大的問題:技術力不是孤立存在的。

你不能通過一個單一的“尺度”(比如LeetCode的評分)衡量開發者的技術力,開發者又不是跳高運動員,不能根據能否跳過某個高度的欄杆來判斷他們的技術力。軟件開發是一個多樣化的領域,從事固件開發與構建遊戲引擎所需的技術力完全不同,而他們掌握的技術類型也不同於前端JavaScript開發人員。軟件開發和大多數領域一樣,不是單一的田徑比賽。這些角色需要不同的技術,比如系統設計、測試、調試等等。所以説,開發人員更像是體育比賽中的現代五項全能。

關於軟件開發的極端説法

10倍開發者的説法太極端了。比如我的日常工作都是很簡單的任務,那就算是Fabrice Bellard(著名的計算機程序員,因FFmpeg、QEMU等項目而聞名業內,曾在國際C語言混亂代碼大賽中三度獲勝)來了,也不能説就可以完成10倍類似的工作量。反之,如果給我足夠的時間,我可能也能像Fabrice Bellard一樣構建出FFmpeg和QEMU。

此外,10倍開發者這個概念還暗示着各種技術力都是可以互換的——優秀的數據庫內部專家就應該能構建出色的微服務架構嗎?這顯然不合理。

那麼,我們應該如何描述10倍開發者呢?比如專家,“某某人是視頻編碼專家”;或者專業人士,“我曾與postgres專業人士有過合作”;再比如天才,“我需要一些出色的編譯器後端天才來幫助我設計增量式編譯”。

我認為,我們不應該用“10倍”這樣的詞語來籠統地描述開發者的技術力,我們應該更具體一點。技術千變萬化,人們的技術力也在不斷提高,我們不應該把人才神化。

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 2686 字。

轉載請註明: 別再説什麼“10 倍開發者”了! - 楠木軒