網誌好讀版:https://studio1729.tech/2020/05/turning-swe/
大家好,我是 C。大學讀管理,在畢業後進到軟硬整合廠做供應鏈管理相關的工作。雖然
如願進到科技業,但開始工作以來一直覺得不開心,臺灣硬體製造以加班聞名,而我就職
的公司也不例外,從入職開始便常常加班到晚上八九點,回到家多半處於筋疲力盡的狀態
,只想躺在床上當爛泥。除此之外,因為生產時程需要跟著工廠走,又常常會遇到物料採
購的問題,多數的時候是處在壓力大的狀態。
這樣的生活久了,覺得人生好像除了工作還是只有工作;最終決定不能再讓自己這樣,於
是我開始利用週末的時間參與一些科技的社群,也在參加活動時因緣際會接觸到史丹佛大
學教授寫的《做自己生命設計師 Designing Your Life》這本書,也參加了相關的課程。
在書中有一項叫「奧德賽計畫」的工具,是要大家練習寫下三種截然不同的未來五年。三
個計畫沒有誰好誰壞沒有誰好誰壞,每個都是好計劃。其中,第一種人生規劃是目前做的
事 (現在的人生的延伸);第二種人生則是萬一事情生變,你會做的事;第三種人生是假
定錢不是問題,面子不是問題,你會做的事。
在寫下截然不同人生後,我問了問自己「假如真的那麼不喜歡現在的生活,那為何不試試
看過個從沒有想過有可能的人生? 大不了最差就是回到現在這樣」。因為這樣的想法,加
上朋友的鼓勵,我決定做一個以前完全不曾想過的職涯決定 — 轉職軟體工程師。
#為什麼是轉職工程師?
因為大學讀管理學院,是在傳統臺灣教育被歸類成「文組」的科系,所以即使在高中時數
學是拿手的科目,我也從沒認真覺得自己可以成為工程師。但在參加一些科技的社群後,
我很清楚地意識到我對工程思維很感興趣,也喜歡工程師務實解決問題的工作型態。
特別是做營運與管理類的工作,很多時候不是想法好就好,權力政治才是決定誰說話大聲
的關鍵。工作時常常因為覺得主管交派的方法不是最佳化,但反應了也沒辦法的無力感。
相比之下,工程是黑白分明,相對來說更靠實力說話的職位,是我更嚮往的。
除此之外,因為之前在臺灣傳統軟硬廠工作的生活實在讓人受不了,想要轉換、想要出國
到有更好品質的工作環境,是一直都種在心中的想法。而工程師的國際移動能力是相對其
他職位更好的,所以各種考量下,最終決定已轉軟體工程師為目標前進。
當然決定這個目標不代表一切就會自然到位,對於傳統文組生轉職軟體工程師之路最多人
會遇到的一個大難關 — 自我懷疑,也是我最開始的心魔。好在當時看到《工程師作家的
轉行人生》,看到粉絲團版主從讀創意寫作轉行成功的例子 (她還是在要養女兒的同時轉
行,真的無比佩服,推薦想轉工程師的人,一定要追蹤!),給了我許多的信心,也讓我
相信「我能做得到」,而能堅定地跨出第一步。
#如何開始第一步?
決定轉職後,我先上《工程師作家的轉行人生》推薦的 freeCodeCamp 上學習。
freeCodeCamp 是透過一個個小關卡,帶領你一步步學習最基本的網頁開發,包含 HTML、
CSS、JavaScript,由於是完全免費的,相當推薦還不確定要不要真的轉職的人,無成本
學習。除了 freeCodeCamp,有另一個很類似的網站是 Codecademy,介面比較美,但有部
分的學習內容要付費。
在最開始的階段,我常常在吃午餐或晚餐時,會順便看一些軟體工程師相關的 Youtube
影片,例如 Clément Mihailescu、TechLead、Code Drip 的影片。這些影片協助我更了
解軟體工程師的生態、各種名詞,例如前端是做什麼、後端是做什麼。因為不是太硬的技
術內容,但對初學者又算有知識含量,配飯還算剛剛好。
#有了初步認識後進一步學習
在 freeCodeCamp 的關卡都做完後,我進一步學習的路徑有分成兩個部分,一部分是全端
網頁開發 (後來我都集中在前端),以及基礎的電腦科學與運算思維。
全端網頁開發我有買過一個月的 Treehouse ($25 美元一個月的那個,不是 $199 美元
的 TechDegree),也有買《工程師作家的轉行人生》推薦在 Udemy 上的 Andrei
Neagoie:The Complete Web Developer in 2020: Zero to Mastery。
Treehouse 的優點是在一個月內可以內容看到飽 (除了全端網頁開發,也有演算法、資訊
安全等等不同主題),但相對地假如是在職的人,可能就沒那麼划算,因為下班後能看的
時間也不多。而 Udemy 則是買了課之後就能永久看。對於想要跨入全端網頁開發的新手
,我覺得 Udemy 的課已經非常足夠了,假如是在職的人,可能一個月也看不完一堂課。
Udemy 課程的另一個好處是老師很多,同個主題妳可以有很多不同老師,加上有三十天內
不滿意退費的機制,我覺得對初學者很友善。畢竟學程式這種艱澀的東西,找到頻率對的
老師很重要。雖然我一開始是看 Andrei 老師的課,但後來發現不太對頻率,所以改買了
另一個同樣在 Udemy 的 Angela Yu : The Complete 2020 Web Development Bootcamp
課程,就發現頻率很對。雖然兩個的內容差不多,但頻率對了就學得更順手。可能上面這
兩個都跟你頻率不對,但沒關係,Udemy 很多老師可以選,選適合的才是最重要的!
除了全端開發之外,我也看了哈佛大學的 CS50 課程,來打電腦科學與運算思維的基礎。
只能說實在太愛 CS50 的教學了,不論是 David Malan 教授教得主課程,還是 Brain
Yu 講師教的 CS50 Beyond (偏前端網頁開發) 與 Web Programming (偏後端網頁開發),
都是非常精彩、深入淺出。
#辭職專心衝刺
在開始看 Udemy 與 CS50 後,由於已經很確定自己要轉職,我就辭掉工作 (不然本來的
工作實在太耗神) 全職衝刺。在全職衝刺的期間,我寫了兩個專案,一個是電商專案,一
個是 CRM 專案。因為這時候很確定要往前端發展,所以也開始學 React (前端最多人用
的框架之一)。我是透過 Udemy 上的 The Complete React Developer Course (w/
Hooks and Redux) by Andrew Mead ($300 台幣) 課程,搭配 Youtube 上的 Net Ninja
Complete React Tutorial (& Redux ) 課程學。
邊學邊試著用 React 來寫我的專案,不會的、卡住的東西就上網查 (基本上就是靠
Google 與 Stack Overflow 來找)。舉例來說,想要在電商專案中做購物車功能,我就
去 Google 上搜尋 “shopping cart react” 這類的關鍵字找教學來看。
當初之所以決定做這兩個專案放到我的作品集,是因為我先找了幾間自己很感興趣的公司
,了解他們用什麼技術與語言,了解他們的產品,然後想我的作品集有什麼樣的專案,會
讓他們覺得我是即戰力,最終才決定要做什麼。
#面試準備的自我懷疑時期
花了兩個多月邊學 React 與做專案作品後,在開始投履歷前,我花了兩週多全力準備面
試。面試分成三部分準備,專案作品、JavaScript/React 考古題,以及演算法刷題。
專案作品就是要對自己的專案瞭若指掌,用了什麼樣的技術,為什麼選擇用該技術,都要
能說得出來。JavaScript/React 考古題就是上網找「前端面試題目」、「React 面試題
」等關鍵字找題目,題目看到後來都大同小異,這些題目多半也都能在網路上找到人分享
答題。其中我非常推薦 Huli 的部落格,裡面寫的超多篇都是在回答面試必考題 (例如
淺談 JavaScript 頭號難題 this:絕對不完整,但保證好懂、我知道你懂 hoisting,可
是你了解到多深?)
而演算法刷題就是大家耳熟能詳的 LeetCode 題目。刷題前我有買一本資料結構與演算法
的書來讀,但後來發現網路上的資料也都寫得差不多,也有許多 Youtube 頻道有相關教
學 (例如這個 CS Dojo),所以後來覺得沒有特別買書的必要。實際刷題我主要是刷
Easy 與 Medium 的。每次遇到新的題目會先自己想,真的解不出來才會上網看別人怎麼
解。
上面這些或許有點輕描淡寫,但其實在轉職時,有好幾度覺得自己撐不下去、懷疑自己沒
辦法做到。不論是專案卡關,或是刷題時怎麼都不懂。事後回頭看,我覺得建立良好心態
很重要,不要期待所有觀念自己馬上就會懂,慢慢來,有些觀念看了好幾天才懂,也是常
發生的事。上面提到的 CS50 有教一個 C 語言的指標 (pointer),我是重看到第五遍才
懂,但那沒關係,最終有弄懂才是重點。
求職的最後階段是投履歷與面試。作為一個傳統定義的文組生,我的經驗是求職時沒有太
吃虧。我開始投履歷後一共投了十多家,其中九成有一面,完全沒有因為學歷是文組而拿
不到面試機會。拿到面試的也有七成有二面,沒有二面的也是因為白板題炸掉,不是因為
自己的背景。開始投履歷的第二週拿到第一個工作機會,在拿到第四個工作機會後終止了
剩下的面試。
回顧整個過程,我認為文組生轉職最大的障礙是自己的心態。能不能熬過自我懷疑,能不
能在第一次沒弄懂後繼續堅持下去學習才是重點。轉職之路不容易,確定是自己想要的方
向才是重要的。假如在過程中發現當工程師實在不是自己的路也沒關係,所學的不會白費
,就像也有同為文組的朋友,學了程式後轉產品經理,雖然沒成為工程師,但依然轉到自
己理想的職涯。
希望這個經驗分享對正在讀的妳與你有幫助,也祝福大家都能順利發展出自己理想的職
涯