工作中,碰到一些這樣的例子,總有人提出疑問,為什麼乙個同事工作勤勉,完成了很多事情,季度績效評定很高,但晉公升卻碰壁了。之前已經寫過一篇《技術晉公升的評定與博弈》,基本就能解答這個問題。但隱藏在背後的更深層次的本質卻是:工作、學習與績效的關係。
程式設計師的主要工作是:程式設計,產出**,完成需求,交付軟體系統。
程式設計師按其工作技能和經驗,大體又分為三個階段:初、中、高階。三個級別的程式設計師的主要工作都是程式設計與產出**,產出**的數量也許相差不大,但產出**的屬性可能有明顯差別。
在曾經的文章中提出過乙個**屬性:資產與負債。由大量初級程式設計師產出的**並以此構建的軟體系統,如果最終能完成交付,那麼很可能資產和負債性基本持平。這是很多早期創業公司的特點,因為缺乏資金和足夠的知名度,難以吸引到又多又好的中高階程式設計師加入。這樣的系統多屬於勉強滿足業務需要,看不出明顯的 bug,但一遇到特殊情況就容易宕機。整個系統雖然勉強能支撐公司運營,但其中欠下了大量的技術債,先活下來,未來再來慢慢還。
若是完成了乙個債務比資產還大的系統,會是個什麼樣的情況呢?那這就是乙個還存在明顯 bug 的系統,是基本無法完成交付和上線的。因此,現在主流都是先完成乙個資產和負債剛好過平衡點的系統,發布上線,接受反饋,再快速迭代,在迭代中不斷地提公升其資產性,降低其負債性。在 facebook 的著名標語激勵下,奮力前行:done is better than perfect(比完美更重要的是先完成)。
而中高階相比初級程式設計師,就不僅僅是交付**,完成工作,還有後續的兩條:達成品質、優化效率。從初級向後兩級跨越的門檻就在於此,比較容易被卡在不斷地在完成工作,但卻沒有去反思,沉澱,迭代並改進,導致一直停留在了不斷的重複中。
程式設計師的工作,以產出**為主,從初級到高階,**的負債屬性逐步降低,資產屬性不斷提公升,並成為高品質的個人貢獻者。在這個層面上,還是 facebook 的另一條標語足以說明問題:code wins arguments(**贏得爭論)。
學習,是唯一能讓你突破不斷迴圈怪圈的不二法門。
程式設計師在攀登職場階梯的道路上,走過了高階,後面會有好些分叉路線。比如,轉到脫離技術的純管理崗或者技術管理崗。我以前寫過,技術主管或架構師某種意義上都屬於技術管理崗,不懂技術是做不了這兩個角色的。或者繼續沿著深度領域走,成為細分領域專家。
這後面哪條路適合你呢?你是隨大流,還是自己真得認真思考過?這是做選擇題。如果一生要工作三十多年,前十年你多在做解答題,解決乙個又乙個問題。那麼在大約走過三分之一後,你就會開始做越來越多的選擇題。為什麼呢?因為一開始可能都沒有太多選擇的機會。而做好選擇題,就需要大量的學習,還需要不斷的試錯。
面對怎麼選路的問題,我近年學習的收穫是這樣的:選擇走最適合實現個人價值的路。這就是我的基礎選擇價值觀。程式設計師的個人價值該怎麼實現?該如何最大化?程式設計師作為個人貢獻者,產出的增長隨時間和經驗實際上連線性都不是,而是呈對數曲線的《兩種增長曲線》。到了一定時間必然面臨瓶頸,這就需要找到乙個價值貢獻放大器。有人很幸運的編寫服務於數千萬或數億人的軟體服務,這是產品自帶的價值放大器。這樣同樣寫乙份**,你的價值就是要比別人大很多。而轉管理者、主管或架構師,這些角色無非都是自帶槓桿因子的,所以也有價值放大作用。但個人能否適應得了這樣的角色轉換,又是另一回事了。
現在稍具規模的中大型公司內部的職場階梯模型,我看基本都源自拉姆·查蘭的那本書《領導梯隊》。書裡把人才潛能分成三種:熟練潛能、成長潛能、轉型潛能。原書文中對這三點做了詳細的特徵描述(比較長),我簡單提煉下主要特點:
* 熟練潛能:關注當前專業領域且十分熟練,但沒有顯示出在開發新能力上的努力,竭力維持現有技能。
* 成長潛能:按需開發新能力,顯示出高於當前層級要求的其他技能(專業、管理、領導)。
* 轉型潛能:持續有規律的開發新能力,追求跨層級的挑戰和機會,展現雄心壯志。
人力資源管理中的高潛人才盤點,基本就來自這套模型,主要就是識別出這三類潛能人才。「熟練潛能」就是對學習的最低要求,在程式設計師這個技術日新月異的行業裡,維持現有技能確實已經讓不少人感覺很竭力了。
攀登的這條階梯,它從來不是筆直的。在每乙個拐彎處,都應減速、思考、學習、進步。學習也常與錯誤相伴,查理·芒格說過:
世界上不存在不犯錯誤的學習或行事方式,只是我們可以通過學習,比其他人少犯一些錯誤 —— 也能夠在犯了錯誤之後,更快地糾正錯誤。但既要過上富足的生活又不犯很多錯誤是不可能的。實際上,生活之所以如此,是為了讓你們能夠處理錯誤。
聊聊程式設計師績效那點事
剛入職場的時候,對於績效的概念理解朦朦朧朧,到後面自己做pm,自己開始帶團隊,帶團隊以後開始接受公司相對正規的團隊管理的培訓,到閱讀德魯克的 卓有成效的管理者 對績效這個概念有了相對較為清晰的認識,所以在這篇隨筆裡,我會以自己的親身體驗來講一講我對績效的認識。1 top 1有意思的問題作為程式設計師...
談談程式設計師的績效考核
今天乙個朋友問我程式設計師應該怎麼考核。我想了想,總結了下我理解中一般開發人員的績效考核。考核的意義 首先乙個前提是,考核是手段不是目的。我一直覺得對乙個團隊來講,有兩個基本目標 乙個是完成自己承擔的工作任務,乙個是提公升整個團隊的能力。這兩個目標相互促進,進而實現螺旋式的上公升發展。考核只是為了更...
談談程式設計師的績效考核
今天乙個朋友問我程式設計師應該怎麼考核。我想了想,總結了下我理解中一般開發人員的績效考核。考核的意義 首先乙個前提是,考核是手段不是目的。我一直覺得對乙個團隊來講,有兩個基本目標 乙個是完成自己承擔的工作任務,乙個是提公升整個團隊的能力。這兩個目標相互促進,進而實現螺旋式的上公升發展。考核只是為了更...