在工作中,我發現很多同學對如何「提高自己的工作效率」這件事情,缺乏足夠的關注。
比如某同學在登入伺服器時,總是手動輸入密碼,看得我心急火燎的。
我的觀點是,必須想方設法提高自己的工作效率,才能留出更多的時間偷懶放羊。
今天心血來潮,整理一些自己的經驗,拋磚引玉,也希望看到各位分享自己的經驗,互相學習如何才能更懶。
動態規劃
有N件物品和一個容量為V的揹包。第i件物品的費用是 c[i] ,價值是 w[i] 。求解將哪些物品裝入揹包可使價值總和最大。
-- 《揹包九講:01揹包》
把題面稍作修改:
- 把「物品」改成「任務」,「費用」改成「耗時」,「價值」改成「績效」
- 把「揹包容量」改成「時間」
—— 就是我們日常工作需要解的題。
時間總是不夠用的,但是通過優化時間的分配,喜歡卷的同學可以拿更好的績效,喜歡躺的同學可以放更久的羊。
當然這裡有個問題是,如何預判一個任務的耗時和績效;對於工作經驗較淺的同學,建議請教老油條們。
Fail Fast
Essentially, fail fast (a.k.a. fail early) is to code your software such that, when there is a problem, the software fails as soon as and as visibly as possible, rather than trying to proceed in a possibly unstable state.
在編碼時,「Fail Fast」原則要求我們儘早把問題暴露出來,例如立即丟擲exception,越接近錯誤現場,就能保留越多的相關資訊,從而提高問題排查的效率。
單測就是「Fail Fast」原則的一種典型應用,在《單元測試 ——「簡單」的樂趣》裡有這份來自微軟的資料,充分說明了這一點:
不同測試階段發現BUG的平均耗時:
單元測試階段,平均耗時 3.25 小時
整合測試階段,平均耗時 6.25 小時 (+92%)
系統測試階段,平均耗時 11.5 小時 (+254%)
類似地,在日常工作中,如果能夠儘早將問題暴露出來,我們就能用最小的成本去不斷試錯,從而更好地優化方案、更快達成目標。
DRY
對自己程式碼有追求的同學應該都瞭解 DRY 原則:Don't Repeat Yourself。
類似的,在日常工作中,也應該想方設法避免重複勞動。
但是,只有你意識到了自己在做「重複勞動」,才可能會去尋找解決辦法。
例如開頭說的「手輸密碼」,除了增加打字速度,別無進益。因此當你發現可能需要多次執行時,就應該想辦法優化它。
一個簡單的方案是用 ssh-copy-id 命令來建立信任關係,從而實現免密登入;在無法建立信任關係的環境下(比如某些跳板機),也可以使用 expect 來模擬輸入,解放自己。
用好工具
工欲善其事,必先利其器。
——《論語·衛靈公》
Use the right tool and use it right.
作為 vim 的十五年重度使用者,我仍然感嘆 vim 的強大,不愧為「編輯器之神」。通過靈活組合各種快捷鍵,vim 使用者可以在文字中行雲流水般穿梭,徹底擺脫遙遠的滑鼠和 ↑ ↓ ← →;也可以通過正規表示式、巨集、自定義函式等各種方式替代重複工作。
想象一下,某同學分別按下 i、→、Backspace 鍵,只是為了刪除當前游標下的一個字元時,我有多抓狂(所以我應該不適合吃運維這碗飯)。下次請直接按 x 鍵。
又比如,工作中我經常需要在 linux 終端下敲命令。因此諸如 <Ctrl+A>、<Ctrl+E>、<Ctrl+R>、<CTRL+]>、<Ctrl+W>、<Alt+F>、<Alt+B>、<Alt+.>、<Alt+Backspace> 等快捷鍵都是我重度使用的。可惜的是,很多終端(如 mac 下的 item2)預設都不開啟 alt 鍵(即mac下的option鍵),需要手動開啟。
此外,今年新發現一款神器:copilot。自從在 IDEA / VSCode 裡裝上了它,編碼工作的很大一部分變成了 code review,值得在此特別推薦一把。
如下圖所示,紅框部分都是 copilot 自動生成的,我只需要負責按 tab:
(裡面有一個 bug,你發現了嗎?)
花錢買時間
為好的產品和服務付費,能夠節省大量的時間成本。
作為一個 SecureCRT 的 13 年老使用者,我覺得它的正版授權(99$)是典型的物超所值。它內建的 Session Manager、zmodem(rz/sz)、Logon Action/Script、Command Manager 等功能,對工作效率的提高是非常顯著的。
另一個不完全恰當的例子是,我總是選擇住在公司附近,增加 1~2k 的房租成本,相比其他很多同學,每天可以節省 1 ~ 2 小時的通勤時間。雖然省下來的時間不能直接換算成工資,但是可躺可肝,多了幾分自由,也多了幾分可能。
收
以上寫得比較零碎,但確實是自己覺得很有用的經驗。希望在這折騰的 2022 年,我們可以用戰略上的勤奮,來換得戰術上的懶惰;更進一步,還可以用戰術上的勤奮,來換得更多偷懶的時光。