為什麼這篇轉職前端ptt鄉民發文收入到精華區:因為在轉職前端ptt這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者gobears5566 (golden bear 5566)看板Salary標題[心得] 文組轉...
轉職前端ptt 在 九里 | Jolie Instagram 的精選貼文
2021-07-11 08:44:24
連續休假出勤打工的兩隻🐻🐱 Still have to work on the long weekend. 妹仔最近在轉職前端工程師之路上,只好派出兩隻到她的虛擬酒吧聯名(只是個網頁,交作業用的最弱聯名)😂 #jolieeleanore #兩隻事件簿 #dailyofthesetwo #cat ...
(本篇為代 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.cc), 來自: 116.86.64.199 (新加坡)
※ 文章網址: https://www.ptt.cc/bbs/Salary/M.1672557795.A.EB8.html