工作中,碰到一些這樣的例子,總有人提出疑問(wèn),為什么一個(gè)同事工作勤勉,完成了很多事情,季度績(jī)效評(píng)定很高,但晉升卻碰壁了。之前已經(jīng)寫(xiě)過(guò)一篇《技術(shù)晉升的評(píng)定與博弈》,基本就能解答這個(gè)問(wèn)題。但隱藏在背后的更深層次的本質(zhì)卻是:工作、學(xué)習(xí)與績(jī)效的關(guān)系。
工作
程序員的主要工作是:編程,產(chǎn)出代碼,完成需求,交付軟件系統(tǒng)。
程序員按其工作技能和經(jīng)驗(yàn),大體又分為三個(gè)階段:初、中、高級(jí)。三個(gè)級(jí)別的程序員的主要工作都是編程與產(chǎn)出代碼,產(chǎn)出代碼的數(shù)量也許相差不大,但產(chǎn)出代碼的屬性可能有明顯差別。
在曾經(jīng)的文章中提出過(guò)一個(gè)代碼屬性:資產(chǎn)與負(fù)債。由大量初級(jí)程序員產(chǎn)出的代碼并以此構(gòu)建的軟件系統(tǒng),如果最終能完成交付,那么很可能資產(chǎn)和負(fù)債性基本持平。這是很多早期創(chuàng)業(yè)公司的特點(diǎn),因?yàn)槿狈Y金和足夠的知名度,難以吸引到又多又好的中高級(jí)程序員加入。這樣的系統(tǒng)多屬于勉強(qiáng)滿足業(yè)務(wù)需要,看不出明顯的 bug,但一遇到特殊情況就容易宕機(jī)。整個(gè)系統(tǒng)雖然勉強(qiáng)能支撐公司運(yùn)營(yíng),但其中欠下了大量的技術(shù)債,先活下來(lái),未來(lái)再來(lái)慢慢還。
若是完成了一個(gè)債務(wù)比資產(chǎn)還大的系統(tǒng),會(huì)是個(gè)什么樣的情況呢?那這就是一個(gè)還存在明顯 bug 的系統(tǒng),是基本無(wú)法完成交付和上線的。因此,現(xiàn)在主流都是先完成一個(gè)資產(chǎn)和負(fù)債剛好過(guò)平衡點(diǎn)的系統(tǒng),發(fā)布上線,接受反饋,再快速迭代,在迭代中不斷地提升其資產(chǎn)性,降低其負(fù)債性。在 Facebook 的著名標(biāo)語(yǔ)激勵(lì)下,奮力前行:Done is better than perfect(比完美更重要的是先完成)。
而中高級(jí)相比初級(jí)程序員,就不僅僅是交付代碼,完成工作,還有后續(xù)的兩條:達(dá)成品質(zhì)、優(yōu)化效率。從初級(jí)向后兩級(jí)跨越的門檻就在于此,比較容易被卡在不斷地在完成工作,但卻沒(méi)有去反思,沉淀,迭代并改進(jìn),導(dǎo)致一直停留在了不斷的