半年學習成為前端工程師

2021-01-24 · 15 min read

Experience
Featured Post

同步發佈於個人 Medium 半年學習成為前端工程師

前言

原本只是想盡量客觀地描述自己的學習心得,後來轉念決定多描述自己的狀況還有主觀的想法,讓所有學習程式語言或網頁開發的人更了解無經驗學程式的心路歷程。

更重要的是,這篇文章也是寫給自己看的,透過寫文章好好回味過去半年的學習時光,也方便未來的我回憶起此時此刻的想法/感受。

再次重申,這篇主要描寫心得而不是要學什麼,如果想知道要學什麼,可以參考 Learn to become a modern frontend developer程式導師實驗計畫第四期

按慣例(?,先來首歌吧 Bon Jovi - Livin' On A Prayer

背景

關於審視自己的人生,我基本上把過去 30 年的經歷都寫在 這篇文章 了,以下算是精簡版本。

首先來介紹自己的學經歷,我的最高學歷是機械工程碩士,沒有在資訊業的正職工作經歷。

在學時沒認真學過程式語言,念大學時整體成績不錯常拿校長獎,但大一必修的計算機概論只拿 7x 分,基本上當時就是對程式語言有點排斥,之後也沒再修過 CS 相關的課程了。

研究所畢業後找不到人生方向,不斷嘗試在機械相關的領域尋找適合自己的工作,當過機構工程師、專利工程師及專案經理,但一直覺得那些工作都不適合我,幾乎都待一年左右就換工作故履歷很差,搞到身心俱疲甚至得了憂鬱症。

後來無意間認識了 User Experience (UX) 這個領域,覺得 UX Designer 應該是我會想一直從事的工作。另一方面,從很久以前就想出國唸書,所以這時候決定開始準備留學申請,同時間到大公司當設計實習生累積相關經驗。

後來雖然順利申請到學校,但因故暫停這個計畫;而在大公司擔任設計實習生,原本希望能轉正,卻在去年遇到疫情所以機會渺茫,因此另外學程式設計而展開另一條路。

報名之前

最一開始學習程式語言是透過 freeCodeCamp 接觸 JavaScript,後來看到 AppWorks School,這是滿知名的程式學習培訓班,而且這個培訓班又是免費的,所以對於有經濟壓力的人來說是非常友善的,因此就報名了 AppWorks School,只是我最後沒能錄取。

後來決定在 Udemy 上買課程自學,查資料的過程無意間看到 Lidemy 程式導師計畫第四期(以下簡稱 MTR04),當時這個計畫讓我注意到的要點有幾個:

師資

這個計畫的導師是 Huli,是現職的資深工程師,時常在網路上分享文章。現在已經忘記一開始怎麼知道 Huli 了,但我記得挑選 Udemy 課程時也有查到他對於自學程式的建議,所以也滿有可能是先看他的文才知道他。

完全遠端上課

MTR04 所有內容都是線上進行,包含教學內容、學習社群以及作業批改等。

這個特點當然有好有壞,就我自己來看好壞的話,好的部分是要維持現有工作一邊學習是完全可行的;壞則是線上學習仍讓人懷疑成效,畢竟過去受的教育都是實體為主,所以多少對於這種學習方式不放心。話雖如此,前幾期都有學生成功轉職,我想結果更多取決於個人。

課程內容

從課程大綱可以知道課程主要分成四大塊,分別是程式基礎、網站開發、探究原理及專案開發,這幾個部分包含基礎的計算機科學、網際網路知識到網路前後端基礎內容。

其實當時不知"完整"的基礎訓練是怎樣,“是否完整”都是了解這個領域之後才能判斷,總之當時就是這樣半信半疑地報名了。

收費方式

收費分「A 求職方案」和「B 買斷方案」兩種,買斷方案就是一般的收費,而求職方案是學習過程不收費,在結業後兩個月內找到工作才需要付 1.5 倍月薪作為學費,沒在時間內找到工作的話就不用繳費:

如果你有求職意願,也跟完了課程沒有被淘汰,結果最後還找不到工作,那我們就會認為是計劃的疏失,是這個計畫不夠好,是我們必須要改進計畫的內容,因此不收任何學費。

其實一開始還是有點猶豫的,因為我相信自己即使不參加這種課程,也可以透過已經購買的那些 Udemy 課程來累積實力並成功轉職。

思考了一陣子後覺得中文的教學內容及專門解惑的導師,這些都可以幫助自己更快上手,再說這個計畫初期不用繳費,如果不符合預期還是可以中途退出的,所以就開始準備報名了。

準備報名

報名所需資料:

  1. 填寫 Google 表單
  2. 用 Scratch 做出小作品
  3. 解 Codewar 三題
  4. 寄報名信

其中要回答的問題包含自我介紹和報名動機,而對初學者比較有障礙的可能是 Codewar,但當時我已經透過 freeCodeCamp 做了一些 JavaScript 題目,所以這部分對我來說較容易跨過。

此外,當時讓我有點抗拒報名的是 Scratch,其實不是什麼很難的東西,畢竟它原先被開發出來的目的是給孩童年齡以上的人學習程式,所以我只是單純覺得有點麻煩。

後來加入計畫後,注意到其他同學報名時非常認真地準備 Scratch 這個作品,我的作品想比之下真的有點像是交差了事的東西,所以我想我會被錄取的原因大概是因為我的經歷特別吧。


學習途中

心態養成

第零週的課程是建立正確的心態,這部分可能是很多其他的培訓機構所忽略的,但我覺得這是滿重要的。Huli 的作法是提供數篇過去他撰寫的文章,讓學生在課程開始前面對 學習,提個兩點:

第一個是 打造「正確」學習 mindset 裡面提到的「看待成功與失敗的心態」

課程中的「轉職失敗」就只是代表「在期限內沒有找到工作」,這代表著你能力不足嗎?不一定,可能是其他人能力太好,或是你因為有些事情耽擱到了時間。如果你把計畫中的「轉職失敗」當作是「我一輩子都沒辦法變成工程師」或者是「我的人生好失敗」,那可能才是真的失敗。

這一部分和無限賽局想傳達的概念相似,人生有無數場比賽,儘管現在輸了,但我仍有下一場比賽可以拼回來,也和灌籃高手中安西教練對三井壽說的話是同樣概念:

現在放棄的話,比賽就結束了。

現在放棄的話,比賽就結束了。

好久以前的日漫名句,但到現在我還是常常被它激勵。

第二個是 用對你有效的學習方法,無論那是什麼

可以花時間找尋學習方法,找尋適合自己的學習資源,但是要注意時間。不要每次都只花時間找,卻沒花時間學,這樣只是本末倒置。還不如直接去學,然後再看看問題出在哪裡。

有一些同學會參考其他同學寫的作業,老師和助教也鼓勵這樣做,可以幫助自己學會不同的解法。但我就反骨...每次都是任性地上傳作業後休息一下,就直接跑後續進度了,所以讓我了解自己寫出來的東西是好是壞,主要是仰賴助教或老師給的建議。

總之,透過閱讀 Huli 的文章,可以讓自己的心態逐漸調整到最適合學習的方式,從這之中也可以多少了解他的人生哲學,這也是另個有趣的點。

選擇付費方案

如前面提到的,第四期收費方式有分為「A 求職方案」和「B 買斷方案」,但其實在加入計畫初期是不用馬上選擇的,大概是進行到第八週之後才需要選擇自己想要哪種方案。

我一開始是想選擇求職方案的,也就是期間不付費但要符合規定(例如定期交進度報告),但我最後選擇買斷方案也就是學費整包共 55000(可以分期付款)。當初做這個決定的原因是我覺得自己可以在時限內找到工作,且 1.5 倍月薪會超過 55000,所以以現實層面來看選擇買斷方案對我來說比較省錢,還有另個原因是我後來實在懶得交報告又不想敷衍了事,索性轉成分期付款買斷方案。

儘管選擇買斷方案比較沒有進度壓力,但我還是持續讓自己的進度和原先計畫的進程一致,甚至到後期我略過後端的內容還讓我可以更早準備求職,避開與大量同學同時求職爭取同類職位的狀況。

總之選擇方案的自由度其實很大,據我所知也有部分同學原先選擇「A 求職方案」後來又改「B 買斷方案」。

知識的深廣

剛開始想學網頁開發時,我覺得應該盡可能得學所有東西,像 MTR04 的主要內容是網頁前端比較多,但也有包含後端 PHP 和 Express 的部分,另外還有稍微提到測試。雖然課程內容很多是好事,但多少會讓學生覺得要學完所有東西,甚至要準備到精通才有資格去求職。

事實上,在有限時間內要學會甚至是精通這些知識是非常困難的,而 Huli 的這篇文章 讓我有所啟發,重點總結如下:

  1. 所有領域本來就都學不完,這很正常
  2. 挑自己有興趣的部分學,然後成為專家
  3. 不要因為自己不會的部份而失去自信,而是要為了自己會的部分產生自信

看完之後我決定調整學習的目標,在計畫後期遇到後端 Express 卡了一週之後,我就直接跳過這部分並開始學 React。

我不是在說服自己那些東西不重要,也不是在鼓勵別人學習要跳過你沒興趣的內容。在第三期的學長 @ClayGao 結業心得 中有提到,他原先以課程結束當作理由來求職,但開始求職時遇到了難關:

這個難關是什麼呢?就是其實我對於我所學習到的技術,並沒有真的掌握住。一開始有提到,學程式這件事情,是很公平的,投入多少,就得到多少,儘管最後,我完成了課程,我以為自己學完了,但直到出去面試,遇到一些基本的問題,我卻回答不出來,那種回答不出來的感覺,不是不會,而是一種我必須得面對,回答當下那種心虛的心情。

回來看自己的狀況,雖然為了更早準備求職而略過後端,但我對學習 React 放了滿多心力,在面試現在任職的公司時甚至還讓面試官給了「對 React 很熟」的評價。其實當下聽了還滿心虛的,但不管怎樣我都把上面這句話「不要因為自己不會的部份而失去自信,而是要為了自己會的部分產生自信」放在心上;而略過的那些內容,只要還是想繼續在網頁開發或軟體工程師這條路發展,總有一天是會再次面對的。

與他人的互動

前面有提到「A 求職方案」的人需要定期寫進度報告,其實並不是以前正規學校上課那種一板一眼的作業,基本上就是說說自己「今天學了什麼?碰到什麼問題?」其他就自由發揮,所以很多人把它當作臉書的動態來 po 近況。此外,學習系統內有一個作業列表會公開所有人的作業,所以同學們也會互相參考其他人寫的作業,而助教/老師批改完之後會視情況給予「值得參考」的標籤。

然而,這些似乎都與我沒太大關係,我本來就不會看別人的進度報告,後來選擇買斷方案沒有約束後就越來越少發,甚至到後期也不發進度報告了,變成上學習系統只為了發作業,而作業部分我也沒參考過其他同學寫的內容,現在回想起來我好像浪費了這個同學互動的機制(?。

其實我覺得自己算是會 social 也喜歡 social 的人,只是我偏好的方式是面對面溝通,所以 MTR04 的兩次實體聚會我都有參加,而且我在現場都很主動和別人喇賽,想起當初第一次和同學見面坐同桌卻零互動,我還雞婆拱大家自我介紹想辦法找話題,就是不太能忍受 uncomfortable silence,但也可能其他人比較享受這種 silence。

儘管如此,我感覺自己在 MTR04 裡面和其他人的互動還是很少,甚至連 Huli 我都很少找。目前只有一位同學是我會固定聯絡的,因為我主動約他每週練英文口說。主要是因為 MTR04 的內容本來就是完全線上進行,而網路上的互動不是我偏好的方式,所以在這樣的運作方式下,我自然就是個邊緣人了。

不過要澄清一下,就算是邊緣人也不影響學習,如果真的有問題我也會去問 Huli,只是真的很少找而已。甚至在求職時沒有找他討論求職相關的話題,好像又再次浪費了這樣的資源(?。


專案

在參加 MTR04 的期間做了不少作業,其實那些作業用心製作的話,就很足夠拿來放在履歷上當作品展示。

除此之外,也有一些同學在這期間自發性地做 side project,我自己也做了兩個 side project 來,分別是個人網站和線上教育平台。

個人網站

過去的文章有提到我自己喜歡做個人網站,所以在學了 React 之後就想做一個新的個站出來,結果做出這個 個人網站,其中包含 blog 用來發表一些 543。剛做完的時候真的是成就感滿滿,只是現在又不是很滿意了,過陣子會再重新弄一個出來。

線上教育平台

前端 repo 後端 repo

前面說到我是邊緣人,不過做這個 side project 還是有找兩位同學一起弄。

因為我略過後端 Express 的部分,所以後端由其他兩位負責,前端則按頁面由我們三人各自處理,此外因為我有一點設計的經驗,所以 user flow 和 wireframe 就由我負責。

合作開發一定會遇到一些狀況的,我在寫前端的時候一直感到困擾的是要後端提供資料,這時就需要請其他兩位去改後端 code。沒法自己改就常常要等待別人,這時候真的明顯感受到沒碰後端的不便之處,所以也決定之後要補上了。

最後,東西已經做完了但到現在還沒部署,因為後端那部分我不會處理,所以秀成果只能起一個 local server 展示。我是先找到工作才把這個 project 做完成的,現在整個人呈現消風狀態,目前根本不想花腦筋來整理這個專案,所以如果其他兩位隊友沒有動作的話,我也不知道這個 project 之後會不會部署了,哈。


求職

關於求職,之前寫了一篇完整的文,有興趣看求職心得請至 2020 末 2021 初 junior 前端工程師求職心得

不過另外想講的是我這次求職的狀況比以往都還要順利,我們有個內部社群是讓大家分享面試心得,就我所知在我寫這文的當下還有許多同學仍在求職,看到許多人面試的狀況,真心覺得辛苦。

自己評估過後,我這次求職比較順利的原因可能是 比同學早求職 以及 在面試時表現出的態度

時間點

我是 2020 年 12 月開始求職的,而多數同學是 2021 年 1 月開始。其實原本我計畫開始求職的時間是在 11 月開始,但即使延宕到 12 月還是比多數同學早,因此避開和其他同學應徵相同職位的情況。

態度

出社會好一段時間且去年又憂鬱症,面對過不少風風雨雨的事情,所以這次求職讓我覺得只是一般的小 boss,覺得最差也不過是現在找不到,過農曆年後應該就釋出一堆職缺,到時再來挑職缺也不嫌晚。

秉持著這樣的態度去面試,可能給人的感覺就是從容吧,至少面試過程我是感覺沒什麼壓力,或許就是這樣的心態讓我每次的表現都沒失常,儘管遇到不知道怎麼解的題目也能笑著厚臉皮請對方提示,最後也幸運地拿到了待遇不錯而且又自由的工作。


結語

覺得自己的個性很有衝突感,我悲觀但積極面對,在這半年間也有過非常沮喪的時候,但學習和求職這兩塊都算很幸運,沒有遇到什麼非常挫折的情況。現在完成了短期目標,心裏對於這個結果是非常滿足的。

這些日子我最感謝的是我太太,放在文章開頭的歌 Livin’ On A Prayer 描述的情節很像我夫妻倆

We’ve gotta hold on to what we’ve got
It doesn’t make a difference if we make it or not
We’ve got each other and that’s a lot
For love we’ll give it a shot.

這是一首勵志歌,我已經聽了無數次了,但每次聽到這首歌還是覺得很爽,對我來說是百聽不厭。

Woah, we're halfway there
Woah-oh, livin' on a prayer
Take my hand and we'll make it, I swear

還在為某件事努力的人常常會懷疑自己是否能辦到,但就像歌詞說的我們在半路上,請繼續相信自己辦得到。不過想放棄也沒關係,逃避雖可恥但有用。想做就做,不想繼續那就找別的東西,總有其他事情是你想完成的。


那下一步呢?其實已經盤算好了下個目標,但這邊就先不透露了。

可確定的是,目前還是會在下班後多學點技術,畢竟加入這個產業就是要不斷學習。

首先想補的內容是 MTR04 有的後端 Express,不知道之後在交作業到學習系統還會不會被批改(?);再來是學 Python,其實剛開始想學程式語言時有稍微學一點 Python,後來決定走網頁前端就放掉了,現在想學是因為公司後端是用 Python,而且 Python 的資源非常多、應用非常廣,所以我想花時間在它身上應該 z>b。

最後,不論你從哪邊知道這一篇文章,我都謝謝你的閱讀。

開站首波2020末2021初 junior 前端工程師求職心得