程序員的績(jī)效之謎
前不久看到個(gè)新聞,Amazon 美國(guó)的一個(gè)中國(guó) IT 工程師在西雅圖辦公室跳樓自殺,原因是收到了 PIP。那 PIP 是什么?就是 Performance Improvement Plan 的簡(jiǎn)寫(xiě),表達(dá)的意思大概就是,再給你點(diǎn)時(shí)間改進(jìn)工作績(jī)效,否則就請(qǐng)走人。但實(shí)際收到 PIP 95% 的情況都是走人,這樣實(shí)際的意思就變成了,再給你點(diǎn)時(shí)間趕快找下家吧。
但這哥們?cè)诿绹?guó)工作,拿的是工作簽證。如果失業(yè)了,就意味著工作簽證失效,在美國(guó)也就待不下去了。各種壓力一起涌來(lái),一時(shí)想不開(kāi)就跳樓了。這個(gè)故事里面有個(gè)關(guān)鍵詞:績(jī)效,而且是程序員的績(jī)效。關(guān)于程序員的績(jī)效,像是一個(gè)彌久的歷史謎題,長(zhǎng)期困擾著大量的程序員與他們的領(lǐng)導(dǎo)們。
工具與方法
KPI(Key Performance Indicators 關(guān)鍵績(jī)效指標(biāo))是企業(yè)***用的績(jī)效考核工具,但 KPI 通常只能定一些更寬泛的指標(biāo),且一般也只能分解到團(tuán)隊(duì)經(jīng)理的頭上,而很難分解到具體每個(gè)程序員的身上。
在我工作的歷史上,換過(guò)幾家公司,每家公司都使用一種粗放且獨(dú)特的方式來(lái)考核程序員。***家公司,工作完一年后我才知道什么叫績(jī)效考核。因?yàn)樗鼈儾捎玫氖悄甓瓤己?,一年過(guò)去到了年末經(jīng)理跑來(lái)告訴你說(shuō)你今年的績(jī)效還不錯(cuò),然后也不知道不錯(cuò)是個(gè)什么水平。
總之是不錯(cuò)了,但***也沒(méi)有加薪獎(jiǎng)金什么的。努力回顧一年的工作,發(fā)現(xiàn)記憶非常模糊,除了少數(shù)幾件印象深刻的事。而那幾件少數(shù)事件,都是我搞砸了的事情,而且還捅了不小的窟窿,獲得了血淚換來(lái)的寶貴經(jīng)驗(yàn)。這么一想可能覺(jué)得「不錯(cuò)」大概就是「有點(diǎn)差」的一個(gè)稍微溫和的表達(dá)了。
說(shuō)起按事件來(lái)評(píng)判績(jī)效,就想起后來(lái)的另一個(gè)公司,他們就使用這樣的關(guān)鍵事件法來(lái)評(píng)估全年的績(jī)效?;叵胍幌逻@一年自己做了什么特別的事情,有讓身邊的同事或領(lǐng)導(dǎo)都覺(jué)得很棒的事件么?有印象深刻的正向事件,那么就是優(yōu)秀,如果是負(fù)向事件就是還需改進(jìn)提升,其他就是一般了。表面看有那么一點(diǎn)合理性,但結(jié)合程序員的工作性質(zhì)一想就不是那么合理了。
上面的方法要么只是模糊要么只是沒(méi)考慮工作性質(zhì)的差異,那么下面的這個(gè)公司的評(píng)估方法就完全扯淡了。當(dāng)時(shí)公司采用強(qiáng)制分布績(jī)效的方式,比如一個(gè)部門(mén)有 10% 的人得優(yōu)秀,有 10% 的人得差,其他屬于一般。這樣的評(píng)估方式每月一次,直接和當(dāng)月工資中的績(jī)效獎(jiǎng)金掛鉤。
上面這么一強(qiáng)制分布下來(lái),部門(mén)再分布到小組,小組長(zhǎng)一看大家都是兄弟伙,一年有十個(gè)月出差于全國(guó)各地,天天加班不說(shuō),還要給人績(jī)效評(píng)個(gè)差,于心不忍。大家一商量,那就輪流來(lái)吧,這次得了差的,過(guò)幾個(gè)月就會(huì)得個(gè)優(yōu)秀,這樣的績(jī)效評(píng)估基本也就流于形式,毫無(wú)意義了。
近年,像 Google 這樣的明星公司大規(guī)模應(yīng)用起了一種叫 OKR 的工具。OKR 就是 Objectives and Key Results 的縮寫(xiě),表示目標(biāo)和關(guān)鍵結(jié)果。這聽(tīng)起來(lái)和 KPI 很類(lèi)似,但它們有個(gè)本質(zhì)的區(qū)別是方向性的,KPI 一般是分解下來(lái),要你去做的。而 OKR 是我要去做的,KPI 是考核工具,而 OKR 實(shí)際是管理工具,跟蹤做事的目標(biāo)和方向性。所以 OKR 也不是解決績(jī)效評(píng)估難題的銀彈。
綜上,通用的這些績(jī)效評(píng)估工具和方法,似乎面對(duì)程序員的績(jī)效評(píng)估都不太有用,這是為什么呢?這也許要從程序員的工作實(shí)質(zhì)說(shuō)起。
工作與評(píng)估
管理學(xué)上有位大師叫彼得·德魯克,他最早提出了知識(shí)工作者(Knowledge Worker)的概念,德魯克生于 1909 年,所以他經(jīng)歷了從工業(yè)時(shí)代到信息時(shí)代的革命性變化。早期的工業(yè)時(shí)代只有工人和管理者的概念,那時(shí)的行業(yè)多是重資本推動(dòng)的制造業(yè),工人的特點(diǎn)是流水線的體力勞動(dòng),簡(jiǎn)單重復(fù),過(guò)程很容易監(jiān)控,產(chǎn)出結(jié)果的數(shù)量和品質(zhì)也容易檢測(cè),所以個(gè)人的 KPI 很容易量化。
而德魯克定義的知識(shí)工作者是:
那些掌握和運(yùn)用符號(hào)與概念,利用知識(shí)或信息工作的人。
顯然,程序員就是典型的知識(shí)工作者。知識(shí)工作者不僅利用知識(shí),他們還會(huì)創(chuàng)造新的知識(shí),從知識(shí)中獲得洞見(jiàn),進(jìn)而產(chǎn)生智慧。
程序員的主要產(chǎn)出是:代碼或交付的軟件系統(tǒng)。但軟件系統(tǒng)的代碼通常都是由多個(gè)程序員合作一起完成的,所以你就沒(méi)法精確的測(cè)量每個(gè)程序員的貢獻(xiàn)。也不要想當(dāng)然的用一些簡(jiǎn)單粗暴的指標(biāo)來(lái)考核程序員,比如像:代碼行數(shù)。這樣的指標(biāo)容易定義,容易測(cè)量,所以這樣的考核容易實(shí)施,而容易實(shí)施的考核總是首先被采用。但前提和出發(fā)點(diǎn)是錯(cuò)的,只會(huì)南轅北轍,離目標(biāo)越來(lái)越遠(yuǎn)。
幸好應(yīng)該大家都認(rèn)識(shí)到這樣簡(jiǎn)單的指標(biāo)無(wú)法考評(píng)程序員個(gè)體的產(chǎn)出,但如果真得采用代碼行數(shù)來(lái)評(píng)價(jià)的話,倒是能解決程序界的另一個(gè)亙古已久的爭(zhēng)論:花括號(hào) { 到底是寫(xiě)在一行程序的末尾還是另起一行:)。
硅谷創(chuàng)業(yè)之父 Paul Graham 在《黑客與畫(huà)家》一書(shū)中寫(xiě)到:
程序員就是知識(shí)時(shí)代的手藝人,也是目前還存在的***的手工藝人群體。
最***的 5% 的程序員寫(xiě)出了全世界 99% 的優(yōu)秀軟件。
可見(jiàn),程序員的個(gè)體差異導(dǎo)致的貢獻(xiàn)度差異之大。但很遺憾的是我們至今沒(méi)有任何可行的具體測(cè)量方法能精確的評(píng)估程序員個(gè)體的貢獻(xiàn)度。所以 Paul Graham 繼續(xù)說(shuō):
大公司會(huì)使得每個(gè)員工的貢獻(xiàn)平均化。
大公司***的困擾就是無(wú)法準(zhǔn)確測(cè)量每個(gè)員工的貢獻(xiàn),大多數(shù)時(shí)候它只是在瞎猜。
我依稀記得看過(guò)一個(gè)來(lái)自英特爾的例子,原文記不住,大概簡(jiǎn)單重述下。是說(shuō)有個(gè)負(fù)責(zé)芯片設(shè)計(jì)的工程師提出并改進(jìn)了一種芯片設(shè)計(jì)和生產(chǎn)方法,應(yīng)用到一條年產(chǎn)值 10 億美元的生產(chǎn)線,提高了 1% 的產(chǎn)值。那么他的直接貢獻(xiàn)很容易計(jì)算出來(lái)就是一年為公司多增加了 1000 萬(wàn)美金產(chǎn)值。但問(wèn)題是我們?cè)撛趺椽?jiǎng)勵(lì)他的這次卓越貢獻(xiàn)?
這個(gè)例子中還提到,他所在的芯片設(shè)計(jì)部門(mén)有一百多人,所以平均下來(lái)整個(gè)部門(mén)的人均額外貢獻(xiàn)就不到 10 萬(wàn)美金了。所以,當(dāng)年公司能給予他的獎(jiǎng)勵(lì)實(shí)際是遠(yuǎn)小于計(jì)算出來(lái)的實(shí)際增加值的,這就是一個(gè)大公司平均化的典型例子。但這個(gè)例子中,也不必感覺(jué)太不公平,實(shí)際離開(kāi)了英特爾這樣的大公司,那個(gè)芯片工程師很可能是無(wú)法做出這樣的貢獻(xiàn)的。大公司一方面平均化了個(gè)人貢獻(xiàn)度,另一方面也為個(gè)人降低了風(fēng)險(xiǎn)同時(shí)提供了貢獻(xiàn)的放大器。
反過(guò)來(lái),如果是在小的創(chuàng)業(yè)型公司,它依然是平均化計(jì)算個(gè)人貢獻(xiàn)度的。但人少了,被平均掉的就少了。對(duì)于小創(chuàng)業(yè)公司 Graham 的建議是:
你***找出色的人合作,因?yàn)樗麄兊墓ぷ骱湍愕囊黄鹌骄?jì)算。
結(jié)果與影響
按 SMART 原則來(lái)評(píng)定你的目標(biāo)和達(dá)成情況:
- Specific(明確)
- Measurable(可測(cè)量)
- Achievable(可達(dá)成)
- Relevant(相關(guān))
- Time-bound(時(shí)限)
其中只有「可測(cè)量」這一項(xiàng)在程序員個(gè)體上比較難實(shí)施,所以恐怕只能放棄精確的測(cè)量而轉(zhuǎn)為目標(biāo)導(dǎo)向。而所謂目標(biāo)或 KPI 無(wú)非就是上級(jí)對(duì)下屬的期望,然后再以此來(lái)判斷下屬的績(jī)效是否合乎期望。如果上級(jí)沒(méi)有明確對(duì)下屬的期望,如果我們不知道到底要什么,最可能的結(jié)果是什么也得不到。
那評(píng)估的結(jié)果是否能以達(dá)成目標(biāo)為依據(jù)呢?表面一聽(tīng)似乎很合理,但仔細(xì)一深入想想就有問(wèn)題。如果上級(jí)只用目標(biāo)管理來(lái)決定下屬的升遷賞罰,以至于下屬只專(zhuān)注于制定“好的”目標(biāo),即容易達(dá)成的 KPI,就會(huì)錯(cuò)失了其他可能。
哥倫布的故事證明了這一點(diǎn),哥倫布設(shè)定了一個(gè)尋找到亞洲(東印度群島)的新航線,但他最終卻找到了美洲,并開(kāi)辟了后來(lái)延續(xù)幾個(gè)世紀(jì)的歐洲探險(xiǎn)和殖民海外領(lǐng)地的大時(shí)代,因此:
即使一個(gè)下屬?zèng)]能達(dá)成所設(shè)定的目標(biāo),他的績(jī)效仍有可能被評(píng)為卓越。
哥倫布當(dāng)初定的目標(biāo)和***達(dá)成的結(jié)果存在差距,但并不能以此說(shuō)他做的不好。過(guò)于綁定目標(biāo)則限制死了路徑并控制了風(fēng)險(xiǎn),但激勵(lì)創(chuàng)新意味著冒險(xiǎn),如果沒(méi)有風(fēng)險(xiǎn),就幾乎等于沒(méi)有可放大性。
但就個(gè)體而言,你需要分清楚評(píng)估個(gè)人績(jī)效和提供機(jī)會(huì)讓個(gè)人獲得成長(zhǎng)與提升的區(qū)別。所以,不妨把這兩種效果分為:
- 產(chǎn)出績(jī)效
- 成長(zhǎng)績(jī)效
前者是組織更關(guān)心的,后者是個(gè)人更應(yīng)關(guān)心的。當(dāng)然現(xiàn)在的組織都說(shuō)很關(guān)心員工成長(zhǎng)并提供相應(yīng)培訓(xùn),但更多時(shí)候組織是更傾向于在市場(chǎng)購(gòu)買(mǎi)已經(jīng)成熟的大樹(shù)。所以你不應(yīng)該等著組織想起來(lái)給你澆灌才去成長(zhǎng),成長(zhǎng)績(jī)效通常只能自己去評(píng)估,而且這點(diǎn)在很多組織也直接影響你的升級(jí)。
...
《程序員修煉之道》一書(shū)中寫(xiě)道:
注重實(shí)效的程序員不僅要完成工作,而且要完成得漂亮。
所以,請(qǐng):“Care about your craft. Think! About your work.(關(guān)心你的技藝,思考!你的工作)。” 畢竟你還是個(gè)手藝人,還要靠手藝吃飯不是。
此刻瞬間
有時(shí)會(huì)面臨這樣一種尷尬局面:一群程序員里,你想提拔一個(gè)經(jīng)理,難道不是應(yīng)該提拔績(jī)效更好的么?在你把超級(jí)程序員提拔為經(jīng)理的同時(shí),你也失去了你的超級(jí)程序員,并創(chuàng)造了一個(gè)差勁的經(jīng)理。反過(guò)來(lái),你去提拔一個(gè)差勁的程序員當(dāng)經(jīng)理,則更糟:一樣創(chuàng)造了一個(gè)差勁的經(jīng)理,而且可能會(huì)失去一群從超級(jí)到優(yōu)秀的程序員。
從這個(gè)周五到周日一直在出差途中,有個(gè)讀者(目前還是大學(xué)生)留言咨詢(xún)了一些問(wèn)題,由于過(guò)了 48 小時(shí)已無(wú)法回復(fù),就在這里簡(jiǎn)單說(shuō)說(shuō)吧。他的問(wèn)題很有代表性:喜歡自己的專(zhuān)業(yè)(工商管理專(zhuān)業(yè),原話是感興趣有熱情,理解為喜歡應(yīng)該沒(méi)問(wèn)題吧),卻感覺(jué)將來(lái)找工作很難對(duì)口。又想學(xué)一門(mén)硬技術(shù)傍身,想問(wèn)下目前 IT 技術(shù)的各技術(shù)分枝,也就是學(xué)什么將來(lái)能做什么。
我的看法是***先想清楚一件事,到底以后要靠本專(zhuān)業(yè)還是學(xué)編程為生?至于梳理各技術(shù)分枝,這個(gè)問(wèn)題的提法于我就屬于上一篇文章關(guān)于提問(wèn)的毛病,太大而難以簡(jiǎn)單回答。另外自己回答得了這個(gè)問(wèn)題可能是你能以編程為生的一個(gè)前提。
【本文是51CTO專(zhuān)欄作者胡峰的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)聯(lián)系作者本人獲取授權(quán)】