程序員自身能力拓展模型
聽人說了一個詞兒,叫作“Comfirtable Zone”,中文是“舒適區(qū)”。
這個詞兒讓我瞬間聯(lián)系到程序員的能力邊界問題,我畫了能力拓展模型圖。如下:
我覺得這個能力拓展模型,適用于一個人的方方面面,但這次我打算只拿程序員來扯一下。
能力拓展模型
圖中左側(cè)是我們的現(xiàn)狀,最內(nèi)層的原型是我們感到舒適的區(qū)域,我稱之為“舒適區(qū)”。
以程序員為例,當程序員的技術能力和解決問題的能力達到一定水平之后,就能夠輕松勝任某些開發(fā)任務,解決特定實際問題,給用戶帶來某方面的便利。他的能力與他接觸到的問題匹配,此時程序員處于舒適區(qū)。這個舒適區(qū)的大小是由他解決問題能力的大小定義和界定的。
當問題超出程序員先有技能和經(jīng)驗說明,他能看到并了解,但還不能解決。那這些問題就是這個程序員隨時可能面對的挑戰(zhàn)區(qū),也就是圖中的黃色圓型。
圖中的大片的紅色區(qū)域,對程序員來講,就是未知區(qū)域,未知即迷茫,未知即痛苦。這個區(qū)域往往是程序員看不清或看不到的,是百慕大三角的一片未知而神秘的區(qū)域,貿(mào)然跳入,可能折戟沉沙鎩羽而歸。
假如一個程序員愿意跳出舒適區(qū),踏入挑戰(zhàn)區(qū),接受一定的不適,那他就能夠有機會拓展他的能力,將自己的舒適區(qū)擴展得更大,他的能力模型就變成上圖右側(cè)部分,舒適區(qū)變大,挑戰(zhàn)區(qū)變大,痛苦區(qū)變大,這也是符合人類認知規(guī)律的:知道的越多,不知道的也越多。
如果一個程序員連輕微不適都不愿意接受,那他就會漸漸固步自封,落后于別人,落后于時代,漸漸被這個日新月異的時代所拋棄,成為一個別人眼中沒什么用的老家伙。
在開發(fā)過程中擴展舒適區(qū)
一個程序員的能力,是可以通過鍛煉不斷變強的。就像人的肌肉,一段時間讓鍛煉強度超負荷一點,適應了,習慣了,肌肉變得比原來強了,就再超負荷一點,通過這樣的螺旋式遞進,肌肉就會越來越強。程序員也是一樣的,你的學習能力、代碼能力、設計能力、溝通能力、管理能力等等,都是可以通過鍛煉來加強的(我們得考慮一個人適合做什么,如果他沒有某方面的才干,雖然通過鍛煉也可以加強,但違背天性的事兒通常為事倍功半)。
在軟件開發(fā)過程中,一個程序員,他會什么語言懂什么框架水平如何,自己心里有數(shù),項目經(jīng)理通過他的表現(xiàn)也認為自己心里有數(shù)。那么在有新的項目要做時,通常的做法是,哪個程序員熟悉實現(xiàn)Tx任務相關的技術,就讓這個程序員做Tx任務,這通常又是出于交付期、生產(chǎn)率、成本等各方面的考慮。
在這種情況下,每個人都做自己駕輕就熟的事情,對整個項目來講,自然是最經(jīng)濟的。可是對程序員自己來講,卻是不經(jīng)濟的。因為你無法接受新的挑戰(zhàn),你的能力邊界的拓展就會很慢。所以,合理的情況是,項目經(jīng)理在劃分任務時,要對程序員負責,既給一個程序員能輕松完成的任務,也要給他需要費點兒勁兒才能完成的任務,通過具有挑戰(zhàn)性的任務來鍛煉這個程序員,讓他更好更快的成長。但是這樣做的管理成本太高,所以,現(xiàn)實當中,很少公司的項目經(jīng)理會主動這么做(沒合適人手take某個任務時會被動這么做)。
鑒于這種現(xiàn)實,作為程序員自己,如果你想更快地成長,就要表現(xiàn)得勇敢一些,主動走到挑戰(zhàn)區(qū)域,去搶具有挑戰(zhàn)性的任務。(如果不好意思主動,也可以在有挑戰(zhàn)性的任務落在自己頭上時屁顛屁顛地接受。)一旦你拿到了對你來講具有挑戰(zhàn)性的任務,那你就賺到了。沒錯,我是故意這么說的,你賺到了。雖然你會為此殫精竭慮,雖然你可能為此加班,雖然你可能為此在別人看不見的地方付出,但是你擁有了機會和更多可能性,如果你順利完成了,那你的舒適區(qū)會擴大,你接觸新挑戰(zhàn)的機會也會變大,你就進入了良性循環(huán),你會越來越強大。你終將走上七龍珠中悟空的變身之路,成為賽亞人,超級賽亞人,超級賽亞人2,超級賽亞人3,……直到成為超級賽亞人之神。
想想看,這是多么美好的事!
So,某個技術沒搞過?不是問題。某個語言沒學過?不是問題。軟件結構太復雜,一時掌控不了?不是問題。業(yè)務不熟悉?不是問題。如果你覺得這些是問題,OK,請坐看云起,等待時光帶走一切然后把你丟在原地。
在渴望成就自我的程序員眼里,問題即機會。只有抓住機會,我們解決問題的能力才會在痛苦的歷練中像雪球一樣越滾越大。