作者:桔了個仔,南洋理工大學,Datawhale成員
我的專欄叫作「面向人生程式設計」,一直以來,隻做到「程式設計」,很少講「人生」。今天靈感突然來了,那就程式設計的同時講講人生。
在軟體工程領域,有個詞叫做「過早優化」。指的是寫代碼的過程中,還沒完成功能,就開始搞優化,例如寫到一半,就去想剛才那個函數換個寫法是不是效率更高或者相容性更好。
舉個具體的例子。例如某個老闆看到旅行青蛙遊戲的小遊戲很火,想開發個旅行貓咪的小遊戲,找來一個做過大型遊戲的程式員進行開發。這位程式員可能一拿到策劃案,就開始規劃各種資料總管,配置管理器等等,開始計劃擴容等等,以「相容」後面一些意想不到的功能,防止因為沒設計好架構,後面大幅度改動。但事實上,等這個程式員做好這些配置,這類遊戲的熱度早已過去。即使熱度還在,做出來的遊戲可能臃腫,比起其他同類遊戲毫無優勢。
著名的計算機科學家,經典巨著《計算機程式設計的藝術》的作者Donald Knuth說過一句話:「過早優化是萬惡之源」(Premature optimization is the root of all evil)

換到我們生活中,也有的人會犯下「過早優化」的毛病。這個詞生活化點的近義詞是「完美主義」。當然,這裡「完美主義」指的是計劃上的完美主義,指的是計劃不完美就不敢開始行動,并不是指一個人工作過程精益求精,在生活中過早優化有兩個缺點:
- 躊躇不前。害怕過程不完美,進而不敢開始,結果什麼都沒做成。
- 自我懷疑。即使做了完美的計劃,開始行動後會發現計劃趕不上變化,于是開始自我懷疑,陷入失敗的循環。
我2014年開始健身,到現在堅持7年了。和我一起開始健身的小夥伴,很多中途沒堅持下去了。據我觀察,多數人開始健身,是這樣的:
- 辦個健身卡,買好運動裝備,鞋子衣服運動褲腰帶手套,走入健身房。
- 練幾下,感覺肌肉充血,信心滿滿的自拍。
- 堅持了幾天,感覺動力不足,不去了,健身卡從此吃灰。
而我開始健身的途徑是這樣的:
- 徒手俯卧撐,深蹲,用公園裡的單杠練背。
- 去淘寶買負重沙袋,負重做無器械鍛煉。
- 練了兩個月,已經适應了沙袋的重量,開始辦健身卡走進健身房,使用大重量鍛煉。
- 記錄每次訓練重量,計劃下次訓練要加重量。
類似的,有的人下定決心看書,就給自己買最貴的電子閱讀器,以為這樣能倒逼自己學習。其實這樣并沒有用。我買電子閱讀器前,我在手機已經讀了200多個小時,我需要電子閱讀器,并不是我沒有電子閱讀器我就不能讀書,我依然可以在手機讀書,隻是在手機讀久了,眼睛視力有點下降,才開始考慮電子閱讀器。
可以看到,開始做一個事情時,并不一定要萬事俱備。鍛煉需要走進健身房嗎?不一定,你每天原地深蹲,也是一個開始,不完美的開始但一直堅持,總比半途而廢好。同理,寫一篇好文章需要等靈感嗎?也不需要,你需要的是按照主題,收集材料,在這個過程中,靈感自然會出現。靈感不是等出來的,是幹出來的。當然,我能了解靈感出現後立馬提筆寫字的快感,我也偶爾有過(例如這篇),但更多的時候,我是提筆後寫了一段才有靈感的。
況且,萬事俱備的一個壞處,就是你一下子摸得太清,你反而失去了沿途發現新奇事的樂趣。就好像一個電影,你還沒開始看就被劇透完了,等你再進去電影院看,就失去了很多的樂趣。
但我們說不要過早優化,并不是從不優化,而是讓優化伴随整個軟體生命周期;在軟體領域,又有一個詞,叫做 「屎山」 ,指的是代碼因為長期缺乏維護和優化,變得難以閱讀,難以修改,甚至稍微一改動就會奔潰。人生也是這樣,長期缺乏規劃,也會讓我們人生變成「屎山」。例如有的人每天得過且過,陷入職場困境;或者從不管理花銷,進而陷入财務困境。
換到人生來說,不是說不做任何計劃,而是不要做那種大而全的計劃。你可以有很遠大的理想,但你不能規劃好每一步再行動,你需要的是,迅速制定最小可行計劃,馬上行動,根據遇到的情況去調整計劃,畢竟「絕知此事要躬行」。就好像你開車去某個地方,你并無法通過計劃方向盤怎麼擺動來到達那個地方,你隻能根據實際路況操縱方向盤。
在《精益創業》一書中,有一個詞叫做MVP(Minimum Viable Product,最小化可行産品)。通過低成本試驗,找到合适的路。如果我們的人生是一場或多場創業,那麼我們也可以通過找到MVP,來打磨産品——更好的自己。例如通過無器械健身,确定自己熱愛運動,再去辦健身卡;通過在電腦機房寫代碼,确定自己熱愛程式設計,再去配自己的工作站;通過去不同類型的公司實習,确定自己熱愛的工作,再去擇業。