較便宜的人才假設

2008 年 2 月 8 日

軟體世界中普遍接受的信念之一,就是有才華的程式設計師生產力較高。由於我們無法衡量生產力,這是一個無法證明的信念,但似乎合理。畢竟,幾乎所有人類的努力都顯示出有些人比其他人好,而且通常明顯好很多。程式設計師自己也普遍觀察到這一點,儘管似乎總是那些自認為才華較高的人才會提出這樣的評論。

自然地,較好的程式設計師成本較高,無論是全職聘用還是承包。但有趣的問題是,儘管如此,更昂貴的程式設計師實際上更便宜嗎?

表面上看,這似乎是一個愚蠢的問題。一個成本較高的資源怎麼可能變得更便宜?訣竅,就像經常發生的那樣,是要從更廣泛的角度思考成本和價值。

儘管科技界普遍同意有才華的程式設計師比一般人更有生產力,但由於無法衡量,他們無法提出實際數字。因此,讓我們為了論證而發明一個:2。如果你能找到一個才華是平均程式設計師兩倍,但薪水不到兩倍的程式設計師,那麼這個程式設計師最終會更便宜。更一般地說:如果生產力較高的開發人員的成本溢價低於該開發人員的生產力提升,那麼聘用更昂貴的開發人員會更便宜。較便宜的人才假設是,成本溢價確實較低,因此即使生產力較高的開發人員更昂貴,聘用他們也更便宜。

萬一有人沒有注意到,這個假設是 Thoughtworks 哲學的關鍵部分,也是我最終從獨立顧問轉而加入 Thoughtworks 的主要原因之一。我們相信,儘管我們的費率較高,但我們實際上對客戶來說更便宜。當然,我們很難說服許多客戶相信這是真的,因為缺乏客觀的生產力衡量標準。我仍然記得與一位潛在客戶的會面,他抱怨我們的費率高於一家之前曾嘗試過我們正在競標的系統但失敗的公司。我們不得不禮貌地指出,為一個沒有提供任何價值的專案支付較低的費率,根本不是一個明智的財務策略。

較便宜的人才假設有一些顯著的後果。最顯著的是,它實際上遵循正向的規模效應 - 團隊越大,較便宜人才的好處就越大。讓我們假設我們實際上已經組成了一個由十位有才華的開發人員組成的團隊,在一個替代的宇宙中執行一個專案,在這個宇宙中,我們實際上已經衡量出他們的生產力是平均水準的兩倍 - 因此聘請他們的成本正好是兩倍。在這種情況下,你可能會自然地假設一個由平均程式設計師組成的競爭團隊將是一個由二十人組成的團隊。

問題在於,該假設假設生產力會隨著團隊規模線性擴展,而觀察結果再次表明情況並非如此。軟體開發在很大程度上依賴於團隊成員之間的溝通。軟體團隊最大的問題是確保每個人都了解其他人在做什麼。因此,生產力擴展的幅度遠小於團隊規模的線性擴展。和往常一樣,我們沒有明確的衡量標準,但我傾向於猜測它更接近平方根。如果我們使用我沒有證據的猜測作為基礎,那麼為了獲得兩倍的生產力,我們需要將團隊規模擴大四倍。因此,我們平均人才團隊需要有四十人才能與我們十位有才華的人才相匹配 - 在這一點上,成本是兩倍。

在此發揮作用的另一個因素是上市時間。讓我們假設兩個由四人組成的團隊,一個有才華,一個平均。為了反駁我們對有才華團隊的論點,忽略前幾段,並假設有才華團隊的生產力僅為平均團隊的兩倍。如果才華洋溢的團隊收費是兩倍,那麼我們可以假設在財務上選擇哪個團隊並不重要嗎?

恐怕有才華的團隊再次獲勝。他們將在平均團隊的一半時間內完成專案,這意味著客戶將從交付的軟體中更早開始產生價值。這種更早的價值,加上貨幣的時間價值,代表了選擇有才華團隊的財務收益,即使他們每單位產出的成本相同。

敏捷開發進一步加速了這種效應。有才華的團隊比平均團隊有更快的週期時間。這使整個團隊能夠更快地探索選項:構建、評估、最佳化。這加速了生產出更好的軟體,從而產生更高的價值。這加劇了上市時間效應。(並且自然會假設有才華的團隊無論如何都更有可能生產出更好的軟體。)

更快的週期時間會帶來更好的外部產品,但有才華的團隊可以做出的最大貢獻可能是生產出具有更高內部品質的軟體。在我看來,有才華的程式設計師和平均程式設計師之間的生產力差異可能小於良好的程式碼庫和平均程式碼庫之間的生產力差異。由於有才華的程式設計師傾向於產生良好的程式碼庫,這意味著由於內部品質,生產力優勢會隨著時間而加劇。

對我來說,這一切聽起來就像是一個極具說服力的論點。這也是廣泛接受的觀點(至少對自認有才華的程式設計師來說)。但這遠遠沒有被整個軟體產業接受。我們可以看出,因為有才華的開發人員的溢價(就薪資/合約費用而言)低於生產力差異。造成這種情況的主要原因可能是無法客觀衡量生產力。雇主無法客觀證明薪水較高的程式設計師實際上生產力較高。只有較高的成本是客觀的。因此,雇主必須將較高價值的主觀判斷與客觀的較高成本相匹配。許多雇主,即使他們相信有才華的程式設計師在個人上是值得的,也不願意向經理、人力資源和採購部門證明全部較高的成本。

這種效應會因難以進行主觀評估而加劇。在 Thoughtworks,我們依賴同儕評估 - 開發人員的能力由團隊成員評估。結果很難精確,但這是任何人都能做到的最好方式。

這一切都指出,聘用和留住有才華的程式設計師是一項艱難的工作。聘用和評估是一項艱難的工作。你必須與有非常個人慾望的人打交道,而這些慾望更重要,因為它們實際上是低薪的。因此,雇主面臨著一定的額外工作和更高的成本,而對更高的生產力只有判斷上的考量。

所以我理解這種情況,但不接受它。我相信,如果軟體產業要發揮其潛力,就需要認識到較便宜的人才假設,並縮小高生產力和較高補償之間的差距。