PTT評價

[心得] 文組轉職前端工程師三年心得

看板Salary標題[心得] 文組轉職前端工程師三年心得作者
gobears5566
(golden bear 5566)
時間推噓65 推:65 噓:0 →:21

(本篇為代 po)

網誌好讀版:
https://bit.ly/3vt7rEX

---------------------------- (以下正文) ----------------------------

2023 新年快樂!2022 年真的是一轉眼就過了,但仔細回想起來,其實過去一年來有些時候覺得日子特別漫長難熬,大概因為 2022 年對全球軟體工程師而言,是個非常動盪的一年。 2021 軟體業景氣好公司大舉招募,到了 2022 總體經濟下滑又大舉裁員,讓大家像是坐雲霄飛車一般。特別是到了 2022 年末,各家大廠紛紛裁員,每週都有讓人窒息的壞消息。

在踏入新的一年的同時,意識到自己也轉軟體工程師滿第三年了。在 2020 年一月決定轉職時,對未來充滿著盼望,卻也有滿滿的不確定。現在回頭看,真的覺得那時的自己很大膽,同時感激過去幾年來的幸運,讓三年後的現在,有個充滿挑戰的職涯。

趁著轉行滿三週年之際,決定來寫一篇回顧文,紀錄一下轉行前端的心路歷程。因為過去寫的幾篇部落格文,時不時會收到讀者詢問轉軟體工程師的事。但其實很多問題我難以回答,畢竟每個人的背景、個性、偏好都不同,我有的只有自己的經驗。

因此對於這篇回顧文章,我沒有特別的預設,純粹是分享我自己的經驗,所以在讀的時候,可以當成一個參考點就好。可能讀完你會打消想轉職的念頭 (因為我會分享我轉職的歷程多崎嶇),但也可能會更有動力轉職 (畢竟看到這麼踉蹌的人都能轉職,甚至拿到
FAANG 的 offer,自己沒道理不能)。

在看完上面這段預防針後,假如你還有興趣讀這段轉職的故事,那就讓我們一起開始吧。

----------
## 2020:在最糟的大環境下轉職

我是在大學畢業後工作了約三年後才決定轉職。在決定轉職前也看了非常多網路上的文章,特別是看到《半路出家軟體工程師在矽谷》的部落格。那時看到該為部落格主,
透過 coding bootcamp,非本科轉職進到矽谷一線 FAANG 軟體大廠 。

那時看完後不知哪來的自信,覺得自己也可以做到,於是也報名了 bootcamp 決定轉職。但現實完全不如我預料,我在 2020 年 1 月開始 coding bootcamp 的衝刺,到了 2020年 3 月底投入軟體業求職市場。假如你對於 2020 年初的世界還有一點印象的話,大概知道那時是全球景氣最差的一個時間點。

沒錯,正當我要開始我的軟體業求職時,COVID-19 席捲全球。在那個當下,整個世界都充滿著不確定性,因此企業為了確保有足夠的資本度過不知會延燒多久的疫情,開始想辦法降低支出。所以新聞上陸續看到公司開始凍結招募,接著開始裁員。

我不記得當時自己到底投了多少履歷,但幾乎都是石沈大海,拿到的面試機會了了無幾。大概因為在網路上看過不少轉職案例,在轉職前我天真地以為,只要學會寫程式,就等同於能順利轉職。但在真正開始求職後,深刻感受到不是那麼回事。

仔細想想,網路上的案例分享,多半是幸存者偏差;實際上一定存在很大一部分沒有成功轉職的案例,只是多半沒成功的都不太會寫成分享。看到別人成功就以為只要做了一定能成功,那將忽略那些沒成功但沒有被分享出來的例子。這也是為什麼我在寫自己的經歷時,會很強調我自己很幸運,因為我體驗過那種明明很努力,但未來卻仍舊沒著落的片刻。

當時我是辭職全心找工作。現在回頭看,除非本來已經存不少錢,不然不太建議這樣。當沒有收入,未來又還沒著落時,很容易陷入胡思亂想的恐慌中。起碼我是這樣,所以過得特別煎熬,每天都活在自我懷疑中,每天都在想要不要乾脆放棄。

不過很幸運地,我最終還是找到了一份軟體業的工作。上面提到,我是工作三年後轉職,所以事實上我找到的那份工作,是會讓我降薪轉職的。所以即使有了 offer,我仍然有一點猶豫。不過那時我有參加 bootcamp 籌辦的求職小組,在小組線上聚會時提了我的狀況,那時 bootcamp 的校長說,在大環境動盪、未來局勢不明確的狀況下,有機會就趕快把握。在聽了這個建議後,我就接下了我的第一份軟體業工作。

----------
## 學習沒有速成

雖說我算是成功透過三個月的 bootbamp 轉職到軟體業,但在實際成為前端工程師後,我深刻體悟到「學習沒有速成」這個道理。雖然成功轉職,但在實際上工後,每天都過得戰戰兢兢。特別是最開始幾個月,時常會懷疑人生,想說自己到底為什麼沒事找苦吃。

我還記得自己寫的第一個小功能時,因為不是太複雜的東西,經過兩天多的努力總算寫出來,自己測試後都有如預期運作沒有 bugs。那時還為自己能寫出實際要被使用者用的功能而暗自竊喜,殊不知那個喜悅只延續了不到一個早上,因為那個沒有多少行的 PR
(pull request) 竟然收到將近二十處的評論。

其中不乏「這邊為什麼需要這個?」、「為什麼這裡這樣寫?」、「這邊這樣會不會造成
XXX 問題?」、「這寫法之後要怎麼拓展?」。在收到這些反饋後我重新思考,發現的確我提交的第一個版本,充滿了冗餘的程式,或是可以被精簡的邏輯,甚至有著我自己沒有意識到,但卻會影響到其他程式的地方。

公司裡嚴謹的資深前輩在 PR 上的提問完全是當頭棒喝,我深刻體會到,能寫出某個功能,跟能寫好某個功能,完全是兩件事。現在回頭看,我很感謝第一間公司遇到的前輩,對於我程式寫不好的地方,他不會直接說這樣寫很糟糕,而是透過提問的方式,循循善誘協助我修改程式碼。也因為遇到足夠耐心的前輩,我才能堅持下去,沒有半途放棄。

然而,因為體認到自己離「寫好程式」還有很長一段距離,我開始努力惡補自己的不足。針對每次 code review 收到的反饋,我都記在自己的筆記當中。同時花了很多時間讀軟體工程的書、文章,也看了非常多國外的講座會議 (當時的自我提升心得可以看這篇部
落格文 http://bit.ly/3WRDnhW)

就這樣慢慢磨了一年半,到了後期每次的 code review 不再那麼慘烈。與此同時,市場從景氣低迷重新復甦,特別是在軟體行業,因為 2021 年的世界仍是以居家為主,所以軟體需求變得特別大,軟體工程師全世界都很缺,這促成了我第一次的前端工作海外求職。

----------
## 2021:認清自己的不足

我是在 2021 年的中下旬開始找海外工作,當時的求職心得可以在這邊看到
http://bit.ly/3vObfBb

2021 年的景氣之好,真的是現在難以想像的。幾乎各間大廠、新創公司都在大舉招募,不論海內外都是。當時我打開 LinkedIn,每週會有十來個獵頭分享職缺資訊。因為當時的市場景氣好,全球各地都在缺軟體工程師,所以 2021 年中時,僅有一年半前端工作經驗,同時又是文組轉職的我,才有機會找到轉行後的第一份海外工作。

那時的市場有多缺人呢? 我是 2021 年十月加入前公司,因為那是一間德國的新創公司,只有在德國有辦公室,原本我是人要搬去德國。他們有請一個專門協助辦理跨國搬移
(relocation) 的機構,協助我辦理歐盟藍卡等事項。然而辦到一半時,整個歐洲的疫情重新大爆發,那時因為我家人不太放心去疫情重災區,所以我本來詢問公司能不能晚點再就職。但因為他們有拿到新一輪融資,大舉擴張下太缺人了,就直接說可以讓我遠端做,然後會改簽一份讓我以外包的身份跟他們合作的約,讓他們能夠跨國付我薪水,同時該享有的公司福利都會跟在德國的正職員工一樣。

就這樣我就以遠端的方式,開始了我的第二份前端開發工作,以及第一份海外工作 (雖然人仍在台灣就是了)。以文組轉職一年半的身份找到海外工作,而且是一份能夠遠端、自由度極高,且底薪部分就超過年薪 170 萬台幣的工作,看起來是件讓人開心的事,但對我來說其實並不是。

假如你有點進上面那篇求職心得,你大概會讀到,我在 2021 年的海外面試,其實有拿到像是 Amazon 這類 FAANG 等級的大廠面試,但我最後卻去了間德國的新創公司。這不是因為我比較喜歡新創公司,而是因為我大廠的面試被慘電,是那種被電到我在面試時懷疑自己是不是不會寫程式的程度。

在各家大廠中,最讓我崩潰的一場面試,是一題 LRU Cache 的白板題,並且限定要在
O(1) 時間複雜度來處理 get 與 put。現在的我看這題目,覺得並不是太困難,但在轉職一年半時的我,由於資料結構的基礎不夠熟,在面試時雖然能想到可以用 hash table 搭配 doubly linked list,但要實際實作時卻寫不出來,我邊寫邊卡的同時,面試官問了一句「你是不是不熟 JavaScript 呀?」,那個不經意的問題,完全成了我極大的創傷。

我那時都已經成功轉職,也全職做前端開發了一年半,慢慢開始對寫程式有點自信,結果在面試的時候被說「你是不是不熟」,這幾乎摧毀了我過去一年半建立起的。那場面試不僅 LRU Cache 寫不出來,後面被問到 Redux 的實作,一路被追問到底核心,以及被問到如果要我來改寫 Redux 來提升其效能,我會如何改寫。我也是完全被問倒。不用面試官多說,我在面試完後的唯一心得是「我的技術深度真是有夠淺」。

現在回頭用比較客觀的角度看當時,可以看到在景氣好的時候,其實就算是文組轉職,國際一線大廠如 Amazon 也會發面試給你,所以可以不用妄自菲薄,不要因為自己是轉職的人就自我限縮。上面有提到的半路出家軟體工程師在矽谷,他也是轉職到 FAANG 當中的大廠。但同時也可以看到,假如你的底不夠扎實,就算拿到面試機會也沒有用,因為最終還是會被刷掉,而且很可能像我一樣,面試時被狠狠打臉。

----------
## 2022: 潛心練功

開始遠端做德國的工作後,我先讓自己好好放鬆了一陣子。在歐洲公司工作的好處之一,就是工作與生活平衡非常好。德國雖然年假遇到週末不會補,但因為公司特休假給了 28天,我一年總共有 36 天的假。此外,德國對加班有很嚴格的規定,勞動法規讓雇主要求員工加班的代價會很大,所以基本上不太會有加班的狀況。

然而,在工作生活平衡好的反面,就是職涯的前進速度會相對緩慢。在遠端高自由度的反面,是時常會覺得自己工作的很抽離,沒有那種「我是跟團隊一起在打造一個很棒的產品」的感覺,而是比較多「我就只是在開發一個功能」之感。雖然產品經理偶爾會分享使用者實際給的正面反饋,但多半是貼文字,所以並沒有那種「我正在做一件對使用者很重要的事」的感覺。

所以在歐洲愜意的工作步調下放鬆了半年後,我還是決定要再次挑戰大廠。也因為有半年的緩衝,我得以慢慢從先前大廠面試的創傷中恢復。然而我也深知,假如我不好好提升,不管我再面幾次,都一樣會被電得很慘。所以我花了很多時間,把資料結構與演算法好好學扎實,經典的 LeetCode 問題一題都不放過;同時加強前端的知識深度,去瞭解一些平常有在用的開源套件,背後是如何實踐的。

幸運的是,因為在工作生活平衡很好的歐洲公司,所以我下班跟週末有很大量的時間可以潛心練功。這讓我在 2022 年再度挑戰大廠面試時,能夠有好的結果,包含拿到人生第一個 FAANG 的 offer、第一個換算成台幣超過 400 萬的年薪。

對我來說,潛心提升自我這段時期最大的收穫,是我更加理解寫程式是怎麼回事。在深度鑽研的過程中,因著理解背後原理而獲得喜悅。拿到大廠 offer 與翻倍的薪水固然讓人興奮,但讓我更有感的是在大廠面試中,我可以跟面試官深聊 React Query 如何實作,甚至要我當場寫一個 cache 機制我也寫得出來。

對比起 2021 年寫 LRU Cache 白板題被問是不是不熟程式語言,在 2022 年跟 Amazon
面試的某一輪,我在用 BFS 解完某個題目後,面試官進一步追問,被追問時,我能辨識出那個追問題要用 topological sort 來解。那時解完這題,面試官有當場說覺得解得很不錯;對於文組轉職工程師的我來說,這微不足道的稱讚,卻帶給我比提高薪水還要多好幾倍的成就感。

(備註:關於 2022 年的面試心得,可以參考這篇 https://bit.ly/3Vu657L )

----------
## 2023: 重新理解軟體工程

2022 年末我來到了新加坡,開始轉職後首次的海外大廠工作,也是轉職後第一次搬到海外來生活。在進到大廠後,我對於軟體工程這件事有了重新的理解。然而重新理解的過程伴隨著不少陣痛。

去年我有讀到 vgod 大大寫過《軟體工程師的修煉與成長 (1) — 程式設計 → 軟體工
程》一文,裡面談到了程式設計與軟體工程的不同之處。我個人非常推薦那篇文章,但我是直到自己真的進了大廠後,才對於這兩個概念的區別有更深刻的體悟。

我自己前兩份前端開發的工作,都是在整個公司的工程團隊不到三十人的小公司。然而現在待的大廠,光是我在的大組的工程師就上百人,更不用說全公司的工程師有上萬個。在這樣的大型團隊中當軟體工程師後,完全能理解為什麼 vgod 大大會說「寫程式這件事,其實只是軟體工程中的一小部分」。

我的前兩份開發工作在上班時間絕大部分都是寫程式,第一份基本上都是做資深工程師切出來的功能,而第二份工作雖然有自己負責的產品線,但因為那個產品線相對獨立,沒有跟其他產品線的業務重疊,所以開發起來也很獨立,所以多半時間也都是花在寫程式上面。

直到來大廠後,才見識到什麼是大型合作。我們組做的東西影響範圍不只有自己的組,還會跟其他的業務與產品線有關聯,所以當要加一個新功能時,會需要跟許多其他組有合作。在這個過程中溝通與校準佔了很大比例的時間。

除了要花大量時間溝通與校準外,每個功能都需要有很完善的技術設計 (technical
design)。我在進到大廠前,從沒寫過技術設計文件 (design doc),但到了大廠後,技術設計審查沒有過,是進不了開發的。而我有點像回到剛轉職時 code review 被給了很多評論與提問;進大廠後技術設計文件審查,一開始也是收到很多的評論與提問,主要是我許多的考量不夠全面跟深遠。

這個過程讓我更深刻體會到,即使功能都一樣,當一個產品有上千萬甚至上億用戶,會跟只有小量用戶是完全不同的事。從前端的角度,每當上了一個新功能,除了要考量國際
化 (翻譯)、AB Testing、以地區為單位的監控外,還要考量如果某個用戶本來在有開放某功能的地區,但可能旅遊到沒開該功能的地區,這時要如何處理等各類議題。

由於進到大廠的時間還不長,我到目前為止仍覺得自己還在適應中,每天仍感覺自己快被各方資訊淹沒、寫設計文件時還是會擔心是不是有什麼沒考慮到、輪到 oncall 的那週則時時刻刻提心吊膽。這些都是我在新的一年需要克服的修煉。

-------------
## 結語

以上總結了轉職三年以來的心路歷程。過去三年有許多難熬的片刻讓人感到漫長,但在新的一年回頭看,又覺得時間過得好快,總覺得自己才剛轉職,沒想到一轉眼已經過了三年。如同最開頭提到的,在寫這篇文章時沒有特別的預設,僅是把自己過去使盡全力往前走的經歷分享出來。

感謝閱讀至此的你,2023 新年快樂 :)

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.86.64.199 (新加坡)
PTT 網址

dancingriver01/01 15:31你好棒喔,看了很感動

loadingN01/01 16:03寫得真棒 應該轉給全世界的web仔看

cityhunter0401/01 16:10前端真的需要美感!

jodawa01/01 16:32

LEGO01/01 16:37

cmelo151501/01 17:01帥 推爆

talenthun201/01 17:18一般文組都轉去layout而已說

jjamy01/01 17:27感動落淚 謝謝你

peter1320401/01 17:35前端能領那麼高真的厲害

rio1986754401/01 17:38這文筆與學習力已經屌打很多本科的了

loveisth52001/01 17:42雖然寫的很輕描淡寫 但背後一定花費不少努力

loveisth52001/01 17:43感謝你的分享

MathFun01/01 17:46推,英文好 + 程式能力 = global pay

duck1070401/01 17:55推分享!

azzc103101/01 18:07推啊 恭喜 努力+英文+自省 是人才啊

cdpow201/01 18:55

bear330195901/01 20:47

s840201901/01 20:49

kingnamefu01/01 21:33推~

woodduck12301/01 22:40很棒的分享

GEoilo01/01 22:49有分享給推

Belieeve01/01 22:57推啊,真的是態度決定高度,從code review那邊就可以看

Belieeve01/01 22:57出用心

Belieeve01/01 22:59一個無法學習的人,被review時常會否認甚至指責reviewer

Belieeve01/01 22:59看到您的態度就知道您成功絕非幸運兩個字可以帶過

DKnex01/01 23:47前同事也在bootcamp畢業的 但它是澳洲marketing畢業轉職 反

DKnex01/01 23:47而也讓我這個文組試試寫Python才知道你這經歷根本萬中無一.

DKnex01/01 23:47...

DKnex01/01 23:47然後他繼續跳其他公司往工程師 我還是繼續做數位廣告

CatWong01/02 00:31

catherine21301/02 00:53原PO好棒,感謝分享

Lukas61801/02 00:55好猛 謝謝分享

sugar32701/02 01:29你真的很棒

jay78030501/02 04:14

lairx01/02 07:14之前轉職看過你的文,能理解你下的功有多重,現在自己也工

lairx01/02 07:14作了一段時間,再次看到你發文真的覺得自己該更努力一點QQ

lairx01/02 07:14 感謝分享

frogdoes01/02 08:19台大經濟,優秀

opop113301/02 08:30沒空猛

opop113301/02 08:30

lin565601/02 09:21英文能力真的很重要

ts01210801/02 09:26太猛 跪了嗚嗚

gipo77601/02 10:00

keithjuo01/02 10:09整理本篇重點,文組轉職高薪軟工的成功因素:年輕無家累、

keithjuo01/02 10:09自主學習能力強(台大高材生)、英文程度高、到海外工作

keithjuo01/02 10:10檢視自己只有最後一點符合

jack8005701/02 11:10

Dianaa01/02 12:09

OneDrive01/02 12:26厲害

holebro01/02 13:29強 寫程式是不是本科真的不重要

ian86821901/02 13:38感謝分享推

DreamerSun01/02 13:50好猛

mch201101/02 14:13原po工作三年就決心專職,很早覺悟,年紀輕可以試錯

rizman2801/02 14:49恭喜

emilylyh01/02 15:49推推

bob8101/02 16:48推!

hieiss01/02 17:48

hank7832101/02 18:32

badgreen01/02 18:44

beams15601/02 19:43厲害…有好底子的人還付出更多的努力難怪會成功

smalleyesk01/02 19:53感謝分享,太厲害的學習及轉職歷程。

ts0032868501/02 20:40屌建議轉soft_job

baychi99901/02 20:52寫的好棒 看完我都想轉職了QQ

lingerptt01/02 20:59正點啊,謝謝鼓舞與正向感染力

ysb72701/02 21:02正能量太酷了

kwinner01/02 21:21

myislet01/02 21:29果然令人羨慕的人背後都是無數的努力跟累積!

kokosorazure01/02 23:19

fx60001/02 23:48推謝謝分享

zebra7997901/03 04:06好強,以你的資質就算理組的pr99了吧

as45785854401/03 08:54文筆好順,您絕非幸運而已,更多的是努力

yz12253401/03 08:59

as20909901/03 11:36推分享很棒

leolarrel01/03 12:44運氣真的很好

Hancitk01/03 13:37

x221l22101/03 15:15推 想知道軟體業內都是做一年就跳槽嗎XD 感覺流動好快

x221l22101/03 15:16圈子內每個人無時無刻都在瘋狂刷題

leolarrel01/03 15:42樓上,不是每個人,也不是大部分人都在狂刷.

skitty01/03 15:50看完覺得你真的好努力 希望朝你看齊!

sky8042001/03 16:26

good575501/03 16:33原PO的案例大概1萬的轉職才有1個爬上去XD

good575501/03 16:33重點是英文好 可以往國外找工作 在國內天花板就是低

newhandfun01/03 19:18同意kei

youwoo01/03 22:33推 謝謝分享

DreamRush15201/04 17:34超屌

blue115201/04 19:23很棒的分享~~ 厲害推