那些我希望同事知道的事
身為一位非常在乎效率的工程師,我經常在思考如何進一步提昇自己的效率,而對於那些拖累我效率的事物,則總是令我感到厭惡。 以前的我總以為這些我所在乎的事是常識,無法理解其他人為什麼不選擇這樣的做事方式,但隨著經驗越來越多,我才理解到一個很簡單的道理,那就是每個人都不一樣,工作模式也大不相同,我認為理想的方案,或許其他人並不這麼認為。
這篇文章的內容其實我已構思許久,但直到理解了人與人的差異之後,我才真的有動力來寫這篇文章。 我的方案不見得是對的,也未必適合每個人,但至少可以讓其他人知道我是怎麼想的。唯有先互相理解,才能夠彼此尊重。
我的效率秘訣
軟體工程師的主要任務是開發,但有趣的是,幾乎所有其他的任務都有著更高的優先權。如果一個功能需要開發兩天,你不可能等到兩天後才開始處理 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,確保我最終不會漏掉。
我希望同事配合的事
- Slack 溝通盡量一次說完,不要在 tag 了對方之後,還要對方花時間等你打字。
- 除了緊急事件,不要在非上班時間 tag 同事。
- 詢問 SQL 問題,請把 query 排版好,並附上相關資訊。請儘可能簡化 query,只留下與你問題相關的部份,並說明 query 想要達成的效果。
- 邀請同事參加會議,請讓對方事先知道主題,如果有相關文件也應該儘早提供。
- 週期性的會儘早確認是否要召開,若取消則儘早通知。