Image credit: SpaceX

選擇比努力重要

以前我寫過一篇文章叫「do the right thing and do the thing right」,其中的核心概念就是「做對的事遠比把事情做好重要」。換句話說,意思就是「選擇比努力重要」。如果一開始就選錯了事情做,不管再努力都是徒勞。(但這不代表努力不重要,選對事情後一樣是要付出努力才有意義。)

現在回頭看我剛進D社的第一年,我覺得我沒能產生很大貢獻的原因其實就是我選錯事情做了。更糟的是,沒人跟我說我選錯事情了。

當時團隊還很小,每個人都對這個產品本身很有熱情和想法。作為新加入還在摸索的我,則是對於學新東西和在產品中嘗試新想法很有興趣,至於具體要做哪一部分,我都是來者不拒。這樣做了一年多,結果就是做了很多很雜的事情,但其實沒有累積什麼夠大夠重要的成果下來。

前面提過,做產品因為是在最上層,很多商業邏輯都是針對產品本身特別寫的。對於軟體工程師來說,做產品也相對地比較難累積能重複使用的技術能力。這時也讓我開始認真思考,如果一直做產品,長期來說這似乎不是一件能有讓我有累積和複利效果的領域。如果我之後要去別的公司,我學到的東西有多少能帶走呢?

新機會出現

就在我開始想要把重心轉往更底層發展時,新機會就剛好出現了。這時團隊發現「搜尋」這個功能需要大大改進,從前端到最底層的索引和排序都要重做。當時已經有一個L5的資深工程師H在做最底層的索引引擎了,但因為搜尋本身是個夠大夠複雜的領域,一個人是絕對不夠的,所以我跟manager聊一聊就決定加入H一起做搜尋。

剛開始時,因為H已經在做底層,所以我就從前後端開始,跟設計師一起合作把整個操作體驗重新設計。這段時間算是我開始覺得比較有貢獻的時候了,除了基本的搜尋功能外,我也提了一些新想法,即使不碰索引引擎也能有效改進整體的結果。

但後來不久,H就離開了團隊。我發現這是個好機會讓我接觸基礎建設層,就自告奮勇把底層的系統一起接下來。就這樣過了一段時間,我自然的就變成整個搜尋的owner,除了前後端和基礎建設,後來也把機器學習的方法引進來改進搜尋結果的排序。這段時間我算是做得蠻充實而且開心的,從本來對搜尋一無所知到把整個stack從頭到尾建立起來。

就這樣又過了一年,又到了績效考核的時候。這一年我覺得自己有明顯的成長,對團隊貢獻也大了許多,應該是超過L4的expectation了吧?說不定還能升職呢?

結果出來後,又是「meet expectation」,當然也沒有升職。

我對於這樣的結果感到失望,但更多的是困惑。我覺得我一定漏了什麼重要的事,或是根本沒搞清楚遊戲規則。為什麼我自以為做了很多貢獻但卻沒有被看見?到底做什麼事才有 “impact”?

直球對決

就在這個時候,團隊裡來了一個新的manager R,我原本的manager也因此決定轉回IC (Individual Contributor) 不做manager了,就讓我report給R。

R給我的第一印象不是很好,第一次見面的1:1 (1 on 1)上,感覺只是照本宣科了問了一些問題來認識我。甚至還生硬地問出「你最喜歡的烘培食品是什麼?」這種manager 101的問題,有種他第一天當manager的感覺。經歷過前兩次績效考核的失望和困惑後,我決定趁這次換manager的機會跟R直接了當的談我的表現和職涯的問題,如果得不到滿意的答案我就打算離開了。

R雖然還沒來多久,但也是挺願意跟我攤開來談。他很快點出我雖然可以一個人抵多個人用,但完全沒表現出領導能力。L4的中階工程師和L5的資深工程師最大的差別不是在程式能寫得多快多好的技術能力,而是能不能帶領幾個人一起完成一個專案解決一個大又模糊的問題。畢竟一個人再厲害,也是有極限的,而領導能力可以驅動一群人一起完成更大的事情。這意味著,我面對一個問題時,不是自己做完就好,而是要把模糊的問題轉化成具體又清晰的解決方案,然後切割成「別人」能理解和實做的小任務,畫出時間線,讓多人一起合作完成在一定時間內完成。

聽到這個我只覺得有點無奈。一方面是前一個manager完全沒給我這麼明確的feedback,讓我完全努力錯方向了。另一方面是,我覺得我也沒得到機會可以展現領導能力,並不是我沒有這個能力。

具體的說,我根本不應該想要一個人把搜尋整個扛下來。而是要把跟搜尋有關的最重要、最需要解決的問題搞清楚,提出大致的解決方向,寫下來並分享出來讓manager和整個團隊了解這個領域的scope有多大以及需要多少人來一起合作,然後說服manager增添人手跟我一起合作。

有了這次攤牌的經驗後,我突然發現跟manager直球對決非常有用。不只讓我清楚地知道我不足的地方,也有明確的方向可以改進。從這之後,我就開始改變我跟manager 1:1時的話題。不報告進度,反而直接談各種職涯與績效的辛辣話題,像是:「如果我想要在一年內升到下一級,我還缺了什麼?」、「我需要可以領導一個專案的機會,你能幫忙嗎?」、「你覺得我最近的表現如何?要做什麼才會得到4或4+的評比?」、「你覺得有誰的表現特別好,是我可以學習的?」、「我覺得現在團隊裡最大的問題是這些,我覺得我們可以這樣這樣做。你覺得呢?」。

領悟了這件事是我整個職涯中最重要的轉折點,完全改變了我的發展軌跡。從這之後的四年,我就連升了三級到了L7。

1:1的話題

和manager定期1:1是現代公司都有的流程之一,但大部分人其實都沒想過在這段時間內應該要談什麼話題。

如果不主動,預設就是交給manager來主導話題,所以很常就是「閒聊一下最近的生活」還有「報告最近在做的工作和進度」就沒了。但經過我的直球對決經驗後,我發現我以前犯的最大錯誤就是等到績效考核時才談績效和職涯發展的事情。這樣完全沒有好好利用1:1的時間,浪費了很多機會。

經過一些試驗,這些是我發現在1:1應該要做的事。

  1. 開一個文件紀錄每次1:1的agenda和我自己想討論的話題,並且分享給manager。平日有想到要討論的事就直接加進去,等下一次1:1就能拿出來討論。
  2. 不要讓manager主導1:1的話題。自己先提前寫好agenda對這點很有幫助。
  3. 1:1一開始要花點時間跟manager聊彼此的生活和家庭,建立信任和bonding。
  4. 工作進度不要在1:1中報告,而是平時就要讓「整個團隊」知道,讓自己做的事情保持透明。
  5. 如果工作上需要manager幫忙unblock,像是把一些事情escalate到更高層處理,或是需要他跟其他manager聯繫和溝通,這時候是最適合講的時候。
  6. 跟manager要feedback,討論最近有沒有什麼事可以做得更好、或是用不同方法處理,有沒有什麼事我應該要做但沒做,或是不應該要做但我卻花了很多時間做。
  7. 談團隊的未來,像是理想上團隊應該要有多大,應該要負責什麼範圍和解決什麼問題,或是不要負責什麼。這類話題可以快速幫我把視野拉高到跟manager一樣的層級,這樣才能看到他真正覺得重要的問題。
  8. 至少一個月討論一次職涯發展的目標和進度。跟manager討論下一級應該要做什麼事,我距離有多遠,還需要做什麼事才能在X年內達到下一級的目標,最近有沒有什麼合適的機會。

其中我覺得最重要的莫過於定期跟manager談職涯的發展。這有很多好處:

  1. 可以讓manager知道我有想要在職涯上積極的前進,他才會幫我留意各種機會
  2. 固定討論職涯和績效的話題,可以讓我清楚地知道expectation的線在哪,還有怎樣才會超過expectation。同樣的,升職需要做的事跟「exceed expectation」其實是不一樣的。從L5開始,每一個等級都應該看成一個不同的職位,日常工作有本質上的不同,守備範圍也有數量級的差距。因此,做一大堆目前等級的事情頂多只能得到「exceed expectation」,但要升職則需要做下一個等級的事情,並且要能做好才行。談這些事可以讓我知道哪些事應該要多做一點,以及哪些事其實並不值得做。(這並不是說是只做對升職有用的事,而是要找到自己的所長與對團隊或公司貢獻最大的交集。)
  3. 把manager對我的期待直接錨定在「下一級」的程度,讓他清楚看到我的貢獻和中間的進度。

因為平時就不斷的跟manager要feedback,所以每半年的績效考核不會有什麼意外,反而只是總結和回顧過去半年已經討論過很多次的事情。

更重要的是,跟manager開始討論這類話題後,我才發現manager的好壞很大程度在於他們對於幫助團隊裡每個人的職涯成長有多用心。我最早的兩個manager完全沒跟我談過這些事,讓我浪費了很多時間和機會。還好後來我決定要直球對決,要是我只是繼續做著同樣的事,我很可能就會在原地打轉而不會有所成長。

這件事也讓我意識到,「manage up」是一件一定要做的事,想要什麼一定要直接說,不要有「我默默做好我的工作一定會得到賞識」的心態。雖然有些好的manager會主動關心團隊中每個人的職涯發展,但能不能碰到要看運氣。在大公司裡,re-org (組織變動)或是換manager都是很常見的事,我平均一年就會換一次manager。主動出擊才能讓manager知道我的職涯發展計劃,以及我想要用什麼樣的方式產生貢獻,這樣他不但不用瞎猜也可以直接幫忙。最後,對自己做的事也要主動的去思考和質疑這些事最終能產生的價值,然後勇敢的對沒價值的事情說不。畢竟,「選擇比努力重要」,職涯上的成功很大成分是在對的時間做了對的事情,而不是拼命埋頭加班苦幹。

(待續)