程序修行從“拔刀術(shù)”到“萬(wàn)劍訣”

程序修行路上走了一段時(shí)間,終于成為了高級(jí)程序員,然后就該碰到瓶頸了。近來(lái)就有高級(jí)程序員和我聊起這個(gè)瓶頸問(wèn)題,這正是《兩種增長(zhǎng)類型》這篇文章中提到的「對(duì)數(shù)增長(zhǎng)」的瓶頸期。

在這個(gè)對(duì)數(shù)緩慢增長(zhǎng)的瓶頸期,我也曾困擾許久。在摸索嘗試了一段時(shí)間后,慢慢走出下面這樣一條路徑,下面我想用點(diǎn)形象的類比來(lái)說(shuō)明。

拔刀斬

拔刀術(shù)來(lái)自日本古武道,其核心思想便是一擊必殺,利用瞬間高速的拔刀攻擊對(duì)敵人造成出其不意的打擊。講究的是快,也即速度和鋒利度。

武士不斷修行拔刀術(shù),力求一擊殺敵,而程序員學(xué)習(xí)和練習(xí)編程的過(guò)程也是類似的。最終,你的編程技到達(dá)了一個(gè)什么樣的程度,就是看它的鋒利度。面臨一個(gè)程序問(wèn)題能否一刀見(jiàn)血,一擊必殺。

剛?cè)腴T的程序員上線發(fā)布碰到了一個(gè)問(wèn)題,抓耳撓腮、冥思苦想、加班加點(diǎn)終不得解。于是跑來(lái)向你這個(gè)高級(jí)程序員請(qǐng)教,此時(shí)時(shí)鐘指向了凌晨一點(diǎn)。你放下手中剛泡好正準(zhǔn)備吃的方便面,一支燃燒著的半截?zé)燁^掛在你的指尖。你猶豫了一下:是猛抽兩口還是滅掉煙頭去處理這個(gè)緊急問(wèn)題?最終你終究不舍的把半截?zé)燁^小心的放在方便面盒邊沿,再用塑料的方便叉把面蓋和煙頭一起固定住。

然后,你挽起了袖子走到這個(gè)年輕程序員的電腦前,迅速掃了幾眼報(bào)錯(cuò)的錯(cuò)誤日志,再調(diào)出你心愛(ài)的 vi 編輯器,噼里啪啦的改動(dòng)了幾行代碼,保存、關(guān)閉、再重新構(gòu)建、發(fā)布。電腦黑底白字的界面不停的滾動(dòng)著,你已站起身向散發(fā)著兩種味道的方便面走去,并回頭輕輕對(duì)年輕程序員說(shuō)了聲:可以了。

這就是你向年輕程序員展示的你的拔刀術(shù),問(wèn)題一斬而絕。好吧,這是一種詭異的優(yōu)雅,似乎任何問(wèn)題對(duì)于電影里的程序員,在電腦前噼里啪啦敲上幾行代碼都能解決?,F(xiàn)實(shí)中大部分時(shí)候都比看上去更困難一些,真實(shí)世界的拔刀術(shù)和劍心(動(dòng)漫《浪客劍心》主角)的「天翔龍閃」相比,終歸顯得笨拙許多。

在我們追求「天翔龍閃」的境界時(shí),看上去并不遠(yuǎn),卻越走越慢了,似乎永遠(yuǎn)也走不到,然后我們知道這就是進(jìn)入了瓶頸區(qū)。

御劍術(shù)

這個(gè)招數(shù)的類比來(lái)自好多年前(初中)玩過(guò)的一個(gè)電腦游戲——《仙劍奇?zhèn)b傳》。如果過(guò)去面臨問(wèn)題你需要拔刀解決,那這里的刀就是你的知識(shí)、技能和經(jīng)驗(yàn)。那御劍術(shù)里的劍又是什么?

在一篇關(guān)于高級(jí)程序員的文章中,提出了一個(gè)組合三角的觀點(diǎn),先看下面這張圖:

從編程入門到成為高級(jí)程序員,你需要得到的幫助和指導(dǎo)越來(lái)越少,而你能提供的幫助和指導(dǎo)應(yīng)該越來(lái)越多。所以前面那個(gè)場(chǎng)景中,作為高級(jí)程序員的你更理想的做法是去指導(dǎo)年輕程序員如何解決問(wèn)題的思路,而不是自己拔刀,唰唰兩下搞定。

網(wǎng)友評(píng)論