提高產出
要有效地提高產出,應該要設法在策略層次做出努力。
曾經有獵頭朋友跟我詢問過,如何辨別高產出的軟體工程師?
我建議他們可以觀察一下這個候選人怎麼用電腦。比方說,他是否善長使用 terminal 來下指令、是否打字很快、是否使用 Vim/Emacs、是否使用 autojump 來做目錄跳轉、使用 fuzzy search 來開啟檔案、…,以上的都還只是戰術的層次 (tactical level)。更進一步,如果這位軟體工程師對函數式編程 (functional programming) 很有研究,善長 Clojure/Elixir,甚至如果你問他,『你為什麼這樣子設計』之類的問題,他也可以辯才無誤地回答背後的種種理由,那我差不多就要直接說,『那就雇用他了吧…。』
歸納起來,軟體工程師要提高產出不外乎:
在戰術的層次做最佳化:高效地運用電腦來做輔助編程的任務。
在策略的層次做最佳化:選擇高產出的程式語言、對領域問題 (domain problem) 有深入的理解。
當然,戰術層次的最佳化做得好的,人數往往還是比在策略層次 (strategic level) 做得好的多得多。有趣的事情是,網路上許多關於「提高產出」的建議,多半止於戰術層次的討論,也因此,動不動就會有 11 個要訣、21 個要訣。
也許這些提高產出的要訣太多了,也有人說,一些提高產出的要訣根本就是 productivity porn。
在策略層次提高產出
在我的經驗,要在策略的層次提高產出,通常需要思考三個要點:
逆向工作
委任與授權
平衡探索 (exploration) 與利用 (exploitation)
逆向工作
我常常看別人說自己很忙,我多問了一下對方,是在忙些什麼事時,於是對方給我看了一個冗長的待辦事項清單。正面來講,有使用「待辦事項清單」來管理的,通常已經是相對產出比較高的人了,因為至少有在自我管理。然而,待辦事項清單的缺點在於,它很容易給人一種:「我完成了很多事了,所以我很有產出」的錯覺。
投入的時間、投資的成本都是輸入 (input),而輸入未必可以轉換成輸出 (output),換言之,即使輸入很多,如果轉換率很差,最後的結果依然會差強人意。要提高從輸入到輸出的轉換率,逆向工作就很重要,因為透過逆向工作,我們可以更早注意到關鍵的環節。
逆向工作是指:當一項新工作冒出來時,先去認真思考,這項工作的目的,並且一路想到最終的結果,再從最終的結果反推,哪些事情才是最重要的,並且從最關鍵的環節開始著手。
委任與授權
我個人也很喜歡透過委任與授權來解決很多事。比方說,凡是太太可以幫我處理的事,都請太太幫我忙,通常主要會是採購類別的事。而太太有時候會問我預算的問題,通常我也都從不過問細節,不過問的思考如下:
買車、買房、裝演房屋以外的消費決定,就算全部加總,佔一般人生活的開銷也只是某個比例而已。換言之,就算做了錯誤的採購決策,被坑了,也沒有什麼大不了的。
其它我覺得委任非常重要的領域則是會計、法律這類的專業領域。比方說,開設公司、節稅,會計師就很有用;而擬定重要的合約時也少不了律師。
委任與授權可以算是『被動』提高生產力的方法,它比較像是一種預防措施,可以防止我們把有限的專注力投入在不重要的事項上,還有防止我們因為專業知識不足而曝露在高風險之中。
平衡探索 (exploration) 與利用 (exploitation)
每當我們面臨選項的時候,究竟要選擇「未知但可能隱含更多成果」的選項,即探索 (exploration) 選項,還是要選擇「已知且成果可預期」的選項,即利用 (exploitation) 選項,被稱為「探索與利用的兩難」(exploration and exploitation dilemma),這類的決策普遍出現在我們的生活與工作之中。
以人性來講,由於人性有風險趨避的傾向,其實是比較喜歡已知且成果可預期的選項。換言之,如果要讓探索可以佔有合理的比例的話,應該要設計工作與生活的習慣,強迫自己一定要去探索。比方說,如果是金額很大的採購,原則上要選五家的供應商來詢價,做市場價格的調查。
此外,當選擇要探索的機會時,也應設法分析,才容易找到成功率高的機會。比方說,很多的公司,經營到某個階段時,都會設法在本業之外加以探索新的機會。然而,成功率高的探索,往往是在自家公司本業的鄰近事業 (business adjacencies) 進行的探索。
後記
最近我剛好有機會去對友人提了一些提高生產力的建議,還順便建議他一週工作四天就好。工作能力很強的友人表示說,他很有興趣,可惜有執行上的困難,因為他的老闆不會同意。
我又再補了另一個建議:「跟你老闆要求昇職,昇為總經理,然後修改你自己的每週工作時間。」


