深度主題文

工程師該如何避免做很多事但沒成果? 從做好優先順序排定開始

2024年11月11日

💡 E+ 成長計畫深度主題文

本文為 E+ 成長計畫的深度主題文,開放免費閱讀。E+ 的訂閱讀者除了每週會收到一篇新內容外,也享有過去所有內容的閱讀權限。

如果你對於這類深度內容感興趣,歡迎加入 E+ 成長計畫,除了全系列所有完整深度文章外,也可觀看過去所有的直播回放。

前 Google 工程師 Edmond Lau 曾說過一個很精闢的觀點,他說:「如果你花幾分鐘找到便宜幾千塊錢的機票,那麼是否省下買杯星巴克的錢,就變得沒那麼重要;如果你花幾個小時,好好談薪水讓年新增加幾萬美元,那麼是否要省下買便宜機票的幾百美元,就變得沒那麼重要。」

做某些事情,能夠帶來的效益,會遠遠高過於其他沒那麼重要的事。而想要成為高效工程師,就需要先辨別出那些最重要的事,然後專注在做那些最重要的事情上面。

在這篇主題文,我們不只會講排優先順序,而是進一步講「毫不留情地排定優先順序」或是大家英文很常聽到的 relentless prioritisation。

為什麼要特別加上「毫不留情」呢? 因為在現實的軟體開發世界中,有太多事可以做,所以經常會遇到的狀況是,覺得每件事都很重要,所以都不能放掉,所以最終沒能排定優先順序,而是被事情淹沒。

為了避免這種狀況,「毫不留情」變成必須的。毫不留情意味著,有些事情可能很重要,但沒有到最重要,這時即使你覺得棄之可惜,但仍必須要果斷且不留情地捨棄。因為唯有這麼做,才能真正專注在最優先的事情。

沒有排定優先順序的後果

這時你可能會問,為什麼要排定優先順序? 這樣有什麼好處?

這邊讓我們用一個切身之痛,來說明為什麼這件事重要。 筆者剛加入先前待的公司第一年時,試著積極地去爭取事情做,這讓加入公司的第一年,累積了很多事,在績效考核拿到不錯的成果,這看似不錯,但事實上掉入了一個有問題的坑。

是什麼問題呢? 是在第一年結束跟主管聊到升遷的話題時卡關了。當時收到的回饋是做的事情沒有到「下一階段的標準」。沒錯,在原本的職級做很多事,可以讓自己在該職級獲得好的績效,但這不代表做的事情有足夠大到讓自己能升遷。換句話說,做再多影響力不夠大的事,怎麼樣都可能沒辦法獲得升遷。

這個慘痛的教訓,背後意味著,比起累積很多沒那麼重要的事,不如把時間與精力,專注在一個有足夠大影響力的事情上面。在意識到這點時,你的腦中可能會出現一個問題,那就是「該如何排定什麼該優先做?」

如何判斷什麼是重要的事呢?

一個簡單的原則是從投資報酬率 ROI (Return on Investment) 的角度來看。對於工程師來說,投資不是財務上的投資,而是時間上的投資,因為對工程師來說最重要、最有限的就是時間。

具體來說,從開頭提到的 Edmon Lau 的觀點來看,工程師的優先順序可以用 影響力 / 所花的時間 來判斷。當今天除下來的結果越大,就越應該做。

看待 「影響力 / 所花的時間」時要避免的誤區

影響力 / 所花的時間 的觀點切入,要能夠有效提高,很顯然地可以作兩件事

  • 減少所花的時間
  • 提高做的事情的影響力

在往下講之前,有個誤區強烈推薦一定要避免,那就是影響力這件事,要有一定的門檻;如果低於某個門檻,即使所花的時間降到很低,最終得到的結果不足夠。以 Li 的例子來說,即使用很快的時間,解掉某個無關痛癢的 bug,因為解掉該 bug 帶來的效益本身不大,這樣不管再快解掉,最終累積的影響力,還是被判定為不足以獲得升遷。

因此在下個段落,我們會先試著談如何做更高影響力的事。

做影響力更高的事情

首先要有清楚的指標,知道要衡量什麼。接著去辨別出做什麼對該指標有幫助。假如沒有一個清晰的指標,就沒辦法有效去比較哪件事比較重要。

以軟體工程來說,假如是做產品開發的,可以衡量對用戶的影響,例如增進用戶的使用率,或者提高轉換率,或者降低流失率。之所以說一般的前後端工程師要培養產品思維,因為這能讓你有效跟產品端對齊,讓你能把時間花在高影響力的事情上。

舉例來說,同樣是解一個 bug,假如解一個能夠大幅降低用戶流失率的 bug,而流失率又正好是產品端現階段看重的,那麼解這個 bug 就很有價值。反之,假如產品的使用者轉換率本來就很好,解某個 bug 能增進一些轉換率,但偏偏這時轉換率不是最關鍵的,那解這種 bug 就沒有太高的影響力。

避免落入虛假緊急的陷阱

在追求做更高影響力事情的時候,要切記避免落入虛假緊急的陷阱。圖靈獎得主 David Patterson 回首職涯後寫下的 16 項人生體悟,其中一點就在談「多數人花太多時間在緊急而非重要的事 Most of us spend too much time on what is urgent and not enough time on what is important」。

在工作上,有太多機制在創造虛假的緊急性 (false urgency),這些機制讓你覺得某件事很緊急,但其實那件事根本沒那麼重要。但因為你誤以為緊急,所以把專注力放到那邊,進而讓自己沒有專注在重要的事。

舉例來說,多數軟體團隊會用 Slack 或是 Teams 之類的工具,這類工具都會有通知,而這些通知經常會製造虛假的緊急性 (false urgency),當通知跳出來時,看到的人會覺得這件事很緊急,讓人想要趕快點開來看。

但是絕多數時候,不是所有通知都是緊急的,有些可能真的緊急,但也不少並不是。這時候如果每一個通知你都馬上看,就可能讓你落入低影響力的陷阱,去關注那些不是真正重要且緊急的事。

要如何避免這種狀況呢? 一個有效的方式是做區分,例如針對某些頻道,使用靜音功能,讓這些不會有重要訊息的頻道,不會成為干擾自己的來源。

對於這些頻道,真的想去關注時再去看就好,不要被通知干擾。另一種做法是,可以設定只有當標注自己,或者在某些特定頻道時收到訊息,才會跳通知。這樣做能確保通知量不會多,且每次有通知都會是真正重要且緊急的。

這不只適用在工作中,平常在用社群媒體也是,可以把不必要的通知關掉,只留下重要的通知,避免因為那些不重要也不緊急的通知,一直跳出來干擾自己,讓自己能專注在真正重要的事上 (例如花時間陪家人朋友、花時間讀深度長文,而不是花時間看那些通知)。

如何降低所花的時間?

延續上一段落談的,給定你已經確定作的事情有足夠的影響力,這時就可以進一步優化花在上面的時間。當能夠用更短的時間完成,就有更多時間去挑戰其他具有影響力的事。這段落讓我們一起聊聊從工程師的角度,可以如何有效降低所花的時間。

善用工具與自動化

想要降低花的時間,最直觀可以從工具與自動化的角度來看。現在有非常多 AI 輔助工程師的工具,以 ExplainThis 團隊來說,我們在開發上用到 Cursor、Supermaven 等工具,讓寫程式的時間大幅降低。

另外,從工程的角度來看,如果某件事情讓你手動重複做好幾次,就是可以開始思考自動化的好時機。以測試功能來說,寫自動化測試,可以有效讓未來每次改動,需要手動測試的間降低,這累積起來能幫助未來省下很多時間。雖然寫的當下可能會多花時間,但未來能幫忙省下大量時間,這就會是值得做的。

懂得拒絕

以 Li 的例子來說,當初之所以會作很多小事,除了自己想要積極外,一個點也是不善於拒絕。當想著「反正這舉手之勞,一下就處理掉」,這會導致當同時有三五個小事疊加起來,可能一天的時間就被吃掉,導致沒辦法真的去做什麼重要的事。

至於如何有理又有禮貌的拒絕呢?

一個常見的做法,是軟性拒絕,例如說現在沒辦法,但之後可以 (這邊的之後要明確說出你解決完重要的事情後的時間點),讓對方可以去找其他人幫忙,不打擾你做手邊重要的事。而軟性拒絕更好的做法,是讓對方知道,雖然你現在無法幫忙,但可以找誰求助,然後指引對方去找到其他能幫忙的人。甚至更好的做法,是假如平常團隊有做好文件化,可以把相關文件傳給對方,讓對方自己能解決問題。

除了軟性拒絕,Google 主任工程師 Lee McKeeman 曾分享一個好用的句型,推薦大家使用:

I’d love to help, but can’t accept new projects without them being prioritized through the intake process here (link), and having one of my current priorities superseded. Any additional out-of-band work threatens my current deliverables and I am not able to delay these without explicit approval from my manager. If you need me to prioritize this, feel free to start a conversation with my manager.

上面的句型包含幾項重要元素:

  • 先讓對方知道自己有意願幫忙、不是不想幫忙
  • 接著說,但現在手邊有幾項高優先度的項目要做
  • 如果要插入事情,需要透過某個流程 (例如跟產品經理、工程經理討論)
  • 因為如果不這麼做,手邊重要的事就會被耽誤到
  • 最後再次強調,如果要調整優先順序,需要更高層級的人同意

懂得授權

要減少自己花時間在某件事的另一個有效方法,就是放手讓其他人去做,或者找到適合的人來做。這背後代表的是有「授權思維」,授權思維試很多資深、主任工程師談過的重要思維,因為一個人有的時間就那麼多,想要讓更多事完成,勢必沒辦法每件事都自己做。

更進一步說,可能作某件事,對目前你所在的職級幫助沒很大,但可能對其他人卻很有幫助。以解簡單的 bug 來說,對實習生就會有幫助,簡單的 bug 一來不至於讓實習生不堪負荷,二來也能協助實習生累積實務經驗。這時與其自己覺得順手解掉就好,不如放手讓實習生去解,然後自己擔任審查的角色。

當你能有效辨別可以如何透過團隊中的其他人,來分擔並完成任務,你就能有時間專注在對自己最重要的事。

結語 — 請務必毫不留情

希望大家在讀完這篇後,對於「豪不留情地排定優先順序」,有更清楚的了解。總結來說,要優先做的事情,就是要符合 影響力 / 所花的時間 最大化的事。

在我們自己實踐這個要點的經驗中,其實最困難的還是在「毫不留情」。現在很多生產力相關的書籍,教你如何用更短的時間完成事情。同時多數時候,其實要判斷什麼事情重要與不重要,也不是太困難的事。

但沒辦法做到「毫不留情地放下那些不是最重要的」,往往是最終讓自己沒辦法有效排定優先順序的主因。股神 Warren Buffett 曾提過  「列出對你重要的 25 件事,選出最重要的 5 項,然後剩下的 20 項要仔細看好,提醒自己千萬千萬不要再去分心碰觸」。當你看到那 20 項「雖然重要,但不是最重要」的事,請務必毫不留情地拒絕碰觸。

💡 E+ 成長計畫深度主題文

本文為 E+ 成長計畫的深度主題文,開放免費閱讀。E+ 的訂閱讀者除了每週會收到一篇新內容外,也享有過去所有內容的閱讀權限。

如果你對於這類深度內容感興趣,歡迎加入 E+ 成長計畫,除了全系列所有完整深度文章外,也可觀看過去所有的直播回放。