為什麼頂級軟件工程師得不到應得的薪水?

史蒂夫·喬布斯說過,在軟件開發行業,軟件開發者的最好水平與平均水平之間的差別是 50:1;甚至可能是 100:1。如果你是一名軟件工程師,可能會同意喬布斯所說的。

軟件工程師的最好水平與平均水平之間的差距真的非常大,比大部分職業都大得多。

然而,也有一些行業的人才分佈跟軟件行業類似,最常見的就是職業運動員。1% 的運動員表現比平均水平好得多,而這種天分差距也反映在運動員的工資上,這是完全有道理的。例如,美國職業棒球大聯盟的頂級投手之一斯蒂芬·斯特拉斯堡(Stephen Strasburg),在 2019 年拿到了 3800 萬美元,而美國職業棒球大聯盟的平均工資是 430 萬美元。

如果說工資反映了運動員的貢獻,那麼,為什麼軟件開發者的工資分配跟職業運動員的工資分配不一樣?

為什麼評價一個軟件工程師那麼難?

我認為,這主要是因為企業不能像體育俱樂部評價他們的球員那樣評價軟件工程師。

大部分職業體育項目都有非常完整且客觀的運動員統計數據,管理人員可以相當準確地評價運動員。因此,俱樂部會為那些優秀的球員支付更高的工資,因為每個人都知道他們是優秀的。如果一傢俱樂部不想付那麼多錢,其它俱樂部會願意付。儘管有時候一個運動員的價值和價格會有一些差異,但兩者之間的差距永遠不會太大。這正是信息非常透明時,市場的運作方式。

而軟件開發市場就是一個完全不同的世界。你不可能知道某人是否是一個好的軟件工程師,除非你曾經與他們密切合作過很長一段時間。

如果你是一個程序員,你可能會有一個能夠貢獻 10 倍、50 倍平均產出的同事。如果現在你是這個人上級的上級,你會知道他 / 她是一個“10 倍工程師”嗎?如果你的 CTO 或 CEO 知道他 / 她是一位如此出色的工程師,會願意支付比平均水平高 10 倍的工資來留住他們嗎?

很可能不會。

事實上,那些“10 倍工程師”們只得到 10% 的加薪,僅此而已。根本原因是人們不知道他們有多好,除了直接接觸的同事。

編程面試結果作為評價依據是否可行?

事實上,從大型科技公司的招聘流程中就可以看出評價一個軟件工程師是多麼的困難。

對於程序員來說,最常見的技術面試流程是要求他們解決非常具有挑戰性的編程問題。如果面試者之前從未見過這些問題,那麼大部分這些問題都非常難解決。這也是為什麼許多人選擇集中練習(或記憶)可能的面試習題集(這也稱為 leetcoding)。

同時,在短時間內解決複雜算法問題的能力與一個人在工作中的表現並不高度相關。一個軟件工程師在工作中所做的事情與解決那些預先定義好的編程面試問題是完全不同的。這並不是評價軟件工程師能力的一個理想方式。

軟件工程師在工作中需要解決的許多問題是非常模糊的。知道如何將一個模糊的問題分解為幾個定義好的編程子問題,以及如何將一個業務問題框定為一個已經深入研究的學術問題,對於成為一個高效工程師來說是非常重要的。

儘管大部分公司已經意識到招聘過程中的這個問題,他們仍然傾向這麼做。為什麼?因為沒有更好的方法來評價一個軟件工程師的能力。也許這種傳統的面試流程只能衡量一個軟件工程師工作能力的 20%,但總比什麼都沒有強。

所以,你知道這有多麼難了。

考核並不能使工資分配更平均

我之所以提出上面的面試例子,是為了說明幾乎不可能用一種彈性的方法來評價一個軟件工程師。現在,我想做一個思維實驗來進一步闡述這一觀點。

假設程序員的能力與職業運動員的能力一樣容易衡量。如果這個假設是真的,你的工程師同事應該有些人拿年薪 200 萬美元,而有些人拿年薪 10 萬美元。即使他們都知道彼此的薪水和分配有多極端,他們仍然會感到公平。因為他們知道那些拿 20 倍薪水的人比其他人優秀 20 倍。他們值那麼多薪水。

但試想一下,如果一個公司真的這樣分配薪水,人們會不會感到不公平甚至憤怒?我想他們肯定會的,除了那些優秀工程師的親密同事(那些每天和他們一起工作的人)。

由於幾乎不可能大規模且客觀地評價軟件工程師能力,公司會更傾向用一種比較安全的方式來分配軟件工程師的報酬,儘管這可能不會真實地反映出他們的能力。

原文鏈接:

Why Aren’t Companies Paying 50X Software Engineers 50X More? Why The Programming Job Market Is Not Like Professional Sport’s Free Agency?

關注我並轉發此篇文章,私信我“領取資料”,即可免費獲得InfoQ價值4999元迷你書!


分享到:


相關文章: