每到了程式導師實驗計畫進入尾聲的時候,就會有許多學生跟我討論 offer 選擇的問題,應該要去 A 公司還是 B 公司?對於這類型的問題,如果你預期我能給出一個確切的答案,沒錯,你是對的,確切的答案就是:「窩不知道」

沒在跟你開玩笑,我是真的不知道。我覺得選擇是一件很「個人」的事情。

通常在給這類型的建議時,都會回想起自己以前是怎麼選擇的,換句話說,就是:「你會給 N 年前在選擇第一份工作的自己什麼建議?」

我自己其實相當滿意我的第一個選擇,有興趣的可以看回顧文:成為前端工程師的四週年回顧,那時候我也不確定自己想做什麼,進了公司以後先學了 Node.js,寫一些簡單的後端小東西,也複習了 Android,修改了自家提供的 SDK 以及回覆廠商的問題,後來也學了 React,把前端的一些地方用 React 來重構。

前端、後端跟 Android 我都碰過了。對於這樣的工作內容,有些人就會覺得太雜了,樣樣通樣樣鬆,這樣到底有什麼用?但回頭來看,確實還滿有用的。正因為每個都懂一點,所以在討論相關知識的時候我都可以插上一腳,能比別人更快理解背後的脈絡以及系統的全貌,我覺得其實滿有幫助的。

有關於職涯的選擇,其實我過往的文章也都有談到一點,像是在 2016 年年底的:《一個資淺工程師年末的自我省視》中,我談到了廣度跟深度以及小公司跟大公司的選擇:

我自己第一間是待新創公司,待一年多之後其實想換到大公司去工作。為什麼?因為我想體驗大公司的開發流程。在很多新創公司,開發都沒有什麼流程,規則比較鬆散。例如說我自己一個人負責那整個專案的話,我要不要寫測試、程式碼風格要不要統一,這一切都取決於在我。有也可以,但沒有也可以,沒有人會管你,但是也沒有人會給你一些建議。優點是非常自由,缺點就是沒有人帶。

所以待久之後,就會想體驗一下大公司的開發流程到底長怎樣,想要試試看跟別人分工,而不再是自己一個人做一個專案。有人可以互相討論、互相指點,彼此教學相長。

不過無論是哪一種類型的公司,我覺得最重要的還是「找一份可以學到東西的工作」。這個道理很簡單,你一天必須花八個小時在這一份工作上面,如果你在這份工作已經找不到什麼可以學習了,那你的成長就停滯了。雖然當個薪水小偷領這些薪水也很不錯,但我覺得你也必須考慮到你之後的職涯發展(除非這份工作你本來就是要養老用的)。要找一份學得到的東西的工作,你才能邊工作邊成長,對你自己的生涯發展也會更順利一點。

在 2017 年 4 月份的:《該進大公司還是新創?》一文中,我給出的方向是:

再者,其實「我應該進大公司還是新創」這個問題其實也問得不好。如果對方真的只問:「我該進大公司還是新創?」這種問題,那我也會覺得這個很空泛很爛。但就算對方這樣問,其實我們也還是可以再追問幾個問題,才會更明白提問者想要問的到底是什麼,例如說:

1. 你為什麼想(或不想)進大公司?

2. 你為什麼想(或不想)進新創公司?

3. 你目前猶豫的點是什麼?

以我的經歷來說,通常會問我這個問題的人,可能是已經拿到一間新創公司跟一間大公司的 offer 了,這時候才會提出:「我該進大公司還是新創」這個疑問。

而他們通常會提出這個疑問,其實背後的點有可能是:

1. 以職涯發展來說,大公司的經歷會不會比新創更吃香?至少大公司大家都聽過

2. 聽說新創做的事情比較雜,會不會到那邊之後什麼都要做,反而比較像打雜的?

3. 聽說在大公司只能當小螺絲,只負責其中一部分,會不會很無聊?

4. 聽說人很少的小公司因為培養新人的成本很高,來了就不想放他走,是真的嗎?

5. 在新創公司如果公司倒掉怎麼辦?

6. 新創公司的升遷跟獎金制度聽說都不完整,那選大公司是不是比較好?

因為原本的問題範圍太大,所以我們必須把這個大問題切成很多的小問題,其實這些小問題才是重點。而且你把這些小問題解決以後,大問題也就跟著解決了。

接著在 2018 年年底的《兩年過後,我能夠被稱為資深工程師了嗎?》,我重新回顧了兩年前的文章,並再次針對廣度與深度的問題給了一段回答,覺得先廣再深很不錯:

兩年前我覺得自己廣度比深度多很多,因此我寫了一大堆文章針對不同的主題深入研究,讓自己對技術的理解變得更深。

那廣度呢?有了深度以後,我對廣度便不是這麼在乎了。我在第一份工作時還沒決定好自己想往哪裡走,因此我用 node.js 寫後端,用 react+redux 寫前端,還用 Java 寫了 Android 的 App。

可是在那之後我變成了專職的前端工程師,因此對後端技術便不是那麼關注,有哪些新的潮流我都不知道,更不用說 mobile 了。還是會維持一些基本的敏感度,例如說知道新出的 Flutter 之類的,但也僅僅知道這個關鍵字而已。

這其實也是我想走的方向,我覺得先廣再深其實是很不錯的一件事,你得先廣才能去找到自己想走的方向,並且也在這段時期累積一些對其他領域的基本理解,接著才走深,去深入理解你選的那個領域。

以我來說,我在廣度時期讓自己理解後端、Mobile 開發或是一點架構層面的東西,這些都對我之後的職涯很有幫助,至少我有基本的概念,不會什麼都不懂。

而 2019 年 2 月的大雜燴文章《程式相關問題一網打盡:談自學、轉職、出國、職涯、教學、補習、騙錢、產業以及努力》中,對於工作的選擇我給出了一個比較大方向的建議:

選工作的時候應該優先考量什麼因素?

我自己會優先考量的是發展空間,在聽到工作內容時就差不多能知道在這間公司的發展性如何,我這邊指的發展性不是指說在公司內部是否能升官,而是指說個人能力的提升。

舉例來說,我現在這間公司找我的時候跟我說他們要把整個平台砍掉重練,所以我就知道如果進來的話,能夠跟著一個中型專案從無到有一路建立起來,我覺得這是很寶貴的經驗,所以對我來說會覺得很有發展空間。

這個邏輯可以套用到另一個問題:「什麼時候該離職?」,當你覺得發展空間有限,能學到的東西不多時就差不多可以離職了,到一個更有挑戰性的環境去。

除此之外,還有很多人會選團隊,覺得團隊對了整個就都對了,因為你有那個氛圍、有那個環境,就會是一個很適合發展的地方,大家互相砥礪一起進步。不過我從以前到現在都沒進過什麼大團隊,同事也都沒有真的到很厲害所以我還沒有機會體驗到就是了,或許等我進這種公司以後再來寫篇文章跟大家分享。

一直到 2020 年 4 月我自己重新出去求職,從《關於求職,連我自己都不知道我要什麼》一文中可以看出,其實我自己也不知道該怎麼選擇:

在求職的時候,有一些問題很常被問到,像是:

1. 你這次求職想看一些什麼類型的公司?

2. 你的職涯規劃是什麼?

3. 你在工作上的目標是什麼?

有些問題我以為我知道答案,但沒有,我不知道。

舉例來說,一開始我都說這次求職沒有特定喜好,想要到處看看,所以公司類型都可以。想要到處看看是真的,但是都可以是真的嗎?這次也看了博奕業,但如果拿到 offer,我真的會去嗎?可能不會。如果公司很遠在南港,我會去嗎?也可能不會。

一開始也看了滿多小公司,直到真的面試之後才發現,小公司我真的 ok 嗎?還是我這次其實想要找比較大一點的公司?我不知道。

沒有限制是一種自由,但也是一種困擾。

你想找什麼職位?資深前端工程師?好啊。那如果有 team leader 的位置呢?好啊,也可以試試看。那如果是全端呢?好啊,我也不排斥。到處看看是好事,問題是最後要怎麼做選擇。因為最後能選的只有一個,沒有什麼我全都要這種事,很多工作條件是互斥的,不相容就是不相容。

如同我開頭所講的,我覺得選擇本來就是一件很個人的事情,別人的最佳選擇不一定是你的。而以我的個性來說,我相信所有的選擇都是好的選擇,相信每一個選擇都有價值,也相信自己有能力改變環境。我不相信有什麼「一失足成千古恨」的選擇,就算真的有「比較差」的選擇,我也覺得自己能換個角度從中得到收穫。

所以對於選擇這件事情,如果以我自身出發,我通常給不了什麼好建議。我講出來的話大概都是:「不錯啊,可以試試看」或是「OK,沒什麼問題」之類的,因為我是真的覺得問題不大。

但如果直接把這一套用在學生上面,似乎就會顯得失去了身為一個導師的價值。對於職涯選擇的問題,我期望自己應該要能給出更有價值的答案,或是對他們更有幫助的答案。

大多數人都害怕選錯,都希望選到價值最高的那個,但是怎樣才叫做價值高?薪水高嗎?那如果薪水很高可是都用一些很偏門的技術,導致下一份很難找呢,這樣算是價值高嗎?

為了避免在這個問題打轉太久,我就先把價值定義成是「對自己成長性最有幫助」好了,從這個價值觀出發,有兩條路我都覺得不錯。

第一條是我以前的老路,進入一間你做的事情會很雜的公司。你或許會寫一點後端,也會寫前端,甚至寫到 App 去也都有可能。會推薦的原因有三個,第一個是我親身經歷過以後覺得這樣滿也幫助的,第二個是如果你對於職涯還沒有明確的規劃,都先做做看也不錯,再看看自己喜歡哪個。第三個是假設你真的很篤定要走前端,那你未來很有可能碰不到其他領域的東西了,如果不趁著第一份工作玩玩看,之後工作上就玩不到了。

第二條則是直接往想要的方向走,例如說想做前端的話就專門去做前端,只要認真工作個一兩年,大概就能把前端的技能練到一個深度,跟第一條路相比,這一條路在前端上的專業技能會更多也更深一點,但就是缺乏了一些廣度,我也不確定之後能不能補得回來。

在團隊型態跟工作方式上,最理想的形式應該是有制度化的,例如說有個完整的開發流程,跑個 scrum 然後各種 meeting 都有開,上版也很有制度,開發上也有 code review,團隊裡面還有資深的前輩可以指導,這樣當然是最理想的形式。

我自己是一直到最近兩間公司才有比較完整的開發流程,也是這時候才知道原來完整的流程是長這樣。雖然說完整的開發流程並不代表比較快,也不代表比較好,但好處是你可以先知道全貌長什麼樣子。未來到了小公司或是新創公司,你可以決定是否導入這套流程,就有一個依據可以參考。

理想的開發環境很少,因此競爭的人也多,需要衡量自己是否願意為了這個機會付出更多時間在找工作上面。我自己的建議會是設個停損點,例如說一兩個月沒找到就先去上班了,等你磨練個一兩年之後,進這些公司的機會就變大了,就可以再去挑戰一次。

對於轉職的人來說,無論去哪間公司都會學到東西,花三個月等一個理想中的 offer,不如先花三個月去上班看看軟體工程師的工作長什麼樣子。

在談選擇的時候,害怕選錯背後的原因大部分都是因為重新選擇的成本很高,例如說魷魚遊戲的那個二選一踩玻璃好了,選錯就掉下去,就會很害怕選錯。但如果選錯只是退到上一格呢?應該就不會害怕選錯了,因為選錯的成本很小。

在工作上也是這樣的,選錯的成本可能沒有你想像中的高。我身邊就有幾個進了公司可能幾天或是幾週就發現不適合,立刻辭職然後找尋新工作的案例。很多事情真的只有進了公司才會知道,面試的時候再怎麼相談甚歡,都不如工作個一兩天來得實際,有些可能面試聽起來都不錯,進來才發現一團糟,或也有可能相反,面試不怎麼樣,進去發現是天堂。

在現今軟體相關的工作需求還是滿多的,因此選錯頂多就是辭職開始找下一份工作,對自己跟對公司來說即時止損都是不錯的選擇,既然不適合就沒必要勉強繼續待著。

好了,這篇寫到這邊我也不知道自己想表達什麼。我一開始寫這篇本來標題取叫:「工程師的第一份工作該怎麼選?窩不知道」,後來想想應該還是有些建議跟面向可以參考,就改成現在的標題了,但寫一寫還是發現這個主題我寫得滿差的。

追究於其根本原因,我想還是因為我自身的價值觀吧,我相信不管去哪個環境都可以學到東西,而「繞遠路」也不一定是真的繞,看似繞路的那些足跡,或許在未來會成為不可或缺的助力。只要能夠幫助自己成長,我都認為是好的選擇。

最後還是給出幾個在選擇工作時可以先問自己的問題做個總結:

  1. 你理想中的工作型態是什麼?
  2. 你討厭的工作型態是什麼?(通常要工作過才講得出來就是了)
  3. 你在這一份工作想獲得什麼?假設一年後離職了,你的履歷上想要有什麼成就?
  4. 你未來三年的職涯規劃是什麼?你的履歷想長什麼樣子?
  5. 你目前猶豫的點是什麼?是害怕選錯以後成本很高嗎?