那些我希望同事知道的事

  |   Source

身為一位非常在乎效率的工程師,我經常在思考如何進一步提昇自己的效率,而對於那些拖累我效率的事物,則總是令我感到厭惡。 以前的我總以為這些我所在乎的事是常識,無法理解其他人為什麼不選擇這樣的做事方式,但隨著經驗越來越多,我才理解到一個很簡單的道理,那就是每個人都不一樣,工作模式也大不相同,我認為理想的方案,或許其他人並不這麼認為。

這篇文章的內容其實我已構思許久,但直到理解了人與人的差異之後,我才真的有動力來寫這篇文章。 我的方案不見得是對的,也未必適合每個人,但至少可以讓其他人知道我是怎麼想的。唯有先互相理解,才能夠彼此尊重。

我的效率秘訣

軟體工程師的主要任務是開發,但有趣的是,幾乎所有其他的任務都有著更高的優先權。如果一個功能需要開發兩天,你不可能等到兩天後才開始處理 alert、著手老闆新交待的事項、回答同事問題。 既然頻繁的 context switch 是免不了的,如何有效率的 context switch 便成了我的主要目標。

我最核心的思想是使用 Priority Queue 的概念,總是優先做最高優先權的任務,並在完成後繼續這個步驟挑選下一個任務來處理。如果這個任務需要較長的時間才能完成 (超過一小時),我會在這期間尋找適合的中斷點去檢查 Email 與 Slack 訊息,並將新的任務加入 Priority Queue。如果新的任務需要立刻執行,那我就會改作新的任務,並將手上原先的任務重新放進 Queue 中。

那麼這個 Priority Queue 具體是怎麼實行?一直將任務移進移出不會很麻煩嗎?事實上我的 Priority Queue 很大一部份就是 Gmail 本身,那些來自外部的任務,本身經常就是一封信件。而我會將信箱視作一個 To-do List,只有在一件事完全結束後,我才會將這封信 Archive。因此所謂的將任務放進 queue、移出 queue,其實很多時候都只是在心裡上的操作,而實際上卻是什麼都不用做。Gmail 本身沒有任意排序的功能,因此在待處理信件太多時,要從中找出最高優先權的任務並不容易,而我的對應方案是 snooze 短期不會處理的信件,讓我能專注於高優先權的任務。

如果任務需要其他同事的介入,早期我會在回信後就將整串 thread archive,畢竟現在的狀態是被同事 blocking,而且等同事處理完回信給我時,這整個 thread 又會重新回到我的信箱中。然而這世界並沒有這麼理想,總是會有些不回信的同事,雖然對這樣的情況感到很無奈,但我們只要改用 snooze 即可,若在一段時間後沒收到回信,這個 thread 還是會重新出現在信箱中,方便我再次提醒同事或著採取其他手段。

Slack 也是我 Priority Queue 的其中一部份,不過相比於 Gmail 有個集中的 inbox,分散在 Slack 各個 channel 的訊息,如果在讀訊息當下沒有馬上做出處理,後續很容易就會忘掉。幸好 Slack 上有提供 Saved items,只要是沒有辦法立刻處理完畢的訊息,我都會把它們加進 Saved items,確保我最終不會漏掉。

我希望同事配合的事

  1. Slack 溝通盡量一次說完,不要在 tag 了對方之後,還要對方花時間等你打字。
  2. 除了緊急事件,不要在非上班時間 tag 同事
  3. 詢問 SQL 問題,請把 query 排版好,並附上相關資訊。請儘可能簡化 query,只留下與你問題相關的部份,並說明 query 想要達成的效果。
  4. 邀請同事參加會議,請讓對方事先知道主題,如果有相關文件也應該儘早提供。
  5. 週期性的會儘早確認是否要召開,若取消則儘早通知