Coder Social home page Coder Social logo

mentor-program-4th's Introduction

程式導師實驗計畫第四期

這是什麼

程式導師實驗計畫第四期是一個為期六個月的計畫,要求學生付出一定的時間(每週至少付出三十小時),希望能在結業時培養出合格的(意思就是找得到工作)的工程師,並且在就職後依舊能持續成長,成為好的工程師。

課程目標

核心能力

  1. 具有找資料的能力,能夠知道如何找到相關資訊
  2. 具有分析問題的能力,能夠快速定位問題
  3. 知道如何解決問題,包括但不限於拆解問題、簡化問題、轉化問題
  4. 解決問題後能夠重新歸納並整理

工具能力

  1. 後端:知道後端原理,知道什麼是資料庫、Server,可以寫出簡單的網站並且自己部署
  2. 前端:知道前端原理,HTML、CSS、JavaScript,知道 Ajax 以及如何與後端串接
  3. 資安:基本資安概念,SQL Injection、XSS、CSRF

課程規則

1. 每日進度報告

為了更方便追蹤大家的進度,必須在禮拜一到五每一天簡短報告自己今天學了什麼和碰到什麼問題(已解決或未解決),除了作為淘汰制的參考以外,其實也是幫自己簡單複習一下所學過的東西。

進度報告你可以選擇早上 po 或是晚上 po,早上的話就是講昨天的事,晚上的話就是講今天的。

2. 每日心得(鼓勵但非強迫)

之前我有寫過一篇文章叫做《每一篇心得都有價值——為什麼初學者才更應該要寫心得筆記》,裡面跟大家稍微講了一下寫心得的好處,在這課程中我也希望能把這個習慣帶給大家。

每天寫心得真的不是件容易的事,連我自己都做不太到,因此這一項是「鼓勵非強迫」,你沒有做到也沒關係,但我希望至少能夠每個禮拜寫個兩三篇,重點其實是在連續,這樣才有完整的紀錄可以看。

心得內容其實要寫什麼都行,沒有強迫,你簡單寫三個字:「我好累」或是「收穫多」也都可以,當日記在寫就好,我之前就先示範了每日筆記,記錄一些教學上的思考。

若是你不知道心得該如何下手,這邊推薦一個不錯的模板叫做 ORID 筆記,每天根據這四項來寫:

Objective 客觀

關於今天的課程,你記得什麼?
完成了什麼?

Reflective 感受

你要如何形容今天的情緒
今天的高峰是什麼?
今天的低點是什麼?

Interpretive 解釋反思

我們今天學到了什麼?
今天一個重要的領悟是什麼?

Decisional 決定行動

我們會如何用一句話形容今天的工作?
有哪些工作需要明天繼續努力?

有了基本架構之後會容易很多,你只要根據提供的問題模板去思考就行了。

細節可參考:初探 ORID 焦點討論法如何使用ORID总结学习,加快进步?

3. 交作業前先檢查

身為工程師,在交付產品以前自己有義務先做一些基本的測試,至少不要出現一打開就掛掉或者是 UI 差超級多這種狀況。交作業也是一樣的,如果你的作業連範例附的簡單 測試都跑不過,或者是基本功能都沒完成,那我也不知道我要改什麼。

所以,在交作業前請先自己檢查一下,如果品質太差的我會直接退件。

4. 簡答題規範

注意,簡答題不像你以前學生時期做報告那樣可以直接複製貼上,這是最沒有用的答題方法。我希望的是你找資料閱讀,吸收並理解以後再用自己的文字寫出來,這樣的理解程度會高很多,而不是複製貼上就了事。若是只會複製貼上,我保證一個月後我再問你同樣的問題,你也答不出來。

如果真的寫不出來,可以試著看著相關資料自己照著重打,這樣也會加深記憶。

有任何查到的相關資料都可以一併附上,第一是給別人一個 credit,可以讓作者知道他的文章對你有幫助,第二也是給自己留一個筆記,之後忘記可以再回來這邊找。

5. 程式碼規範

專案有導入 eslint,每一次 commit 都會自動檢查 JavaScript 的程式碼,有違反規則的話需要修正以後才能 commit。從第三週開始就強迫大家養成良好的程式碼撰寫習慣。

(備註:第三週才會講到這個東西)

其他

  1. 在課程教 jQuery 以前基本上禁止使用 jQuery(除非你原生的 DOM API 真的很熟了)

課程進行方式

課程以線上影片為主,全部課程內容皆為預錄好的線上影片(無字幕)。

每一週都會有指定教材以及導讀影片,若有需要的話可以自行尋找其他資源學習。

還有一點請特別注意,沒教的內容也可能出現在作業裡,不要被當期的內容給迷惑了,以為一定要用當週教的東西來解題。

課程大綱

從 2020/06/12 至 2020/12/12 ,為期六個月的課程,一共約二十六週。每週的開始為禮拜一,結束為禮拜日。

第零週:心態培養

在學習之前若是能先把心態培養好,之後學習起來會容易得多。

底下有幾篇文章,幾乎都跟學習有關,可以參考看看:

  1. 打造「正確」學習 mindset
  2. 學程式的第零課:心態調整
  3. 用對你有效的學習方法,無論那是什麼
  4. 沒有目標也沒有關係
  5. 致跟我一樣的拖延症患者:動力是需要刻意創造的
  6. 當我們在學程式時,要學的到底是什麼?
  7. 程式相關問題一網打盡:談自學、轉職、出國、職涯、教學、補習、騙錢、產業以及努力
  8. 每一篇心得都有價值——為什麼初學者才更應該要寫心得筆記
  9. 我為什麼寫部落格,以及部落格帶給我的影響

Mindset 建立:

  1. 不要害怕問問題,每個問題都值得被提出來,你的問題可能也是其他人的問題
  2. 問問題前應該要自己查詢資料(有些很難查的直接問也可以)
  3. 你有老師讓你盡量問,反正問就對了,有錯的話我會提醒你
  4. 重點是「目的」,而不是「手段」,持續問為什麼為什麼為什麼為什麼
  5. 學程式需要換一個思維模式

第一週(06/12 ~ 06/21):暖身週

大致介紹整個計畫以及帶學生看過一次課程大綱,接著說明整體架構,介紹各種不同工程師職位所負責的工作內容並著重在網頁工程師的介紹,並說明課程進行方式。

建置基礎環境,例如說 Command Line Tool 與 Git,以及學會如何交作業。

指定教材

先看 [CMD101] Command Line 超新手入門的全部課程來熟悉 command line 的使用。熟悉以後觀看 [GIT101] Git 超新手入門 的全部課程,學習如何使用 Git。

如果 CMD101 看不太懂,也可以看 [CS101] 初心者的計概與 coding 火球術的 2-1 ~ 2-4,一樣是與 command line 相關的課程。

接著可以看 [CS101] 初心者的計概與 coding 火球術的 1-1 跟 1-2 還有單元 11,理解程式基礎概念。

最後觀看 CS101 的 4-1 與 4-2,學習網路相關基礎概念。

然後記得看交作業的示範,這週就差不多了。

HW1 作業連結

自我檢測

  • P1 你說得出程式如何執行
  • P1 你理解寫程式的本質只是一行行的指令
  • P1 你了解前端與後端的區別
  • P1 你能說出從發出一個 request 到接收 response 中間發生的事
  • P1 你了解不同載具的差異在哪(Desktop、Mobile、Web)
  • P1 你了解基本的 command line 指令
  • P1 你知道 Git 在做什麼,以及為何我們需要 Git
  • P1 你知道 add、commit、push、pull 等基本 Git 指令
  • P1 你知道怎麼使用 branch 並送出 Pull Request
  • P2 你熟悉 Git Workflow(其實就是交作業的流程)

第二週(06/22 ~ 06/28):程式基礎(上)

前四週其實是這個計畫最重要的一個月,希望能在這四週讓學生把基礎打得相對紮實,這樣比較好應付之後的課程。

這一週的學習目標是程式基礎,包括但不限於:變數、陣列、迴圈、判斷式以及函式(以 ES5 為例)。

必須要強迫自己轉換成寫程式的思考模式,否則這一週對你來說會是惡夢。對於從來沒有接觸過類似思考模式的人可能會需要點時間,但只要慢慢練習,就會越來越進入狀況。

還有一點請大家注意,程式是按照你寫的跑,不是按照你想的跑。當程式執行結果超出預期時,console.log是你的好朋友,可以把東西印出來看看是不是跟你想的一樣。

指定教材

[JS101] 用 JavaScript 一步步打造程式基礎這堂課是讓大家學習 JS 基礎語法以及練習基本題目用的,可以看到「綜合練習 Lv1」就好,裡面的題目記得寫一下。

[ALG101] 先別急著寫 leetcode 這堂課則是為了繼續加強程式基礎以及練習程式思維,把上面 JS101 指定章節看完以後可以看 ALG101,看到 Unit4 就行了。

然後可以看這篇:從博物館寄物櫃理解變數儲存模型

若是想要繼續研究演算法相關的議題,可以看 [CS101] 初心者的計概與 coding 火球術的 7-1 ~ 7-4,但如果前面的影片看完時間就差不多了,可以留到以後再看。

HW2 作業連結

自我檢測:

  • P1 你能靈活運用變數、迴圈、判斷式等等基本概念來解題
  • P1 你能一行行的說出現在程式在做什麼
  • P1 你知道「回傳」跟「輸出」的差異
  • P1 你可以把用文字寫好的演算法轉成程式碼

第三週(06/29 ~ 07/05):程式基礎(下)

在程式基礎的部分一週是絕對不夠的,因此本週會繼續加強程式基礎。在這一週裡面我們會延伸上一週的內容,並且多講一些有關於 ES6 的語法。

本週的作業有自動批改系統,請傳到 Lidemy OJ 上,並且確認每一題都有答對之後再交作業,否則我會直接退件,

最後,在這週也會講到 eslint,我已經幫大家設置好了 eslint,這是一個能夠幫你自動做語法檢查的工具,在每次 commit 之前都會自動檢查程式碼的規範,不符合規範的話不會讓你 commit。

指定教材

這週可以先繼續看 [ALG101] 先別急著寫 leetcode,一直看到「單元六:內建函式做做看」,並且跟著裡面一起練習。

接著來看 [JS102] 升級你的 JavaScript 技能:ES6 + npm + Jest 這堂課,主要目的是熟悉 npm 以及 ES6 的語法,因為以後會很常用到這兩個東西。至於 Jest 的部分跟測試有關,這方面之後會再提到,現在只要稍微知道就好,還不需要深入研究。

最後呢,若是還有時間,可以繼續把 ALG101 以及 [JS101] 用 JavaScript 一步步打造程式基礎也看完,但之前剩下的綜合練習 Lv2 以及 Lv3 其實大部分題目都與 ALG101 雷同,寫過的就可以直接跳過了,但還是建議可以看一下參考解答影片。

HW3 作業連結

自我檢測

  • P1 你理解常用內建函式如何使用
  • P1 你熟悉程式語法並知道如何解決基礎問題
  • P2 你知道為什麼我們需要 unit test
  • P2 你知道什麼是 unit test
  • P2 你知道如何寫 unit test
  • P2 你知道如何測試一個 function

第四週(07/06 ~ 07/12):網路基礎

無論是前端還是後端,身為一個網頁工程師,必須很清楚整個網路運作的輪廓。細節可以日後再研究,但一定要能掌握大方向以及重要概念,否則未來的路絕對會走得很崎嶇。

在這週裡面我們會學到兩台電腦在網路上該怎麼溝通,從上層往下,再從底層往上,一步步建立起你對網路的世界觀。

當然,只有理解是不夠的,我們也會用 Node.js 串接基本的 API,帶你熟練與網路相關的知識。

指定教材

這週可以直接看 [NET101] 網路基礎概論(搭配 JS 實作練習)的全部課程,去熟悉網路相關的概念,並且學習如何利用 Node.js 去串接 API。

再來可以看這篇文章,重新省視一次自己對 API 的理解:從拉麵店的販賣機理解什麼是 API,然後看這篇文字版的傳紙條故事複習一下網路概念:從傳紙條輕鬆學習基本網路概念

如果對於這些概念還是不熟,可以先去寫一下作業,然後看 Lidemy 上第四週課程的:「Request 額外補充(超重要)」,應該能幫你解開一些疑惑。

額外補充一個影片,英文 ok 的話可以看:CS75 (Summer 2012) Lecture 0 HTTP Harvard Web Development David Malan,內容與 NET101 類似,只是讓大家再做個複習

HW4 作業連結

自我檢測

  • P1 你知道網路背後大概的運作模式
  • P1 你知道什麼是 Request 跟 Response
  • P1 你知道什麼是 DNS 以及運作原理
  • P1 你知道 HTTP 與 HTTPS 的差異
  • P1 你知道 localhost 跟 127.0.0.1 是什麼
  • P1 你知道 GET 與 POST 的差別
  • P1 你知道常用的 HTTP Header
  • P1 你知道什麼是 API
  • P1 你會使用 node.js 寫出串接 API 的程式
  • P1 你知道 HTTP method 有哪些
  • P1 你知道基本的 HTTP status code,像是 200、301、400、404、500

第五週(07/13 ~ 07/19):複習週

經過前面四週的各種摧殘,終於迎來了第一次的複習週!

複習週顧名思義,就讓大家複習前面這四週的進度用的,這四週我們一共學了四項主要的技能:

  1. Command line 的使用
  2. Git 的基本操作
  3. JavaScript 基本語法及程式思維
  4. 網路基本概念

如果你之前因為趕時間而亂寫作業,現在是回去重新省視一遍的好時機;或者是之前有查到什麼有趣的延伸資料但沒時間看的,這一週你就有時間看了。

在複習週是沒有任何進度的,但是會有兩個小挑戰,讓你們檢驗前面學到的技能。

HTTP Game

為了檢驗你對於 API 串接是否理解,我特地做了一個很有趣的小遊戲:Lidemy HTTP Challenge

建議使用之前教過的 node.js 搭配 request 這個 library 來解題,才能比較有效確認自己是否前面都有學進去。

我有藏了一些很無聊的梗在裡面,解題的時候可以順便找找。如果卡關的話可以看提示,解完以後可以寫個心得。如果真的卡某一關卡很久,直接搜尋「Lidemy HTTP Challenge」可以找到相關資料。

NPSC 題目練習

NPSC 中文全名為網際網路程式設計全國大賽,是台大每年都會辦給國中生跟高中生參加的比賽。

裡面很多題目都很有趣,適合拿來給程式初學者練習,之前在 ALG101 的第七單元其實就有提到過,還沒看完的可以順便看一下。因為 NPSC 的題目沒有辦法對外授權,所以我自己出了一堆類似的題目,大家可以上 LIOJ 把其他沒有寫過的題目寫一寫,訓練一下程式基礎。

HW5 作業連結

第六週(07/20 ~ 07/26):前端基礎 HTML 與 CSS

本週將會正式進入到前端課程,開始用 HTML 與 CSS 打造出基本的網頁,並且利用 media query 實現簡單的 RWD(Responsive Web Design)。

HTML 的部分會簡單介紹幾個常見的 tag,以及 head 的一些屬性跟設定,也會講到跟 SEO 有關的一些部分(title, description, JSON-LD...)。

主要會著重在 CSS,並且讓大家多多練習。

也可以先看一下這兩篇文章(很多地方你會看不懂,但沒關係)先培養一下對前端的感覺,等幾週過後當我們學得越來越多,再看一次會有完全不同的感受:零基礎的小明要如何成為前端工程師?跟著小明一起搞懂技術名詞:MVC、SPA 與 SSR

指定教材

先看 [FE101] 前端基礎:HTML 與 CSS 這堂課熟悉 HTML 與 CSS,並且練習切版。接著可以看 Chrome 網頁除錯功能大解密來熟悉 Chrome devtool 的使用方式。

如果覺得課程太理論,想要看比較偏實戰的,可以看 Lidemy 上第四期的「第六週特別補充課程:position 與 display 實戰篇 by minw 助教」相關單元,會有各種切版實戰。

若是還有時間,可以透過這兩個小遊戲來熟悉 CSS Selector 跟 Flexbox 排版的方法:

  1. CSS Diner
  2. Flexbox Froggy

如果你覺得切版講得很爛,可以參考看看這個:金魚都能懂的網頁設計入門 - 金魚都能懂了你還怕學不會嗎

HW6 作業連結

自我檢測

  • P1 你知道 HTML 是在做什麼的
  • P1 你知道如何使用有語意的(semantic)標籤
  • P1 你知道基本 SEO 的概念
  • P1 你知道 CSS 是什麼
  • P1 你知道 inline、block 跟 inline-block 的區別
  • P1 你知道什麼是 box model
  • P1 你知道 position 的所有屬性及其差別
  • P2 你知道 :hover, :before, :after
  • P2 你知道 :nth-child 的各種用法
  • P2 你熟悉 CSS selector,可以輕鬆選到想選到的元素

第七週(07/27 ~ 08/02):前端基礎 JavaScript

這一週將會進入到 JavaScript,讓網頁變得有互動性,並結合 <form> 做表單驗證,以及讓大家寫出簡單的網頁應用程式。

這會是我們第一次把 JavaScript 應用在網頁上,來學習怎麼使用 JavaScript 操控 DOM 物件,讓網頁動起來。

指定教材

這一週需要的東西幾乎都在 [FE102] 前端必備:JavaScript 這堂課裡面,看到「中場總結」就好了,後面的可以先不用看。

針對 DOM 的事件傳遞,可以參考這一篇:DOM 的事件傳遞機制:捕獲與冒泡

另外附增一個好用的網站:https://htmldom.dev/

HW7 作業連結

自我檢測

  • P1 你知道 JavaScript 跑在網頁上跟跑在 Node.js 上差在哪裡
  • P1 你知道 DOM 是什麼
  • P1 你知道如何用 JavaScript 操控 DOM 物件
  • P1 你知道如何幫一個按鈕加上 event listener
  • P1 你知道捕獲與冒泡是什麼
  • P1 你知道什麼是事件代理(delegation)
  • P2 你知道怎麼用 JavaScript 更改元素的 style
  • P2 你知道 preventDefault 與 stopPropagation 的差異

第八週(08/03 ~ 08/09):前端基礎串 API

之前在第四週時有提過 API,也有讓大家試著用 node.js 寫些小程式來串接。

而前端當然也能串接 API,理解前後端如何串接是很重要的一部分,因此這週會花滿多心力再來講 API 串接,讓大家複習一下 API 的概念,並且教大家什麼是 Ajax。

指定教材

把 [FE102] 前端必備:JavaScript 中場總結之後的課程看完。也可以看這一篇增進自己對 Ajax 的理解:輕鬆理解 Ajax 與跨來源請求

HW8 作業連結

自我檢測

  • P1 你知道什麼是 API
  • P1 你知道什麼是 Ajax
  • P1 你知道從網頁前端呼叫 API 與在自己電腦上寫程式呼叫的差異
  • P1 你知道什麼是同源政策(Same-origin policy)
  • P1 你知道如何存取跨網域的資源(CORS)
  • P1 你知道什麼是 JSON
  • P2 你知道什麼是 JSONP 及其原理

第九週(08/10 ~ 08/16):後端基礎 PHP 與 MySQL

前端基礎打得差不多以後,就要進入後端的課程,這次課程會以 PHP 為主要的程式語言。

這週的課程會講解 PHP 基本觀念、語法,並且教大家安裝設定 MySQL,寫出簡單的 CRUD 應用。

指定教材

觀看 [BE101] 用 PHP 與 MySQL 學習後端基礎並跟著動手做,看到「真正的實戰:留言板 - 修正問題篇」裡面的「PHP 內建 session 機制」就好,同時跟著裡面的教學把留言板實作出來。

(「基礎實戰:Job board 職缺報報」跟「基礎實戰:Blog 部落格」屬於比較早期拍的影片,程式碼的風格跟其他的可能會不一樣,建議你可以先跳過這兩個段落,實戰的部分直接看「真正的實戰:留言板 - 初階實作篇」,如果覺得看不太懂,再回來看這兩個早期拍的)

並且透過以下幾篇文章加深對 Cookie 與 Session 的理解(第一篇要看懂,二三篇大概看過就好,看不懂很正常,沒有關係):

  1. 白話 Session 與 Cookie:從經營雜貨店開始
  2. 淺談 Session 與 Cookie:一起來讀 RFC
  3. 深入 Session 與 Cookie:Express、PHP 與 Rails 的實作

HW9 作業連結

自我檢測

  • P1 你知道 PHP 是什麼
  • P1 你知道前端與後端的差別
  • P1 你知道什麼是資料庫
  • P1 你了解基本的 SQL 語法,包括 Select、Insert Into、Delete 與 Update
  • P1 你能夠寫出基本的 CRUD 應用
  • P1 你知道什麼是 Session
  • P1 你知道什麼是 Cookie
  • P1 你知道 Session 與 Cookie 的差別

第十週(08/17 ~ 08/23):複習週

這是第二次的複習週,在前四週我們一共學了:

  1. HTML 與 CSS
  2. DOM 以及 JavaScript 如何與網頁互動
  3. 前端利用 Ajax 與後端串接
  4. PHP 與 MySQL

這一週可以讓你有時間好好複習之前的內容,若是覺得都 ok 了,也可以試試看之前的進階挑戰題、挑戰題以及超級挑戰。

這次跟第五週一樣,怕大家太無聊,於是準備了兩個有趣的小遊戲給大家玩。

綜合能力測驗

這邊有一份參考某間公司面試考題的綜合能力測驗,還滿有趣的,主要是測前幾週的整合能力。

如果你點進去看到一片白畫面,這是正常的,並不是網頁壞掉。難道網頁看不見東西就是真的沒東西嗎?

看到 {s: "恭喜破關!flag: m3nT0rPr0GRAm666", error: false} 就代表你已經全過囉,沒錯,關卡就是這麼少。

闖關遊戲

一共十關,看你能闖到第幾關:r3:0 異世界網站挑戰(特別感謝第三期 @minw 製作遊戲)。

HW10 作業連結

第十一週(08/24 ~ 08/30):資訊安全

這一週我們要強調一個很重要的觀念:資訊安全。

無論你是前端還是後端,都必須時時刻刻在心裡惦記著資訊安全的概念,總結為一句話就是:「不要相信任何來自 client 端的資料」,只要能做到這點,其實就可以阻止掉很多的惡意攻擊。

因此這一週會繼續以留言板當作主軸,介紹非常非常重要的資訊安全相關概念。一段寫不好的程式碼,有可能就跟大門破了一個洞一樣,很輕易地就可以讓攻擊者入侵,不費吹灰之力。資訊安全真的要好好學,至少要知道原理以及防禦方法。

指定教材

繼續看 [BE101] 用 PHP 與 MySQL 學習後端基礎的其他部分,看到「真正的實戰:留言板 - 再次修正問題篇」結束就好,有時間的話也可以把整堂課都看完。

也可以看 [CS101] 初心者的計概與 coding 火球術:4-3、5-4 複習一下資訊安全相關的觀念。

想知道更多資安相關的概念,可以參考:程式導師實驗計畫第二期:Week6-2:資訊安全 (有時間再看)

有一個與資安相關的東西叫做 CSRF,在課程中沒有講,是考驗你自學能力的時候,推薦閱讀這篇:讓我們來談談 CSRF

HW11 作業連結

自我檢測

  • P1 你知道什麼是雜湊(Hash function)
  • P1 你知道什麼是加密(Encryption)
  • P1 你知道雜湊與加密的差別
  • P1 你知道什麼是 SQL Injection 以及如何防範
  • P1 你知道什麼是 XSS 以及如何防範
  • P1 你知道為什麼儘管前端做了驗證,後端還是要再做一次驗證
  • P2 你知道什麼是 CSRF 以及如何防範

第十二週(08/31 ~ 09/06):前後端整合

前幾週我們學會怎麼用後端 PHP 開發出一個網站,而在更早的第八週,我們學會了用 JavaScript 來串接 API,前端負責顯示資料,後端只負責提供資料。

這一週要整合之前學到的東西,也就是說要自己開發出 API,然後讓自己寫的前端可以串接!因此,這週的內容可能會有點複雜,但我會先示範給你看,讓你理解到底這週的模式跟以往有何不同。

這是非常重要的一週,但是只要能確實理解差異在哪裡,你就能把前後端的關係跟概念弄得很清楚。

除此之外,也會教兩個新的前端工具:jQuery 與 Bootstrap,前者可以讓我們快速又方便地去操作 DOM,後者可以讓我們快速打造出乾淨漂亮的頁面。

指定教材

請先參考 [BE101] 裡面「真正的實戰:留言板 - API 篇」的內容,先大概知道一下怎麼用 PHP 做出 API。

再來可以看 [FE201] 前端中階:那些前端會用到的工具們,學習 jQuery 與 Bootstrap 的使用(其他的工具先不用看)。

最後再看這一週的補充教學影片(在 MTR04 裡面),跟著完成作業一的基本功能,並且按照作業一的指示自己加強功能。

HW12 作業連結

自我檢測

  • P1 你知道什麼是 SPA
  • P1 你知道怎麼樣用 PHP 自己寫出 API
  • P1 你知道如何在前端與自己開的 API 串接
  • P1 你知道在 server 與在 client render 的差別
  • P1 你知道 jQuery 是做什麼的
  • P1 你知道 jQuery 與 vanilla js 的差別
  • P1 你知道什麼是 Bootstrap
  • P2 你知道 Bootstrap 原理及如何應用

第十三週(09/07 ~ 09/13):現代前端工具

這週基本上是延續上週的課程,介紹簡單好用的現代前端工具,包括:

  1. CSS 預處理器
  2. Babel
  3. Gulp
  4. Webpack

主要是想讓大家稍微知道這些工具的使用而已,在之後的課程裡面不一定會實際用到。

除了這個以外,也會幫大家額外補充一些重要的概念,像是:

  1. 什麼是 Promise?
  2. 什麼是 Fetch?

在 CSS 的部分呢,也會補充兩個小主題(影片製作中):

  1. CSS Selector 權重的計算方式
  2. CSS Sprites 與 Data URI

總而言之呢,這週的東西可能會比較雜一點,但主要可以分成兩個部分:

  1. 前端工具
  2. JS 與 CSS 補充概念

指定教材

可以看 [FE201] 前端中階:那些前端會用到的工具們來學習這週的工具,這週會把上週沒學到的 CSS 預處理器、Babel、gulp 跟 webpack 都學完。

再次強調,對於這些工具,只要稍微知道怎麼使用即可,想深入研究的話再深入研究就好,我只想讓大家知道這些工具出現的意義還有要解決的問題而已。

關於 webpack,看完課程或是看課程之前都可以參考這篇文章:webpack 新手教學之淺談模組化與 snowpack

課程中提到 loader 時有提到 Regular Expression,可以參考:簡易 Regular Expression 入門指南

其他的補充如下:

  1. Fetch 與 Promise 補充系列(一):初探 Fetch
  2. Fetch 與 Promise 補充系列(二):fetch 的 POST 與錯誤處理
  3. Fetch 與 Promise 補充系列(三):fetch 的使用注意事項
  4. Fetch 與 Promise 補充系列(四):淺談 Promise
  5. Fetch 與 Promise 補充系列(五):async 與 await

HW13 作業連結

自我檢測

  • P1 你知道 webpack 的目的以及原理
  • P1 你熟悉如何使用 webpack 進行模組化開發
  • P1 你知道如何使用 Promise
  • P2 你知道如何使用 fetch
  • P2 你知道 gulp 的目的以及原理
  • P2 你知道 CSS Sprites 與 Data URI 的優缺點
  • P2 你知道什麼是 uglify 與 minify
  • P3 你熟悉如何使用 gulp 建構自動化工作流程
  • P3 你知道 CSS 優化的一些小技巧

第十四週(09/14 ~ 09/20):伺服器與網站部署

有了自己的前後端程式之後,就可以開始來部署了。這週的重點會放在帶大家直接去買主機(AWSDigital OceanGCP、Linode),並且了解如何連上主機。

關於主機的部分,想要用哪一家的都可以,AWS 有一年免費的方案,GCP 則是部分服務沒有超過用量就免費,其他的應該都是要付費的。

也會讓大家購買自己的網域,理解如何將網域以及主機串連起來,讓大家可以連線到你的網站。

這週也要特別感謝 gandi 連續四期全額贊助了網域的費用 <(_ _)>。

第四期學生請找助教索取網域的折扣碼(每人限一個),可以用來註冊 .tw 的域名。

除此之外,也會稍微提到一些系統架構,還有跟資料庫的一些知識,像是 ACID、Transaction、View 以及 Stored procedure 等等,這些專有名詞的重要性是 P2 與 P3,只要稍微聽過有個印象就好。

指定教材

這週最重要的就是部署自己的網站,這邊會希望大家自己先查資料,試試看能不能靠自己就部署成功,目標是把你之前的 PHP 網站放到自己的主機上,並且連 MySQL 都一起建好。

若是不行的話,請參考以下幾篇,或者是自行搜尋相關資訊:

  1. 部署 AWS EC2 遠端主機 + Ubuntu LAMP 環境 + phpmyadmin
  2. 一小時完成 VPS (Virtual Private Server) 部署
  3. 如何遠端連接虛擬主機上的 mySQL 資料庫 ?
  4. [紀錄] 部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin
  5. AWS EC2 佈署網站:卡關記錄

接著有關於專有名詞的部分,只要稍微聽過有個印象就好了,暫時不需要深入研究,可以看程式導師實驗計畫:Lesson 8-2 之資料庫來學習什麼是 NoSQL、transaction、ACID 與 Lock。

然後看看程式導師實驗計畫第二期:Week8-1 後端基礎(下)來學習什麼是 View、Stored Procedure 與 Trigger(這影片前半段是以前 Todo list 作業的檢討,可以跳過)。

最後是系統架構,可以稍微看一下:CS75 (Summer 2012) Lecture 9 Scalability Harvard Web Development David Malan

HW14 作業連結

自我檢測

  • P1 你知道虛擬空間、虛擬主機以及實體主機的差別
  • P1 你知道什麼是網域(Domain)
  • P1 你知道如何設定網域(A、CNAME)
  • P1 你知道如何用 SSH 遠端連線到自己的主機
  • P1 你知道如何部署應用程式
  • P2 你知道什麼是 No SQL
  • P2 你知道什麼是 Transaction 與 lock
  • P2 你知道資料庫的 ACID 是什麼
  • P3 你知道什麼是資料庫的 View 以及使用時機
  • P3 你知道什麼是 Stored procedure 以及如何使用
  • P3 你知道資料庫的 Trigger 以及使用時機

第十五週(09/21 ~ 09/27):複習週

終於到了第三次的複習週,這次要複習的東西比以往都多了點:

  1. Session 與 Cookie 的差異
  2. 資訊安全(Hashing、SQL Injection、XSS)
  3. jQuery
  4. Bootstrap
  5. CSS 預處理器、Webpack
  6. 部署

這一週的作業除了心得以外,也提供了一個跟以往不太一樣的測驗:網站前後端開發基礎測試,一共十題簡答題,答案預設是隱藏的,自己答完之後可以自己點開對答案。

另外,這週會幫大家補充瀏覽器運作的相關知識,可以參考這一系列的文章:

  1. Inside look at modern web browser (part 1)
  2. 中譯版,其他 part 請自行搜尋

看完以後可以看我之前對這些文章的導讀:瀏覽器運作導讀

HW15 作業連結

第十六週(09/28 ~ 10/04):JavaScript 核心與物件導向

這次的第一個重點在於物件導向,之前都沒有時間好好講過,這一週特別講一下物件導向。

再來是 JavaScript 的一些重要基礎以及瀏覽器運作時的機制,這邊有兩個地方要特別注意。

第一個是瀏覽器在運行 JavaScript 時的 Event Loop 機制。

第二個是 JavaScript 的一些重要基礎,包含:scope、hoisting、closure、prototype、this 等等。

指定教材

  1. [JS201] 進階 JavaScript:那些你一直搞不懂的地方
  2. What the heck is the event loop anyway? | Philip Roberts | JSConf EU

可以搭配其他我寫的文章一起閱讀:

  1. 該來理解 JavaScript 的原型鍊了
  2. 深入探討 JavaScript 中的參數傳遞:call by value 還是 reference?
  3. 我知道你懂 hoisting,可是你了解到多深?
  4. 所有的函式都是閉包:談 JS 中的作用域與 Closure
  5. 淺談 JavaScript 頭號難題 this:絕對不完整,但保證好懂
  6. JavaScript 中的同步與非同步(上):先成為 callback 大師吧!
  7. 覺得 JavaScript function 很有趣的我是不是很奇怪

如果你不排斥比較長的影片,也可以看這個:程式導師實驗計畫第二期:Week9-2 JavaScript 執行原理 (內容有很多應該都該 JS201 類似,所以有時間再看就好,沒看也沒關係)

物件導向的地方我自己沒有很熟,所以還在探索怎麼教會比較好,這邊有兩個第二期的影片,會用 PHP 跟 JavaScript 當範例。會用 PHP 是因為 JS 中的物件導向並不完整,而 PHP 的完整許多,但要注意影片中會在 PHP 跟 JS 中切換,建議大家只需要了解一些基本概念即可,不需要執著於一定要完全搞懂物件導向:

  1. 程式導師實驗計畫第二期:Week5-2:物件導向程式設計
  2. Week5 物件導向(續):繼承與 static

HW16 作業連結

自我檢測

  • P1 你知道 Event Loop 的運作方式
  • P1 你知道什麼是作用域(Scope)
  • P1 你知道 Hoisting(提升)是什麼
  • P1 你知道 Hoisting 的原理為何
  • P1 你知道 Closure(閉包)是什麼
  • P1 你能夠舉出一個運用 Closure 的例子
  • P1 你知道 Prototype 在 JavaScript 裡是什麼
  • P1 你知道大部分情況下 this 的值是什麼
  • P2 你知道物件導向的基本概念(類別、實體、繼承、封裝)

第十七週(10/05 ~ 10/11):現代後端開發(上)

Express 是可以在 Node.js 環境下執行的輕量後端框架,自由度極高,也能夠快速開發出後端應用程式。

跟其他有完整 MVC 架構的框架相比,Express 其實鬆散(或者說自由)很多,許多地方並沒有強制規範,都只是按照前人的方法或者是慣例來實踐,十個人可能會有十種不同的寫法。

有了之前 PHP 以及 JS 的基礎,我相信學習 Express 會快速許多,因此在這一週裡面可以試試看能不能快速上手 Express 並完成作業。

除了 Express 以外,這一週還要介紹一個新的東西:ORM(Object Relational Mapping),簡單來說就是把一個程式碼裡面的物件跟資料庫的物件做映射(mapping),優點就是當你操作程式裡的物件時,就會改到資料庫裡的資料。

而且你幾乎不需要寫任何 SQL Query,因為 ORM 都會幫你處理的好好的,你只要學習怎麼用就可以了。這一週會使用 Sequelize 這個套件來做 ORM 以及串接資料庫,讓你體驗看看不用寫 SQL Query 的爽快感。

最後會把這週的專案部署到免費的空間 Heroku或是自己的主機(nginx + PM2)。

指定教材:

  1. [BE201] Express 與 Sequelize:全部

HW17 作業連結

自我檢測

  • P1 學習如何使用 Express 及其相關套件
  • P1 我理解為什麼會需要框架
  • P1 了解什麼是 ORM
  • P1 了解 ORM 的優缺點
  • P1 了解什麼是 N+1 problem
  • P1 我知道如何部署 Node.js 應用程式到 heroku

第十八週(10/12 ~ 10/18):現代後端開發(下)

上週已經熟悉的基本的 Express + Sequelize 開發,而這一週我們會把之前做的餐廳網站移植過來 Express,並且加入後台的功能,讓我們可以有一個相對完整的專案。

這週會做的東西主要有:

  1. 移植餐廳網站
  2. 新增餐廳後台,管理菜單
  3. 新增餐廳後台,管理常見問題

這週大致上需要用到的東西在上一週都學到了,核心概念跟上一週沒有什麼差,如果你有時間壓力的話,可以跳過這一週的作業。

指定教材

  1. [BE201] Express 與 Sequelize 全部看完

HW18 作業連結

自我檢測

  • P1 我能夠從頭把一個網站獨立建起來
  • P1 我知道如何部署 Node.js 的網站到自己的主機
  • P2 我知道如何使用 Nginx
  • P2 我知道如何使用 PM2

第十九週(10/19 ~ 10/25):產品開發流程

前面講了很多技術相關的東西,但是在產品面上一直沒什麼著墨。下一週開始就要進入到課程的最後一個階段了,也就是前端框架以及期末作業。在開始之前,先跟大家講一下產品開發流程還有工作流程會是一件滿重要的事。

這一週會帶大家看看學習系統在開發新功能時的一些記錄,讓大家看看產品開發流程會長什麼樣子。

然後這一週的作業呢,就是讓大家有充足的時間來規劃一下自己之後期末專案想要開發什麼樣的產品。

指定教材

  1. [PD101] 淺談產品開發與工作流程:全部

HW19 作業連結

自我檢測

  • P1 知道什麼是 Scrum
  • P1 知道 Scrum 中通常會有哪些元素
  • P1 知道什麼是 user story

第二十週(10/26 ~ 11/01):複習週

這是最後一次的複習週了,在前幾週我們同時加強前後端,並且最後帶到產品開發的相關概念,讓大家對整個開發流程又理解更多了一些。

至此,這個課程的基礎跟中階都學完了,從下週開始就要進入到前端框架的領域。

為了怕大家複習週太無聊,這次也準備了一個有趣的小測驗,Lazy Hackathon 是一個速度很慢的網站,原因有很多,原始碼在這裡:https://github.com/Lidemy/lazy-hackathon (特別感謝 @yakim-shu 同學製作這個小測驗)

現在呢,你要來負責優化這個網站,在「不動內容」的情形下來調整,意思就是說網頁看起來要「長得一模一樣」,把圖片變黑白、刪減文字或是更動排版都是不允許的,但刪減多餘的 HTML、CSS 和 JS 是 ok 的,只要保證網頁看起來一樣就行了,原始碼怎麼動隨便你,總之目標是使網站的載入速度變快。

詳細說明請參考上面的原始碼連結。

若是你沒有任何靈感,可參考 web.dev 或是 Website Performance Optimization

HW20 作業連結

第二十一週(11/02 ~ 11/08):前端框架(一)

備註:大家可以把 week21、22 當作一組,week 23、24 當作一組,因為 React 的地方比較難切,而且一週的時間我覺得不太夠,所以可以用兩週把課程完整看完再把作業一起寫完,可能會比較容易一些。

終於要進入到前端框架 React 了(雖然嚴格來說 React 並不是一個框架,但搭配其他各種 React 生態系成員,其實就算是一個框架了)。

這週會學習到 React 的基本應用以及原理,了解為什麼我們需要使用 React。

指定教材:

React 的核心概念之一叫做 component,要寫出這個 component 有兩種方式,一個是透過 class,一個是透過 function,前者就叫做 class component,後者叫做 function component。

React 在 2019 年 2 月推出 v16.8 這個版本,做了一個很大的改動,那就是多了一個東西叫做 hooks,讓 function component 也能擁有 state。

這個對 React 生態系的影響很大,甚至改變了原本在寫 React 時的思考方式,是很大的變革,但滿多教材都是比較舊的內容,裡面會提到的東西叫做 class component。

雖然說 class component 在很多 app 裡還是很常看到,但基本上新的 app 都是用 function component + hooks 在開發了,底下會把學習資源分成 function component + class component 兩塊,請先學習 function component,如果看不懂或有疑惑,再回去看 class component。

function component 學習資源

  1. [FE302] React 基礎 - hooks 版本,看到「React 基礎」結束,應該就能寫出本週的作業了

部署的部分可以參考 FE302 課程中的「部署 React App」,記得在交作業之前先部署好,助教才比較方便改作業。

如果課程看不懂,可以額外參考:從 Hooks 開始,讓你的網頁 React 起來

class component 學習資源

  1. [FE301] React 基礎(Class component 版):全部
  2. 官方教學
  3. React.js 小書

延伸閱讀:React 性能優化大挑戰:一次理解 Immutable data 跟 shouldComponentUpdate

HW21 作業連結

自我檢測

  • P1 我知道 React 的目的以及原理
  • P1 我知道我們為什麼需要 React
  • P1 我知道使用 React 跟之前使用 jQuery 的區別
  • P1 我理解 state 跟 props 的不同

第二十二週(11/09 ~ 11/15):前端框架(二)

在上一週結束之後,大家應該對 React 有了一些基本的感覺,這一週我們要繼續培養對 React 的感覺,讓大家對 React 越來越熟練。

除此之外也會教大家用 React Router 這一套 library,來實做前端的路由。然後也會在課程中帶大家做出一個半成品的 SPA 部落格,並交由各位把剩下的功能完成。

指定教材:

  1. [FE302] React 基礎 - hooks 版本:全部
  2. 淺談新手在學習 SPA 時的常見問題:以 Router 為例
  3. How Are Function Components Different from Classes?
  4. A Complete Guide to useEffect

HW22 作業連結

延伸閱讀:

  1. 前後端分離與 SPA
  2. 跟著小明一起搞懂技術名詞:MVC、SPA 與 SSR

自我檢測

  • P1 我熟悉 React 的基本使用
  • P1 我知道如何使用 React Router
  • P1 我了解 React Router 的目的
  • P1 我知道什麼是 Single Page Application
  • P1 我理解現在的前端與以往的差別
  • P1 我知道 class component 與 function component 的差異
  • P1 我知道 class component 的各個 lifecycle
  • P2 我知道每一個 hook 大概是在做什麼

第二十三週(11/16 ~ 11/22):前端框架(三)

在之前的 React 課程中,我們已經慢慢熟悉 React 的思考模式,雖然說 React 有提供管理 state 相關的功能,但有些時候可能不太夠用。

因此呢,Facebook 當初在推出 React 的時候,一併提出了另外一套應用程式的架構叫做 flux 來管理你的資料,以及如何改變這些資料。

經過時間的演進,當初最早的 flux 架構經過社群的改良以後變成了各個 library,有著各種實作,而以 React 來說,最有名的就是一套叫做 Redux 的 library。

雖然說 redux 與 flux 長得不太一樣,但我認為能理解 flux 的話有助於理解 redux,所以可以參考:

  1. Flux: In-Depth Overview,這是官方當初推出 flux 時候的影片,很值得參考,也有講到 React 可以當做複習
  2. Flux For Beginners,淺顯易懂的教學
  3. React/Flux in Action 實戰經驗分享,當初我入門時幫助我很多的投影片
  4. 從 Flux 與 MVC 的差異來簡介 Flux

指定教材:

  1. Redux 官方文件
  2. [FE303] React 的好夥伴:Redux(看到 「實作簡易 todo list 結束就好」)

Redux 的官方文件前陣子剛重寫過,我覺得寫得很棒,把 Redux 的許多重點講得十分清楚,因此我推薦大家從官方文件開始學習,除了這資源很棒以外,另一方面也是提前體驗「完全自學」的狀況。

如果英文不太好,這邊也有舊版官方文件的中文版(只是跟新版差很多就是了):

  1. Redux 舊版文件中文版(2016 年)

除了官方文件以外,也可以跟上面的課程穿插著看,應該能夠增進理解程度。

如果你還有時間,可以參考第二期講解 redux 的影片:

  1. 程式導師實驗計畫第二期:Week14-1 Redux

HW23 作業連結

自我檢測

  • P1 我理解 Redux 的目的以及原理
  • P1 我理解 Redux 的資料流
  • P1 我理解 Redux 當中各種重要元素,像是:dispatch, store, action, reducer 等等
  • P1 我知道我們為什麼需要 Redux

第二十四週(11/23 ~ 11/29):前端框架(四)

在上一週其實就已經把主要的課程都講完了,只剩下一個東西,那就是 redux middleware,這其實是在 redux 中相當重要的一個概念,因此本週的作業也會以這個為主。

除此之外,這一週也會做一些額外的補充,幫大家補充幾個重要的議題,像是:

  1. 為什麼需要 SSR?SSR 該怎麼做?
  2. Next.js 框架介紹
  3. TypeScript 簡介

指定教材:

先把 [FE303] React 的好夥伴:Redux 全部看完,學習如何使用 redux-thunk,然後就可以開始做作業了。

也非常推薦去看:Redux Essentials, Part 5: Async Logic and Data Fetching#,有實際示範 redux-thunk 與 call API 的結合。

再來看 Lidemy 上面 MTR04 裡的補充課程,學習 SSR, Next.js 以及 TypesScript 的基礎概念。

同時也可以透過以下幾篇文章更理解 SSR,甚至是跟著文章一起實作看看:

  1. React SSR | 從零開始實作 SSR — 基礎篇
  2. React | 用實作了解 Server-Side Rendering 的運作原理
  3. 跟著小明一起搞懂技術名詞:MVC、SPA 與 SSR

HW24 作業連結

自我檢測

  • P1 我知道 Redux 如何搭配 middleware 解決非同步操作的問題
  • P1 我知道 CSR 與 SSR 的區別
  • P2 我知道怎麼實作 SSR
  • P2 我知道 Next.js 這個框架
  • P3 我知道 TypeScript 與 JavaScript 的差異

第二十五週(11/30 ~ 12/06):Final Project

第二十六週(12/07 ~ 12/13):Final Project

Final Project

正式的課程就到這邊告一段落了,你學了前端後端與程式相關的基礎知識,接下來需要做一些作品累積經驗,因此接下來幾週都會讓同學做出屬於自己的 Final Project,建議可以與其他人合作,但也可以選擇一個人單打獨鬥。

根據第一期的經驗,其實找人合作會是比較好的選擇(第二期因進度問題沒有 Final Project)。

如果大家一點靈感都沒有的話,可以參考以下幾個提案(但有自己的想法當然是最好的):

留言板

既然我們這次的課程做了這麼多個留言板,不如把留言板給做到極致吧!

你可以做一個「讓大家都能申請留言板」的系統,就像是無名小站那樣,每個人都可以申請帳號,有帳號之後可以開設自己的留言板,然後可以自己選擇要不要開放訪客來留言,不開放的話就預設是只有會員可以留言。

點下去會員的帳號之後還可以看到會員個人資料,或者是直接跳到會員自己的留言板去(如果有的話)。

除此之外,如果你想走前端的話,可以試著把前端改成 SPA 試試看!

論壇系統

建立一個論壇系統,能有不同的板塊(討論區),例如說:

  1. 閒聊
  2. 購物
  3. 程式相關主題

在不同板塊底下都可以發表文章,除了發表文章以外,下面也能夠有回覆。

或者是你也可以把板塊當成是 Tag 而已,在同一個頁面就可以看到所有的文章,如果你想找範例的話,可以參考:http://react-china.org/

購物網站

做個簡單的購物網站,可以參考任何一家市面上的電商,例如說這個我隨便找的電商:https://www.yuyufarm.com/

重點是除了前端以外,你必須要有後台能夠讓管理者登入,並且管理商品(例如說調整價錢、上傳圖片、調整順序等等),可以先完成一個最簡單的版本,之後再慢慢加強。

社交網站

可以直接參考 Twitter:https://twitter.com/?lang=zh-tw

你可以 follow 人,然後就能夠看到他的動態,也可以自己 po 動態,會出現在自己的 follower 的牆上。

總之呢,關於 Final Project,沒有靈感的話可以先從自己常用的東西開始下手,先打造出一個最簡單的版本再慢慢加強。也可以盡量去找一些第三方的 API 來串,增加自己串 API 的經驗,例如說:

  1. Firebase
  2. Google Map API
  3. Google Login, Facebook Login
  4. 金流

繳交 Final Project

請準備好以下幾個東西並且於第二十七週 po 到 Slack 裡面:

  1. 作品網址(沒主機或是 deploy 碰到問題的可以來找我)
  2. 5 分鐘以內介紹作品的短片,上傳到 YouTube(可以不用露臉,你不想出聲的話後製加文字也可以)
  3. GitHub 網址(請確保你有把一些敏感的資訊例如說資料庫密碼之類的拿掉)
  4. 做 final project 的心得(看你想寫在哪裡都可以)

自我練習

Codewar 是一個程式解題平台,靠這些題目,可以訓練自己對語法的熟悉度以及維持手感,更進階的題目則是能夠訓練思考邏輯以及解題方法。

我依照難度整理出了一些題目,平常做作業卡關或是沒事做的時候,都可以解一下這些題目。

Codewar 題目列表

Tech Stack

這邊列舉這堂課程用到的所有工具。

  1. 課程直播:YouTube
  2. 群組聊天:Slack
  3. 交作業:GitHub + GitHub Classroom
  4. 練習題目:Codewar + LidemyOJ

mentor-program-4th's People

Contributors

aszx87410 avatar cindylyu avatar nicolakacha avatar wozski avatar zlsh09830123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mentor-program-4th's Issues

第十六週練習題

底下提供十六週相關的小題目讓大家練習,都是以後在工作上可能會碰到的案例

這邊我提供了一個 codesandbox 的環境,你的任務是實作出 Robot 這個 class 以及 debounce 跟 memoize 這兩個 function,裡面有提供相對應的測試檔,測試過了應該就是通過了:https://codesandbox.io/s/closure-homeworks-vh5j3?file=/index.js

至於題目的敘述請參考下面,另外,請勿針對底下那兩個 function 的關鍵字做搜尋,因為你一搜尋了,答案就出現了。如果想確認正確的行為是什麼,可以參考測試檔。

Robot

請你寫出一個 Robot 的 class,初始化的時候可以設置座標 x 跟 y
接著 Robot 會有兩個方法,getCurrentPosition 跟 go,前者會回傳現在機器人所在的 x 與 y 座標,後者可以讓機器人往東南西北任一方向移動,需要傳進 'N', "E", 'S', 'W' 任何一個字串,代表要往哪一個方向走

這個世界是我們所熟悉的二維座標系,因此往北走 Y 座標會增加,往南走 Y 座標會減少,往東走 X 座標會增加,往西走 X 座標會減少

Debounce

在程式的領域中有兩個技巧滿常會用到,分別是 throttle 與 debounce,這邊我就只介紹什麼是 debounce。

舉例來說,假設今天有個 auto complete 的 input,像是 Google 搜尋那樣,在你打字的時候,就會邊發 API request 去後端拿搜尋的建議,然後顯示在前端。

一個簡單的實作會長這樣:

// 每當 input 的內容有變動,就呼叫 handleChange
$('input').change(handleChange)

function handleChange(e) {
  // 拿到 input 的值
  const value = e.target.value

  // 發 api 去後端拿搜尋建議,然後 render 出來
  // 細節我就不寫了
  getAutoSuggestions(value)
}

可是有一個小問題,那就是現在每打一個字就會發一個 request,例如說我搜尋:lidemy,就會發出六個 request,分別是:

  1. l
  2. li
  3. lid
  4. lide
  5. lidem
  6. lidemy

可是這樣是很沒有效率的,因為在我打字的時候,其實真正需要搜尋的結果只有最後的字串 lidemy,中間那些都是可以跳過的。

那解決方法是什麼呢?

有一個解法叫做 debounce,之前看到一個比喻滿傳神的,就是搭公車。司機什麼時候會關車門?確保真的都沒有人要上車以後。而為了確保這件事,就必須等待。

例如說現在第一個人上車了,那司機就等 2 秒後再關門,如果等了 1 秒之後有第二個人上車了,他就再等兩秒。這兩秒間如果又有人上車了,那就再等 2 秒,所以有可能會一直等下去。那如果 2 秒內沒人上車了,司機就可以開車了。

這概念就叫做 debounce,你有一個 threshold(閾值),在這裡面如果再度觸發這個事件,就再繼續等待,反之則做原本要做的事。

以上面 input 的案例來講,通常我們會把 debounce 的 threshold 設在 250ms,意思就是你打完一個字之後,要 250ms 後才會真的去發 api 拿東西,如果你在 250ms 以內又打了新的字,就會再等 250ms。

以正常的使用狀況來講,我打 lidemy 這六個字,每個字中間的間隔不會超過 250ms,所以 api 會在我打完 lidemy 的 y 以後過 250ms 才觸發,這樣就只會觸發一次而已。

因此你的任務呢,就是實作出一個 debounce 的函式,用起來會像這樣:

// 每當 input 的內容有變動,就呼叫 handleChange
$('input').change(handleChange)

// 讓原本發後端 api 的函式 debounce
const debouncedFn = debounce(getAutoSuggestions, 250)

function handleChange(e) {
  // 拿到 input 的值
  const value = e.target.value

  // 發 api 去後端拿搜尋建議,然後 render 出來
  // 細節我就不寫了
  // 在 250ms 內重複呼叫的話不會有反應
  debouncedFn(value)
}

memoize

假設我們現在有一個很複雜的函式叫做 complex,它的 input 會是一個數字 n
它是一個 pure function,所以傳進去的 input 如果一樣,output 也會一樣
因為它很複雜,所以每一次計算都至少要 2 秒才會回傳結果

console.log(complex(10)) // 等 2 秒才輸出結果

但因為它是 pure function,所以我們想在呼叫他的時候,順便把他的結果記下來
如果以後用同樣的參數去呼叫這個函式的話,就把之前記下來的結果回傳就好,因為一定是正確的
可是我們並不想直接去更動 complex 這個函式內部的東西
因此,我們需要一個叫做 memoize 的 function,它可以接收一個函式作為參數,並且幫這個函式加上「記憶」的功能,範例如下:

console.log(complex(10)) // 等 2 秒才輸出結果
console.log(complex(10)) // 等 2 秒才輸出結果

const memoizeFn = memoize(complex)
console.log(memoizeFn(10)) // 等 2 秒才輸出結果
console.log(memoizeFn(10)) // 立刻輸出結果,因為我們把之前 complex(10) 回傳過的值記起來了

而你的任務就是實作出這個 memoize 的函式

參考解答

https://codesandbox.io/s/closure-homeworks-ans-i5mrd?file=/index.js

比喻來源:Debounce & Throttle — 那些前端開發應該要知道的小事(一)

學生心得:John

Lidemy 第四期結業心得

先補上尚未完工的 Final Project,因為一直在忙自己的事導致最重要的寄電子報功能還沒做完,抱歉了組員們QQ

個人背景

過去國中輟學,曾經住過雜草叢生的廢棄空屋,當完兵後把國中補完,之後讀空專社會福利工作科畢業,所以現在的學歷是專科,唯一能說的出嘴的東西大概就是自學個半年英語,考了個藍色證書吧。
我的出身背景很遭,所以沒什麼可以講的,所以就這樣了。

前言

今天是 2021/2/28 星期日,課程早已在去年的12月結束,找工作的期限也已經在2021/2/11 結束,
也就是說,這是一份遲來的心得XD。

為什麼會遲來呢? 原因是我覺得自己還沒有沉澱夠,還沒想好要寫什麼,再來就是...拖延症啦XDDD
寫作要花很多時間,又不想寫出一篇連我自己都不想看的爛文章,所以就拖者了QQ。

這個心得主要分四個部份,第一部份是講從報名前到結業找工作後的心態變化,第二部份是講關於我如何學習,第三部份則是我個人對於 Lidemy 課程的一些想法及建議,第四部份則是一些我腦子裡的雜亂想法。

前言充字數的廢話太多,現在立馬開始吧!

希望這份心得能夠對你/妳有所幫助。

心態變化

這個部份要來講講從報名 Lidemy 之前到整個 Lidemy 課程結束,找到工作前的心態變化。

為什麼要講這個呢? 主要是我覺得心態是整個學習歷程最重要的事情,以及寫出來可以讓大家知道一件事,那就是「其實你經歷過的我也經歷過。」好讓大家在遇到壓力時,可以很好的調整自己。

好,那麼就開始談吧!

首先是確定入選課程時的心態,這個時期的我是不安且焦慮的,一直擔心自己是否會跟不上課程被淘汰,因為課程需要每周30個小時以上的付出,而我有正職工作,每周能夠付出的時間有限,現在來看會發現,這個〝擔心跟不上會被淘汰〞的焦慮成為了一個推動我前進的力量。

再來到課程中期,發現別人的作業畫面比你好看以及寫的程式碼比你漂亮時的心態,老實說,我是很沮喪的,所以從這個時期開始我很少去看別人心得以及作業,只看某些特定人的作業,以免讓自卑感這個情緒充斥者我。我得說,這不是一個好的應對方法,所以我不推薦大家學我,相反,應該盡量去看別人的作業並吸收納進自己的程式碼裡。

接下來是課程結束,找工作時的心態。

一開始我是樂觀的,但對自己能開多少價很沒自信,因為自卑感作祟,要不是女友、朋友、Lidemy 同學以及助教的鼓勵,我根本不敢開比較高的價錢給人殺。

回到正題,我在投了20到30封的履歷卻沒收到面試邀請後,心態整個崩了,開始覺得自己可能不行,要到此為止了,直到朋友建議我投台北缺試試,才發現當時新竹相關職缺只有200多,而台北缺則多達3000! 而投了沒幾封後,開始有面試了,面了幾家之後心態才回來,最後發現不是我沒價值,而是地區問題,真的要做軟體業,台北絕對是最佳選擇。最後我投了約90幾封履歷,幸運的在新竹,這個我土生土長的地方找到了一份薪水剛好符合我薪水預期底限的工作。如果你在這個階段也像我一樣覺得不行了,可能不是你的問題,而是投的履歷不夠多或是地區不對。

再來是新工作報到之前的心態,實話告訴你們吧,我很焦慮XDDD,擔心試用期不過被開除、擔心程式寫不出來、沒人帶等等。這階段我所能做的就是盡量學習以後可能會用到的技能,例如,Java、C#、Android 開發等等,盡量讓自己每天都學一點,多碰程式碼,讓自己沉浸在程式的世界,不讓自己有生疏的機會。

以上就是幾個重要階段的心態變化,我文筆不好,寫的不太通順,請多包涵。

學習方式

我的學習方式沒什麼特別的,應該跟大家差不到那裡去,就是〝看每周課程影片〞->〝跟者影片示範跟者敲程式碼〞->〝將剛剛敲完的程式碼從頭讀到尾用頭腦想像執行流程〞->〝做每周作業〞->〝將做完的作業程式碼從頭讀到尾用頭腦想像執行流程〞->〝過程遇到不會的就 Google 找答案〞->〝將 Google 來的答案從頭讀到尾用頭腦想像執行流程〞,以上就是在 Lidemy 的學習方式。

如果是在 Lidemy 之外的學習方式的話,我會推薦在 Youtube 或 Udemy 看個基本教學的影片,將語法及特性等等了解之後,直接去模仿 FB、Instagram、Youtube 等網站,或做你自己想做的作品來實戰練習,畢竟實作才是學習的最佳方式。

這裡推薦 The Odin Project,一個只提供學習資源,及作業需求,剩下你自己想辦法搞定的開源專案,我自己也還沒跑完,不過我可以肯定,要是你能獨自完成這個課程,你絕對是一個合格的、具備解決問題的能力的開發者!!

總的來說,遇到問題盡量自己想答案,想不出來再找答案,找到答案之後要去想為什麼答案是這個,盡量將答案內化進內心,這樣以後遇到類似的問題,就比較能夠快速的想出解決方法。

最最重要的一點是,持之以恆! 再厲害的學習方式,沒有持之以恆也是無用的

每天一點微小的學習,累積起來就是大大的寶庫!

課程建議

這裡我就直接貼之前寫給助教的課程建議了。

使用者體驗

  • Lidemy/mentor-program-4th 的 README 最上頭可加個每週課程目錄,讓使用者可以直接導到該週課程
  • 每週課程指定教材影片的部份,可加個 Lidemy 課程影音平台的連結,讓使用者可以減少額外尋找課程平台網址的動作
  • lidemy 作業平台 作業列表的搜尋功能要能夠確實搜索
  • lidemy 作業平台 作業列表可增加一個學生 fork 過去的 Lidemy 課綱連結,以便參考同儕作業
  • lidemy 作業平台 可增加訂閱功能,讓同學自由訂閱想要參考的同儕,而不用每次都要從列表找

課程 & 作業建議

  • 可設計一個大作業,例如:雲端點餐平台,只給需求、然後根據課程進度一個階段一個階段完成,到最後一週形成一個具有個人風格的作品。範例:第2週 HTML & CSS 課程,需求為設計有固定 header、navbar、RWD 等等的網站。配色及圖片素材則由同學自己找,這樣所有同學就會有一個屬於自己風格的作品
  • 作業審核部份可設計一份 CI/CD 先檢查基本 coding style、排板等等,讓同學能夠透過這檢查練習好的寫 code 習慣
  • 之前有提到希望同學不要超前太多或跳週,因此可將每週課程設計成,做完每週作業後,才會顯示下一週課程及作業,最多超前一週
  • 課程影片可以把 debug 部份拿掉,如果要強調真實 coding 是如何的,可以在每週 show time 裡錄一鏡到底的 coding 影片
  • 建議每週課程都可以加一部 show time 作品影片,做讓人驚豔的作品,刺激學生興趣及想象力,例如:使用 three.js 做 3D 遊戲
  • 將被評為值得參考的作業的原因及程式碼顯示在當週值得參考作業區,使學生有個實際的標準可學習
  • 找個能夠常駐回答課程範圍內問題的助教,已便即時解答學生問題
  • 規範學生發問格式,使助教能夠快速掌握問題並回答,同時訓練學生表達如何問問題的能力
  • 課程影片中間增加一些 Challenge 作業,讓學生馬上運用剛學到的技能,加深印象

雜談

心得到這裡就結束了,最後來講講一些個人的體悟及雜談吧。

首先是,確定自己是喜歡幫助別人解決問題的人,並且熱愛教學,經常思考什麼是〝學習如何學習〞,希望能夠教導及引導他人找到屬於自己的,有效果的學習方式,因此未來希望能夠從事教育跟程式結合的工作這樣。

第二,因為自己的出生背景有點遭,所以希望以後小有成就之後,有餘力舉辦免費的程式啟發營,期望能夠讓社會邊緣或學習資源不足的國中生及小學生發展出對程式或學習的興趣,讓他們看見前進的道路。

第三,決定了之後的進修順序,一是英語口說、二是演算法與資料結構、三是數學(這是我自己想要補起來),你會問,怎麼沒選擇進修學歷? 其實我也有猶豫是否進修個學歷,但經過跟前輩們的諮詢後,決定先暫緩,或許之後某天會去補吧,因為總感覺沒補起來會遺憾。

第四,覺得時間不夠用,一天能夠利用的時間屈指可數,所以時常感到焦慮,希望能夠快快成長到能夠獨當一面。這算一種推力,因為對未來感到焦慮,所以就不太敢鬆懈,不過也是一種會破壞人際關係的阻力,因為可能會太專注於在學習身上而忽略了身邊的人,所以要多加注意。

嗯,目前只想到這些,有想到再補吧,不過很可能就拖者了,哈哈。

最後,
感謝 Peter 告訴我有 Lidemy 這個課程的存在並鼓勵我報名,
感謝 Huli 舉辦這個課程,讓我有機會系統化的學習及驗證自己的學習成果,
感謝 Jason、妙賢、Alina、Clay、老余一起在群組中吵吵鬧鬧,互相分享、學習,
感謝 Lidemy 的同學們,使這個課程越變越好,也讓我學到一些神奇的程式技巧,
最後要感謝的是我的女友,一路走來,一直給我信心,讓我能夠安定心神,心無旁騖的學習。

我,太幸運了。

謝謝。

學生心得:ai86109

前言

嗨嗨,我是 Derek,雖然有點晚了,但深知我是完美型拖延症的人,所以如果不趕快記錄下來,恐怕未來也只能在儲思盆裡看到了吧。


背景介紹

基本上求學時期我就是大家所謂的三類人,大學念營養,研究所跑去做基礎科學,每天跟細胞和老鼠打交道,當完兵後的第一份工作也順理成章進入了科技部下面的單位去做新藥開發相關的工作。

雖然工作很有挑戰性,也時不時會有成就感,但這真的是我喜歡的嗎?當時不斷問自己的我,後來迎來人生的第一次轉職。

由於對媒體與體育的熱愛,我進入了 yahoo,那是一個我一待就待了快三年的地方。在攝影棚打仗的日子,除了讓我碰觸到各種製作節目眉角,也讓我結識了許多好戰友。雅虎不愧是大公司,每天免費的午餐、飲料,還有拿不完的零食,讓我有時也不禁想:『就這樣一直待著好像也沒有不好』,但,這真的是我要的嗎?我又開始問我自己。

有的人很幸運,從求學途中就發現了自己喜愛的事物;有的人出了社會之後,經過不斷的試誤才終於找到;有的人則還在這條道路上前進中,所以思索了一陣子之後我決定再試試。

在美加旅行的時候,住在紐約的工程師朋友家,我覺得也是那時候讓我覺得好像可以開始嘗試看看,嘗試看看寫程式這件事,至少那個時候我是這麼覺得的,所以我回國之後就開始搜集各種資訊準備自學,畢竟學學看也沒什麼損失。


在報名之前

回到台灣之後,我找了一些文章,在 udemy 買了一些課,也有買了六角的 HTML, CSS 的課來上,但不知道為什麼我覺得效果沒有我想像中的好,也就是我看不完。

正當我開始思索是不是自己不適合學程式之際,我看到了這篇文章『零基礎的小明要如何成為前端工程師』,看完之後我只有兩個感想,第一個是連我這個沒有程式基礎的人,都可以輕鬆理解,這個思路很好我喜歡,第二個就是如果這個作者有開課我想去上!

於是,我就開始搜尋這個作者的一切,嘔不是,是他的文章們。也發現他的確是有開課的,只是課程已經結束了,而且又看到可能不會有下一期了,所以後來就決定去買一點 lidemy 的影片,並且照著『紮實的網頁前端學習路線與資源推薦』的學習路徑繼續自學。

就在學完 JavaScript,以及其進階觀念之後,突然不知哪來的想法,『不如就去求職看看吧?』,想說趕快進到業界學習,應該會變強的比較快吧。於是我就開始投履歷。

當時我丟了九家,只有一家回覆,抱著沒差就試試看的心態參加了面試前測。印象中限時 100 分鐘,需要線上完成四題,其中三題是給 input, output,要你寫出 function,詳細內容已經不記得了,只記得其中一題是要 debug,讓他可以正確執行,第四題則是給你設計圖,要你做出來跟畫面一樣的靜態頁面。

意外的竟然被邀請面試了,但條件是如果通過的話,必須要在時限內到職,由於在職的關係,我只好忍痛拒絕了邀約。這次的經驗很寶貴,他同時告訴了我,我有資格同時也還不夠格。

有資格是指,在不會框架的情況下,我還是有機會被邀請參加面試的。

不夠格是說,其實我第四題沒有解出來。放到現在的角度來看,這題應該要馬上可以刻出來,但既然我沒辦法完成,是不是有哪些地方出了問題。

我當時的結論是,我都只是照著影片來練習寫程式碼,甚至有些我也只是看了覺得自己懂就過去了。缺乏練習,也無法了解自己的 code 寫的如何,若是就這樣進了公司,應該也會有不少問題,正好當時 huli 決定要開第四期,所以我也就順理成章的報名了,想說給自己半年的時間試試看。


報名信

我想轉職成功。

這是我當時寫在報名信上第二題的答案,很普通,但我相信也是大多數同學的目標。

由於後來決定在職學習的關係,我當時的設想是平日利用上班前的 8:00 - 9:00,以及下班後的 20:00 - 24:00;假日則是預計上午 3 小時,下午 4 小時,這樣一週可以有接近 40 小時的學習時間。但要注意的是,這裡的時間安排都是最理想的狀況下,實際在執行時一定不可能這麼順利,在安排的時候一定要有這個認知。

至於為什麼我最後選擇在職學習呢?

首先,我之前有一段找工作的空窗期,我明白自己會因為這個狀態而感到不安,所以選擇不辭職(事實證明我是了解自己的);再來則是我認為工作可以適時的調劑身心,把自己從 coding 的狀態抽離出來,在做不同事情之間切換,說不定可以意外解開遇到的 bug(效果一半一半,也會因為工作太累影響學習);最後則是我相信自己的學習能力。


課程開始

詳細的課程介紹,就不再另外贅述了。

這邊以我觀察到的課程內容與實際體驗為主,如有雷同純屬巧合:

作息

這是我覺得最重要的環節,至少對我來說。

我是需要一點儀式感的人,所以我會先試著排出一套我的作息,並且持續滾動調整。

我習慣早上邊吃早餐邊寫昨天的進度報告,寫寫昨天做了什麼,感受是怎樣,並且規劃今天預計要學的東西。讀書和寫程式很順的時候,常常會進入心流,有時候一晃眼就不小心過了晚上 12 點,但如果為了要去卡這個進度而破壞心流,要再進入又要花一段時間,所以乾脆就放在早上寫,這樣晚上弄完東西還可以直接睡。

至於**、聚會等等,就要很嚴格管控了,每週要設一個扣打不能超過,不然就是端看當週進度決定,但還是推薦適當**保持體力,畢竟有體力才走得長久。

進度報告

進度報告就是我的一個儀式感,雖然後來我改成了 B 方案,並沒有一定要交心得,但每天交心得,會用讓我在上班前對於今天下班之後要學什麼心裡有一個底,觀看大家的進度報告,也會讓自己感受到有夥伴們一起在努力的感覺。

我覺得是個很棒的一個機制。

課程編排

老實說我個人還滿喜歡這份課程編排的,既有廣度又有前端新手的深度,但也因為學的東西很多,往往到了後期,前期的東西就忘得差不多了,這我覺得很正常。

我回憶我上次有這種感覺,應該是在準備面試題目的時候,看到題目卻腦袋空空,但這是個問題嗎?我自己覺得不是耶。

本來不常用的東西,會不熟或是忘記,就還滿正常的,這時候如果回去翻一翻筆記,通常記憶就會慢慢浮現。所以我覺得應該要做的是,讓大家培養做筆記的習慣,不用是放在部落格那種的精美筆記,而是當下咀嚼過後用自己的話大致整理過的筆記就夠了。

因為離開課程後,會一直碰到一樣的事情,你會不斷地忘記,再不斷的想起來,而自己寫的筆記就是那個重要的媒介。

會特別提這個是因為好像有印象 huli 有為此想了個雙循環的課綱,但又忘記寫在哪了。

社群交流

這一塊是我個人覺得最可惜的部分,因為我沒有好好使用。

當初課程開始時也抱持著,想到處去看同學的作業、筆記,互相交流的天真心態,但對於還要上班的我來說似乎有點吃力,所以後來就只有刷刷大家每天的進度報告而已。

再加上我也沒去過小樹屋,所以自然而然好像就沒認識什麼人了,算是如果要在職參加計畫的人要特別去思考的點,因為我覺得非本科轉職,這些人脈也是很重要的。

作業批改

先來說一下作業批改的機制。

我曾經在面試被問到課程的交作業機制,記得我描述完之後,面試官有說恭喜你選到一個好課程,給予滿滿的讚賞。

而實際的體驗上,我覺得改作業的速度可以快一點XD

因為有時候週與週之間,不一定關聯性這麼高,難保過了一兩週之後,同學們還記得自己當初到底在寫什麼,即便是相類似的課程也是一樣。以我當初為例,已經寫到 24 週了,但 21 週的作業才剛改完,我就有點無心回頭去看了,但也可能也是因為我沒有全職學習,導致學習時間的關係拉XD,所以這就是如果你是邊上班邊學習需要注意的點。

筆記

個人覺得這個很重要,我記得胡立在第零週也有貼過類似的文,你的筆記可以寫在 blog 裡面,甚至躺在自己的筆記軟體裡也沒關係,因為你到後期可能光是要唸書和寫作業,根本沒多餘的時間寫出精美筆記,但在第一次接觸時整理出來的筆記是必須的,除了方便回頭查找之外,用自己的語言寫出來的東西才能夠內化到你的腦袋裡。

線下活動

特別講一下期末那一次,那天真的各種驚喜,除了剛開始的遊戲意外的拿到第三名和一串 Lidemy 的貼紙外,也現場看到 huli 表演 b-box(如果想要看那個右下角的男人今年又練了什麼新才藝,請不要錯過),最驚喜的是發現我的大學同學竟然分別是第一和第二屆的同學,我只能說世界真的小到爆炸。

我會很建議如果時間排得開一定要去參加,這可能是少數你可以見到這些一起奮鬥戰友的場合,就算是抱持著去看看心情都好。

podcast

有一陣子很喜歡,邊打 code 邊放著當背景音,覺得效率提升十倍。唯一認真聽完全部的是 minw 朋友來上節目的那集,我覺得找其他在業界的工程師來分享,不管是生活或是做事的方式,都會是正在轉職路上的人一個很棒的指標。

方案

最一開始我原本是選 A 方案的,會換方案的原因是因為我覺得算起來,以在台北找到工作的前提下,B 方案會比較划算,所以仍然可以將我視為一個非本科轉職者。


課程結束之後

我最後大概是在第二十五週完成課程的,雖然在第十九週有寫了大致的 user story,也畫了 wireframe,但大致上 side project 是在課程完成之後才開始做的,和其他同學相比應該是晚了一點。

關於 side project 的題目,其實在交報名信的時候就想過了,當時是打算做醫院的病歷管理系統,或是棒球網站,雖然到了十九週的時候有猶豫了一下,想說會不會換題目,可以比較展現技術,但最後還是照原訂計畫。

我覺得如果你打算要在求職時端出 side project 的話,不妨可以趁課程初期提早規劃,尤其是在職轉職的人更是,否則難保你之後焦頭爛額沒有時間,或是可以找隊伍加入也是一個不錯的選擇。

當初沒有找人一起做 side project,主要原因是因為我時間不夠,當時做專案的團隊大部分都是和學習 react 同步進行的,唸書寫作業已經佔掉我大部分時間了,除非晚上不睡不然應該很難一起合作,所以只好作罷,這是在職協作會碰到的問題,事前要好好想清楚。

我的 side project 是做一個台灣職棒的官網,由於中職官方沒有提供 API,所以我還另外寫了爬蟲去爬資料,整理過後放到我的資料庫,後端做出 API 後提供前端使用,因為官網的資料實在太髒了,所以爬蟲花了我滿多時間在整理資料的,有機會再寫一篇我在實作時碰到的坎。

就這樣前前後後大概花了三週的時間,把一個有中英文化的官網架起來了,陸續也補上了明暗模式和登入機制,雖然還有超多地方可以加強跟擴充的,但當時我給自己設一個 deadline,就算還沒完成也要先稍微停手開始求職,畢竟不要忘記你的主要目標是求職而不是做專案。

在自己做專案的時候,的確會有一些問題,像是遇到問題時沒辦法討論,無法提早接觸協作可能會碰到的問題,以及思考比較單向等;但其實好處也不少,像是當我一個人一條龍把網站架起來的時候,那種成就感真的溢於言表,且因為沒有分工問題,也不用討論,所以效率上會比較好,這些都可以考慮的點。

另外,很幸運的是,我竟然釣到了另一個做台灣棒球遊戲的 co-founder 來回我的第十九週的 PR,真的讓我又驚又喜,也讓我覺得還好我最後有堅持做這個題目,我想這就是工程師社群的力量吧。

所以我覺得不論你最後有沒有做 side project,都可以持續思考自己想要解決的事情,並嘗試利用程式去解決它,這就是軟體工程師的價值所在吧。


全職求職

前面有提到我做 side project 大概花了三個禮拜的時間,為了之後能夠專心準備求職,我在做專案的前期也同步提了離職。

因此在正式離開時,我已完成專案、履歷的初版,原本以為我會有超多時間,順利找到工作,過著幸福快樂的日子。

但我錯了,我變得效率極差。

雖然每天多了 8~9 個小時的時間,但不知道是不是還沈浸在剛離職的氛圍中,整個人懶懶的,覺得還有很多時間所以一直上 yt 看廢片、聽 podcast、玩手遊,最後甚至還去投資了美股。雖然還是有陸續在投遞履歷和準備面試題,但效率就是很差,一直到第一家公司聯絡我才又振作起來。

一個維持了半年的以上的作息突然被改變,要重新建立,是需要一點時間的。雖然可能會面臨一些陣痛期,但我仍覺得全職去準備求職是需要的,至少對我來說,我有更多的時間可以複習技術題,在面試時間的彈性上也會更好。

回頭談談求職這件事。

我會說,每一次面試題目的準備,都像是對自己人生的回顧。向下不斷挖掘自己,喚醒曾經學過的知識,透過每一次面試結束後的紀錄、檢討,了解到自己的不足,並且持續進步,雖然過程是很耗費精神體力的,但這一切會以另一種方式回到你身上。

相信網路上已經有很多面試的準備方法,胡立也在影片中講了很多實用的技巧,所以就針對我在面試中遇到的,不管是問題或是經驗來分享:

每一次的面試檢討都很重要

在每次的面試結束之後,我一定會馬上找個地方把剛剛所有記得的資訊記錄下來,反正不管怎樣就先記下來就對了。

考題我一定會把它搞懂,被問到不會的東西或當場忘記我覺得都很正常,但如果同樣的題目出現第二次你卻沒有把握到,不覺得很漚嗎?

記錄下來還有一個很重要的功能,有時候公司面試完,下一次聯絡你已經是一個月以後的事了,如果你無法天賦異稟的記得這家公司用到的技術、人員的配置的話,還是乖乖地記下來吧,這對於到時候選擇 offer 會有很棒的幫助。

第一次視訊&英文面試

視訊面試是我沒有過的經驗,但也不會太緊張,就把它當作一般面試只是透過電腦螢幕就好了。

至於英文面試就稍微小緊張,上一次講這麼久英文應該是前年在美加自助的時候了,但所幸面試官不嫌棄我的爛英文,後面也盡力把我會的東西都講出來,也有拿到 offer 算是順利通過吧!未來如果有有機會,我也很想再試試看自己有沒有能耐可以應付國外的工作,畢竟這算是人生目標之一。

第一個 offer

我的心態開始比較穩定,應該算是拿到第一個 offer 之後吧。

雖然這個 offer 的條件真的滿不怎麼樣的,但我很感謝他的出現,他消除了我大半的自我懷疑,因此我會覺得如果可以的話,盡快拿到第一個 offer 會是一件滿重要的事。

面試官的建議

雖然我最後只有面試六間,樣本數還不多,但就我碰到的面試官給的建議讓大家參考看看:

  • 給我的建議

    • 覺得寫筆記滿不錯的,但也表示看過很多人的筆記,若之後能做出差異化,寫出自己的風格會更好。
    • 看了我的 side project 覺得是想要解決一些問題的,他覺得這很好,因此決定邀請面試。並且我當場也和他討論了一些目前碰到的問題,面試後他也有寄一些參考資料給我。
  • 給課程的建議

    • 對於課程的交作業流程採用 git workflow 表示讚賞。
    • 對於我知道 scrum, sprint 表示讚賞。

所以我的結論會是,每一週學的東西都是重要的,一些細小的地方說不定就會是你勝出的關鍵。另外,關於筆記和專案,我覺得並不是必須的,這不是入場券,只是如果有做的話,建議可以多做出差異性,或是試圖解決一些事情,這都可以讓你從其他面試者中跳出來,面試時也比較多東西可以聊。

可以讓我想一下嗎

關於得到 offer 之後可以思考多久,這是我這兩個禮拜最大的難題。

會有這個煩惱代表你同時間會有多個 offer 在選擇;或是你拿到 offer 了,但是有其他的機會還在等結果。

到處問了 huli, clay,還有其他的同學和朋友,並且在自己思考之後得到的結論就是,找工作跟愛情真的有 87 分像,對的時間錯的人,錯的時間對的人。

能做的事大概就是,盡量爭取一至兩週的時間考慮(當然能長則長拉,但實務面上很難),可以做表比較各 offer 的優缺點,並且思考一下你在意的點是什麼,是薪水?有沒有人可以討論?使用的技術?工作型態?

或是,如果覺得你目前面試狀況不錯,時間上也允許,就繼續丟一些你喜歡的職缺吧,不一定一定要糾結在這些 offer 上也行,建議利用空擋時間就可以加減想一下這些問題,才不會像我一樣突然到了要抉擇的時候才開始想。

最後也要感謝胡立在最後當軍師,給了我不少建議,也成功喊到我認為不錯的薪水,雖然我因為一些原因最後選擇去了其他地方,但這個經驗還是十分寶貴,也深刻體會到談判確實是一門學問。


後記

在準備面試題目時,有一個很常看到的問題是這麼說的

你覺得你三到五年後會在哪裡?

這是個問題,同時也不是個問題,經過出社會這些年的體驗後我會覺得,稍微規劃一個目標,並且努力的去接近他,不要埋頭苦幹,時不時抬頭起來看看自己看看這世界,逐步去修正這個目標,不要放棄好奇心,保持對於生活的熱情,並且持續去尋找你的所好。

我很喜歡呱吉說的:
『人生沒有一條路是白走的,沒有什麼選擇一定是錯的,而且砍掉重練的代價也沒有你想像的那麼高。無論你想要做什麼,只要你有興趣、有熱情你就應該要嘗試看看,因為不論何時你都有機會重來,而且這些重來的事情都會在你意想不到的時候給你重要的幫助 。』

僅以此心得,獻給同在人生道路上努力的大家

就像艾爾文團長常說的,前進吧!你各位

學生心得:huiming

個人背景

中興動物科學所畢業 (俗稱畜產),之前沒有任何程式相關經驗,最早開始學程式是在 Hahow 上買的互動網頁設計,當時還在唸研究所,在實驗室空閒的時候就會打開課程,跟著哲宇一步一步刻出網頁,當下的感覺還不錯。

會知道 Huli 是在 Hahow 有看到他的 coding 火球術課程,之後在跟朋友聊天講到了 Lidemy,回家一查發現就是 Huli 在經營的,也是從那時開始關注程式導師計劃。

一直到我畢業後在食品原料公司做了一年研究員,覺得無法適應傳產的職場風氣,決定離職 (2020 2 月),離職後,因為有看到不會再開第四期的消息,原本想轉往野外調查相關的工作,試著投過一間但被婉拒。剛好沒過多久,看到第四期要開!下定了決心要參加,於是開始看 [ALG101] 先別急著寫 leetcode 學 JS 解題、寄報名信,也很幸運有錄取,接著開始了工程師的轉職之路。

對課程的期待

其實也沒什麼特別期待,就是期許自己能在跟完課程以後,有學到足夠的技術、出去面試、找到工作而已,這也是這個計劃中相當基本的目標,所以就全心地把自己投入到課程中,跟著進度走。

到課程後期的反思就是,只依靠課程給你的東西是不夠的,所以有開始轉變想法,慢慢地認為課程只是輔助,真正要學到東西還是要靠自己,翻文件、查資料的頻率蠻得很高,在做 final project 的時候特別有感覺,也會更有成就感。

學習狀況

整個課程期間我都是在家全職學習,雖然要去小樹屋也不算很遠,有試著帶小筆電去過一次小樹屋,覺得大家一起認真的感覺還不錯,但我主力電腦是桌電,也比較習慣雙螢幕的配置,所以後來都沒去了。

在家學習的好處就是絕對的自由、也不用出門人擠人,同時也是壞處,變成專注學習與休閒娛樂的空間綁在一起,看課程看一看很容易變成在打 game、看 YT 或倒在床上滑手機,其實還蠻需要自制力的,像我就覺得我的自制力不是很好。

進度方面 0-8 週都有準時完成,第 9 週開始落後,之後大約都是落後 1-2 週的進度在跟課,後面還有跳週的情況,作業也因此沒有全部寫完,沒完成的進度如下:

  • 第 18 週 => 原本想把作業寫完,但寫到一半發現進度落後太多,便放棄不寫了
  • 第 19 週 => 有看課程影片,但沒寫作業
  • 第 20 週 => Lazy hackthon 沒做,跳過
  • 第 23 週 & 第 24 週 => 只看了一些就先去趕 final project,算是跳過

這個完成度大概像是把必修都俢完了,但選修只修一半的感覺,在求職時並不感覺有什麼影響 (前端也許會需要 redux)。

期末專案

在第 19 週時 (當時進度在第 17 週) 我找了隊友來做 final project,前後包含初期規劃大約花了 2 個月完成,自己是覺得拖得有點久,主要是因為第一次規劃資料庫,過程中發現某個地方不太對,就需要俢改重建,套件的使用也要時間摸熟,還有一點是開發流程並不嚴謹,測試必須手動測試,每次看一看也是不少時間。不過做完之後得到的成就感滿滿,也額外學到課程中沒教的東西。

有一個專案在面試時幫助我不少,很多問題都是從專案延伸,確認到底是不是你本人寫的,或是測試你如何解決可能會遇到的問題,基本上對自己的專案夠了解都能答得出來,有些面試官甚至會問套件怎麼用,套件產生的程式碼在做什麼,所以對專案中有用到的套件也要有基本的理解會比較好。

求職方向

當初在寫 final project 時抱著好玩的心態自告奮勇說要寫後端,寫一寫覺得小有心得,就往後端的方向找工作了。

投履歷與面試的一些數字如下:

投遞平台 公司數量 面試邀約
104 46 8
cakeresume 11 1
yourator 8 0

最後拿到 3 個 offer,區間在 46-52k 之間。

面試的準備與前端的同學差不多,履歷寫上 skills、放專案介紹、過去的經歷,不過是以後端為主。

自我檢討

要說自己在學習中需要改進的部分,大概有以下幾點:

  1. 看課程容易分心
  2. 學習時間不規律

關於第一點,看課程影片時蠻容易分心的,有可能是因為一邊看一邊寫筆記的關係,當下只能記下指令但沒記進腦袋裡,結果回頭看筆記會不知道自己在寫尛... 也會因為這樣頻繁地切換工作狀態導致注意力發散,很容易就需要跑去看 YT 或 FB 來放鬆,一放鬆就會不知不覺花掉很多時間QQ

面對這樣的自己,當初也在考慮要不要乾脆帶小筆電去小樹屋,大家一起認真,至少能保證學習的時數,後來是因為很討厭出門而作罷。

但是我有發現如果不是在看課,是在寫作業的話,就很容易進入狀態,像是寫專案的時候常常一坐就是一整天,刷牙或上廁所的時候也會一直在想這些機X的 bug 到底怎麼解,事後回想當初怎麼解的也會因此更為印象深刻,由此體會到學習不是用看就會的,如果沒有認真實地摸索過,真的不會記進心裡,也容易忘記。

所以後來的模式變成一定要跟著課程實作,筆記就記一些較重要的記憶點就好,事後有空再來重整,把流水帳整理成有順序邏輯的筆記。

第二點,就是太自由的缺點,坐息大致上是跟著生理時鐘在走的,餓了吃、累了睡,身體的狀態也不是每天都一樣,所以這樣其實蠻不好的,應該規劃每日用於專注與放鬆的時間,該認真就認真,該休息就休息。

對課程的建議

首先是課程中雖然有提到 RESTful API 的概念,但沒有實作作業,也許是作業規模不夠大,將來課程如果有前後端分支,也許可以讓同學分組寫作業,這樣課程結束就算沒做 final project 也多少有跟其他人協作的經驗。

另外面試時常被問到是怎麼跟前端合作的,對於開發流程這塊也許可以著墨在前後端如何溝通的細節,如何寫文件、如何前後端獨立測試等等,這樣一來就可以各自獨立開發,最後整合在一起,就不會有進度上的相依性。

總結

很開心自己有勇敢踏出這一步,從一個零經驗的新手,花了將近一年時間學習寫程式、出去面試,甚至有 offer 可以挑,做的產品也符合我的興趣,真的非常開心。

也要謝謝家人與女友的支持,願意讓我待業一年、放棄花好幾年讀的專業,走一條不確定會不會成功的路,他們的信任讓我在學習時不致於壓力太大。也謝謝 Huli 與這個計劃,學得越多越感到自己的不足,但我已經學會如何掌握手中的釣竿,可以釣自己想吃的魚了XD

學生心得:YSKuo

同步發佈於個人 Medium 半年學習成為前端工程師,不過這邊的內容稍有不同。

前言

按程式導師計畫的慣例,只要是買斷方案的學生,結業心得應該會被標上 工程師加強班,但其實我也算是無相關經驗轉職的,只是付費方式選擇買斷方案而已。

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

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

按慣例(?,先來首歌吧
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,覺得最差也不過是現在找不到,過農曆年後應該就釋出一堆職缺,到時再來挑職缺也不嫌晚。

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


想給 MTR04 的話

首先,謝謝 Huli、助教以及同學們,這段學習的時光雖然多半是自己奮鬥,但知道有人和自己走在一起的感覺讓心理更踏實,因為知道自己有困難的話一定找得到人協助。

課程建議

針對課程的建議,覺得可以在教學影片附上範例原始碼(起始檔案和成品)。我知道有些有附上成品,也有些本來就是從零開始手把手教的,但部分內容還是滿希望有原始碼,會這樣建議是之前看 Udemy 的經驗。有提供起始檔案的話,方便學生知道自己的起始點和老師一樣,尤其像 MTR04 後期有些課程是延續前面章節繼續做的,感覺有提供檔案的話就更方便了。

另外,我自己回想起來真的讓我感覺卡關很久的就是 伺服器與網站部署現代後端開發,後端那部分先不說了畢竟前面說過我直接跳過了;伺服器與網站部署 則是在課綱上有提到希望學生自己查資料,算是訓練學生自學的能力,但我過完這週之後,即使有看參考資料還是對部署一頭霧水,我感覺這東西本來就比較難懂,自己查資料又更沒方向。

另外,其實 Huli 自己也有提到,之後可能多加強寫測試這一塊,我覺得這部分應該滿不錯的,因為看到滿多職缺上面有寫應徵者懂這塊會加分,只是學生自己也要視能力而決定是否要投資時間在上面,如果其他更基礎的東西都沒顧到,那會寫一點測試可能對求職也沒太大幫助。

其他部分我覺得安排得都不錯,就我自己在這一段學習經歷來說,沒有遇到其他撞牆很久的情況。挑戰題的安排也很不錯,雖然很多我略過,但最近開始工作就有遇到挑戰題提過的 shell script 還有 docker。


結語

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

放在文章開頭的歌 Livin' On A Prayer 是一首勵志歌

Ooh, we've got to hold on, ready or not
You live for the fight when it's all that you've got

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。

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

學生心得:oack7426

前言

覺得跟課失敗的案例也很值得分享,所以我來了XD

個人背景

在上 Huli 課程前就已經是某公司的前端小肉腳,一人前端成長有限所以進公司到現在兩年多陸續都有在外頭上課惡補,但發現學來學去技術也沒啥成長只多背幾個語法或是懂用一些前端框架的皮毛但實際要運用在公司專案就心有餘而力不足。

跟課狀況

只能用慘烈來形容,本來想說自己好歹懂點皮毛了雖然一週沒法生出 40hr 但好歹一週可以生出個 10hr - 20hr 跟課不是問題。

結果跟到 week8 就宣布放棄去安養身體。

失敗原因分析

太過低估課程強度,也太樂觀的規劃自己的生活。

2020 年安排了以下事項

  • 創立個人手作品牌
  • 每週一次諮商
  • 每週一次縫紉課
  • 每月的一個週末回老家
  • 公司兩場活動的主辦
  • 下略各種私事...

結果是大爆死也蠻不意外。

跟課失敗後的成果

欸?你們一定想說跟課失敗怎麼還會有成果呢?雖然超早期就脫隊了,但短時間的 Huli 高壓衝刺班還是帶來不小的幫助,已經有能力在公司慢慢導入前後端分離,技術的成長也是大家有目共睹,績效也是有史以來最高分 (要是病假能少請點就更好了)

要是跟第五期的話...

目前有打算直接跟第五期,也不會耍白痴排那麼多事...
但不強求跟完,跟到哪算到哪吧~畢竟有工作的人時間劣勢就是擺在那,第五期跟不完再砸錢求 Huli 讓我上第N期直到能順利跟完的那一天或是在對外找其他資源...對於能否跟完課程這件事蠻看得開的,畢竟在目前的人生階段還有很多除了前端以外的目標,就只能拉比別人更長的時間去達成。

給下一期同學建言

要上課就請當成考公職或考大學一樣去規劃,然後有工作在身的人不要太過於無視身體發出的警訊,跟不上就算了慢慢來就好,工作或私事太多排不開就不要勉強跟課。

學生心得: ruofan

背景

在傳產做了兩年多的業務助理,工作期間透過參加一些社群活動觸發了對於網頁設計的興趣。
2020年算是一個轉折點,原本離職後想先去澳洲打工度假一年,因為疫情的關係提早回台灣,同時也在medium發現了第四期的計畫即將展開。

在報名計畫之前,先在hahow上學習網頁程式入門 (HTML/CSS/JS),讓自己慢慢調整在家自學的狀態。
回想那時在著手寫報名信的心情,真的是既緊張又期待呢!
Scratch做了四天左右,實作過程不斷的去摸索與思考怎麼讓這麼簡單的遊戲至少不要太乏味XD
codewar的部分一開始真的沒頭緒,從討論區看其他人怎麼思考解法去探索的。
收到報名錄取的通知信時的心情真的超興奮,一方面是很感謝能夠有這樣的機會學習,另一方面是期許未來能夠在職涯上有不同的發展。

感謝家人的支持與鼓勵,讓我可以全心好好的學習。

課程前期

這段期間的作息相當規律,大多在傍晚時會督促自己暫時離開電腦一下下去慢跑。其餘時間都是在看課程影片,做筆記跟實作作業。
遇到不知道如何解決的問題時,會上slack找同學討論,過程中都會讓我發現到自己沒有看到的思考角度,真的很感謝能有同學們一起努力!

課程後期

這段期間有一度因為拖延症的關係delay課程進度,蠻感謝那時老師每週末的隨意聊,有時給我很大的鼓勵又或是給我其他的思考角度讓我反省自己的學習狀態。

專案時期

真的很幸運能夠有機會參與到裕翔發想的專案,能夠和這麼優秀跟nice的組員們合作真的讓我非常感謝!過程中從他們身上學習到非常多。
專案實作心得

求職時期

時程:從專案結束後開始,約歷時1個月
履歷:使用canva製作 全英版本
面試題準備:匯整題目在notion,通勤時可以用手機app複習
履歷投遞:海投 約一百多間
管道:104, cakeresume, yourator
有進入面試階段的公司:14間

感謝Huli在INT101提供的求職tips,還有為期兩週在Line群練習口說,讓我能夠知道可以從哪些面向著手準備。
一開始面試的前三間,都表現得蠻緊張的,也相對會有比較高的得失心,也因為這樣很容易失常。透過每一次面試後的反思,一步一步調整自己的心態還有補強面試時被問到不會或是不熟悉的題目,漸漸的在後續的面試上比較不會那麼緊張了。
感謝一起協作過專案的組員們在求職時期能夠一起練習面試題目跟分享很多學習上的資訊,幫助我補強面試題之外也讓我知道自己還有哪些地方可以再加深學習。
最後再次感謝Huli在面試階段的幫助及期末實體聚會上學長姐們的勉勵,不論是面試技巧或是自己的心態調整都讓我獲益良多。

回顧與總結

在學習過程中,有時會看看學習系統上其他同學的每日進度,看著同學們也都正在努力中,也會策發自己要繼續加油,因此非常感謝有進度系統的存在。
其他讓我印象深刻的是複習週時的小遊戲,闖關的過程自己覺得非常有趣,很感謝老師與助教的用心製作,讓學習過程增添了趣味。
還有每一週的自我檢測,有時自己學習的過程可能漏了一些東西,透過檢測可以去檢討自己學到了什麼,還有哪些不熟悉的地方,這部分對我也很有幫助。

能夠參加這個計畫是我在2020其中一個很感謝的事,因為也曾接觸過其他線上平台的課程,但是因為網路上資源很多,以非本科的我來說東看一些西看一些,其實很容易感到混亂或是因為沒有清楚的脈絡而感到複雜。
課程中的課綱這樣的學習架構,真的很豐富!認識了整個脈絡後,後續自己想再加深各別的學習上,蠻有幫助的。 :)

學生心得:Wozski

回饋筆記(A ->B 方案)

[關於我]

我是一位純中文系學士畢業,當初只是單純喜歡看書才選擇中文系,在大學時期發現自己其實沒有那麼喜歡中文系的學科,反而當時對經濟更加有興趣,常常在課堂上就讀起自己有興趣的書籍,就是這樣的一個人,所以才會跑來寫程式.
我遇到蠻多人對中文系的印象大概率就是:『要去當學校老師、或是公務員』之類,但後來我發現這兩個選項都不是特別感興趣,所以我選擇去學英文然後跑去澳洲打工度假,我認為生而為人,只有自己想不想做,而不是別人說你適合什麼就去做什麼,所以後來學習程式對我來說也是一個充滿新奇的挑戰,畢竟我就是一個喜歡學習和接觸新領域的人。

[關於課程和適合怎樣的人]

其他有很多同學都有分享過課程,而且我相信他們會講的更詳細更好。
我認為只要你對程式有興趣都可以試試接觸這個課程,現在也有訂閱的方式觀看影片,所以我認為對於剛接觸的人,這邊提供了完整的學習路徑和內容。

再來如果是想加入程式導師計畫,並且完整走完(這不是一件容易的事情),我認為全職學習會是最好,畢竟每個人學習曲線和所需要的時間不太一樣,
有些人可以邊做工作邊趕上進度學習,但像我自己就沒辦法同時做這兩件事,所以我在課程開始後兩個月就把工作辭掉在家學習。
畢竟要從完全不會到可以出去找工作的階段,是一段蠻長的路,所以我認為學程式適合任何人,但是參加程式導師計畫未必適合任何人,但也不是一定要參加程式導師計畫才能找到工作,只能說程式導師計畫是更有效率的一條路,但是如果是靠自己看影片做專案然後去丟履歷,我相信這個路也是行的通,畢竟人生就像程式一樣,永遠不會只有一種解法。

關於課程

第零週:心態培養

事實上我當時直接跳過這週,那時候希望能夠比進度快一週到兩週,所以那時候已經開始學習第一週還第二週的內容,但是經過了一年後回頭看,我認爲這週學習的東西非常重要。
我相信任何再難的技術,經過系統化的訓練和訓練時間的疊加,最後都能從不熟到上手最後精通,但是心態如果沒有意識到自己的想法或是定期審視自己,人就會一直都會照著原本模式繼續迴圈下去。
如果寫程式是一種工具,那人擔任的角色就是操控工具的位置,即便工具再怎麼方便和華麗,最後還是要看拿工具的人到底想要拿工具去做什麼。
所以如果真的要我選,我認為這週是整個課程最重要的一週之一,並且即便完成課程後也是偶爾回來看一下。

第一週-第五週

剛開始的 CMD 課程我很喜歡,還記得那時候為了熟悉 CMD 用法,強迫自己只能使用指令操作電腦,操作的時候有種很專業的感覺,也因為這週的訓練,之後使用虛擬機進行操作時,也不會覺得太困難。
Git 真是一個很好用的東西,還有 Github 所謂工程師的最大交友平台(?
JS 的基本語法和程式的思維、網路的基本概念,這些都是以前完全沒有接觸過或是去思考的東西,我很喜歡完全沒有接觸過的新知識!

第六週-第十週

網頁三大神器 - HTML、CSS、JavaScript,一個網站從無到有,如何做互動,只有前端沒有資料交換又會太空虛,所以如何使用 PHP 架設資料庫並串接 API 從後端達成交換資料,完成一個基本網站的 CRUD 功能,也是這四週學習內容。

第十一週-第十五週

資訊安全週,這週的內容非常的重要,資訊安全的重要程度我想並不需要強調,即便你自已架設的網站,你也不會想讓別人想進就進,更何況是商業化的產品,資安如果有漏洞,可能會導致會員資料外洩延伸出法律責任等。

如何部署網站,把以前寫的東西真正的放在網路上,還記得那時候的我把自己作品分享給朋友的成就感,不亞於第一次用 JS 寫了一串迴圈後能正常顯示。(在這週漸漸沒辦法跟上進度)

第十六週-第二十週

基本上我這幾週一直還沒有正式學習,只有跳著看並且作業也都沒有正式繳交。

第二十一週-第二十四週

React,我在這卡了快兩個月特別是五子棋,但是其實最主要卡的原因是當時生活也是有很多要忙碌的東西,導致那時候學習狀況非常差,身心疲累,但是又很想快點結束,導致一直卡一直卡,到最後反而陷入一個很負面的迴圈,等意識到這個狀況時,就先停了一週到兩週,讓自己把步調重新調整好再繼續前進,狀況就慢慢改善了。

課程結束後的反省和整理

課程結束後我做了這半年時間的一些整理以及為何沒有能在期間內完成學習課程的反思。主要有下列幾點:

  1. 因為前面沒有跟上進度導致進度落後時的焦慮
  2. 期間找工作的焦慮
  3. 當時候搬新家對新環境的不適應
  4. 個人私事的心情影響

如果要我重新開始這個課程,我會避免在這期間換一個新環境,畢竟一個新習慣需要三週時間培養,再來就是如果我這週進度落後我會直接 Skip 繼續下一週的內容(這個是我思考後覺得應該比較好的辦法,但是沒有實際測試過),等之後再回來補,再來就是環境如果不是自己熟悉的地方,還需要額外花心力去熟悉,等於分了一部份的注意力,特別對我這種需要完全把心力放在課程上才能跟上進度的人來說,分心就是完全導致我進度落後的主要原因之一,再來就是私事的影響心裡狀況,不過這就很難避免,因為有些時候不是你不想事情就不會來,這是人生有趣的地方,也是人生很機車的地方(笑,總結就是

  1. 維持在熟悉的環境, 持續 routine 該學習就學習,該休息就休息,農兵農到可以出大裝的時候。
  2. 工作是一定找得到,只要你肯持續努力並且進步,特別是因為疫情科技業這兩年向上成長是大家有目共睹的,所以不用擔心自己吃不到這塊餅,只是時間長短的問題。
  3. 相信自己這半年的學習的內容,可以對自己有自信一點,就算對自己沒自信,也對 Huil 的教材有自信一點,即便面試遇到從來沒遇過的問題或狀況,不用灰心,保持學習的心態去請教,即便這份 offer 沒有拿到,但是你也從面試中得到了新的知識。
  4. 這個社群是你堅強的後盾,在裡面一起學習的朋友是你未來的人脈,即便你到了新的地方,這地方一直都還會在,除非哪天 Huil 表示不幹了(?,但即便如此你認識的人也不會就此消失,像 Clay、Minw 助教等等(?

關於面試的心路歷程

總共投過 519 家,面試過 10 家公司。終於在最後找到一家願意收留我的公司(?。
從一月份開始投履歷,那時候還沒完成課程(雖然到今天我還是沒有完成全部的課程),就開始投履歷了,印象很深刻第一家面試,就在租屋處附近,那時候面試還用白板分享了我很多年前,第一次使用 Excel 寫關於程式邏輯的故事,除了因為是第一家面試印象深刻外,其實還是有一些其他原因,讓我在這留個伏筆。
當然第一家面試沒有過,不然也不會有後面的故事,之後不斷地投、不斷地被拒絕,心情從一開始的自信到了之後不確定,
心裡慢慢的有了疑問,『自己到底是不是自己有資格做這種工』、『是不是因為我不是本科系?』,『我真的能找到這樣的工作嗎?』
心中一直不斷的出現懷疑自己聲音,當然這些聲音通常是假的,除非連你自己都相信了這樣的聲音,最後才會變成現實。
我相信 Huil 的課程,也相信這個世界總會有地方會需要,至今我學習的所有知識以及我這個人,因為我這樣堅信著,並且繼續的不斷面試和反省,最後才能真正找到一間公司願意錄取我(雖然這是以結果論來說,但也是因為我願意繼續嘗試和堅持,最後才能到達我想要的未來)
現在回頭看那時候的我,其實身心俱疲,除了半年的學習課程壓力,那時候的我也和交往多年的女友分開、家裡的因素..等,大大小小的壓力參雜在一起。讓我很難維持之前學習的品質,搬到新環境時,剛開始連基本生活都有點困難,後來是在閱讀一本一本書以及一個和一個的演講,還有和很多不同的人交談,以及持續的**,讓我成功度過了這段非常低潮的時候。
最後我終於得到了一家 offer ,而且很有趣的是,這家公司就是在我第一次面試的樓上,不是電梯差一層那種,而是那種樓中樓的樓上,因為兩家都是小工作室,所以他們一起租了一間公寓分擔房租,讓我覺得緣份真是奇妙。
試用期 37000 三個月,公司也是做遊戲相關的代理(非博弈),因為自己很喜歡玩遊戲,當時覺得這家公司真是太棒了。

第一份工作和離開

很不幸的是第一份工作剛好遇到台北疫情爆發(6/1)的時候,所以也就開始了第一次遠端工作,遠端工作一開始感覺很棒,但我後來回頭看發現,遠端真的不適合新人,特別是完全沒有經驗的那種新人,首先溝通是一個很大的問題,很簡單的問題都需要花比平常更多時間做線上溝通,再來就是如果上級交代的東西如果不是太明確,就要一直不斷地詢問,如果上級沒辦法好好的引導或是給出更明確的東西,會導致資料太廣和太雜,不知道自己花了大量時間是否為上級要的東西。
再來因為是線上,有時候也不一定能立即得到答覆,在這樣的狀況工作了兩個月後,發現公司方向主要業務為後端 Server 的部分,自己目前還是希望能夠在前端的方向繼續前進,但前端部分公司沒有可以支援的資源後,決定離開,所以提出離職。

總結以及心態轉變

這個課程帶給我的不只有學習到如何寫程式,也讓我用另一種方式去思考和角度去拆解、找出問題、最後解決問題,最後即便我不寫程式了(但應該是不會,畢竟真的很有趣)這些方法都能套用到生活上的各個層面。

在打這篇時其實一直猶豫自己是不是應該發出來,自己不夠格?自己的經驗是不是有用?
也是會有一些負面聲音告訴自己不夠格做這件事情,後來某天回去看到老師寫的文章的一句話,『沒有經驗是沒有價值的』(也答應 Huil 一定會把文章發出來 XD)。
後來轉了一個方面想,這個心得文如果五年後的自己看到,絕對又是另一個完全不同的感觸,正是因為現在的我的努力和不斷嘗試,未來的我才能回收成果,相信未來的自己看到後會更珍惜當下的所有,然後繼續為更遠的未來努力,達成一個正向的迴圈。

如果這篇心得文能夠幫助上一些跟我有類似困難的人,那很好,如果沒有也沒關係。
因為未來的我一定會很感激自己有留下這篇文章,記錄了曾經的自己努力、失敗、爭扎、以及被質疑,但從來沒有想要放棄,我認為這樣的自己很棒而且我也為自己感到驕傲,而我也相信和我一起參加這課程所有人也都一樣的好。

如果你現在和曾經的我一樣掙扎、一樣自我懷疑或是被周遭的質疑聲,困擾者。
不用擔心,這些真的只是暫時的,真的過去了就好,因為我也是經歷過這些並且這樣走過來,只要你願意相信自己並且能夠清楚的看到未來的自己是什麼樣子,那你不是已經成為那個憧憬的自己,就是在成為的路上,這兩個選項看起來好像都蠻棒的(?。

最後我相信技術只要隨著時間累積和自我一點一點的努力,就會不斷的向上成長,最終達到自我理想的目標,相信在讀文章的各位還有我自己,都能走向自己理想的未來。
文章最後,想謝謝一路上幫助過自己的所有人,不論是親人還是因為課程上遇到的所有朋友、助教、老師(全部打出來如果有漏掉會對漏掉的人感到很抱歉)。
我始終相信科技不論怎麼進步,最後還是為人服務,而人一直都是最重要且無法被取代,這些因為課程而認識的所有人,才是我這次課程得到最重要且無法取代的寶物,謝謝大家,也謝謝自己。
最後拿這一句話勉勵自己:
君子曰:學不可以已。青,取之於藍,而青於藍;冰,水為之,而寒於水。-《荀子·勸學》

學生心得:nicolakacha

個人背景

法文系畢業,熱愛文學、電影、吉他和野生動物,認為知識的邊際可以是模糊的,渴望了解各種事物。報名程式導師計畫之前從事國外業務工作約兩年多,稍微碰過 HTML 和 CSS 切一些簡單的網頁,報名程式導師計畫之前自學 JavaScript 做了一些 LIOJ 和 Codewars 上的題目,除此之外沒有其他寫程式經驗。

報名動機

報名第四期程式導師計畫(後簡稱 MTR04)之前還報名過 AppWorks School,當初很用心準備了備審的資料和面試,但最後還是沒有錄取有點哀傷,於是報名 MTR04 時有稍微調整心態,那時決定就是給自己半年的時間自學 coding,無論 MTR04 有沒有錄取都不會影響自己接下來的這個計畫。所以還沒公布是否錄取 MTR04 的時候,其實就已經先離職了。

會選擇轉換跑道,以寫程式作為自己的下一段旅程,是因為想要做更有創造性、能自我實現的事。對我來說,網路是一個能承載著各種可能性及豐富體驗的載體,那時覺得如果能寫程式,也許就能開發出有趣、有用,甚至是有影嚮力的事物,以此作為參與這個世界的方式。然而更深層地挖掘,其實我覺得自己對寫程式本身的動機是稍嫌薄弱的,但它的可能性,它所能做到的事、以及開發者們正在做的事,這些對我來說都是閃閃發光的,並匯集成了讓我想要去嘗試的動機。

學習過程

對自己的認知是自學能力比較差,腳步也偏慢,從一開始就一直很焦慮自己就會很快被淘汰,同期的同學如果有翻過我的每日進度報告就會發現,我每週看到作業題目時都覺得:「自己這次真的做不出來了�,這週就是換我要被淘汰了吧 QAQ」。也是因為這樣,整個 MTR04 期間我一直都是用大量的時間和力氣去學習,才能很勉強且跌跌撞撞地跟上當週的進度。從 week1 到 week24,每週花在學習的時間大約是 70 小時,直到 week23 以前都有跟在當週進度上,之後因為同時跟課和做 final project 才落後一週。

MTR04 期間除了在學習系統上寫每日學習心得之外,也在 Notion 上做紀錄,每週定期回顧生活和學習狀態、並嘗試在下一週調整和改進。大約在 week 17 左右才進入學習狀態比較穩定的時期。

雖然一直是焦慮著的,但也會覺得自己做得很好的時候。這種焦慮與自信的學習狀態一直反覆、重疊,甚至直到課程最後,或可能到後來找工作的時候也還是這樣的。

學習狀態

在看課程影片和文件時,時常會覺得自己沒有學進去,寫作業的時候也總是從各種卡關開始,然後一邊寫 code 一邊查資料,慢慢把遇到的問題一一解決,隨著實作經驗越來越多,最後發現「哇,我真的都學進去了」,從而減輕)最初的焦慮感。

對我來說,寫程式從來不是一件容易的事,有人可能會說:「寫程式就是一直寫就對啦」,雖然可以理解成這是為了不要讓初學的學習者想太多,但我覺得也可能會讓學習者在遇到挫折時就開始自我懷疑。

我想說的是,學習新的技術,一開始看到陌生的語法和知識進入大腦,看不懂或覺得很難理解都是很正常的。但一旦認知或意識到「學習」這件事就是會經歷好幾輪「從一知半解到實作,從實作到多理解一點點」的過程,我想也許就能比較自在地容許自己的一知半解,並從每次的實作中學習,不害怕犯錯,也不害怕解決問題。

關於作業

第一週作業被改完的時候莫名很感動,當初在進度報告還特地寫下了這件事情,因為助教真的很認真地在看我的作業,就想要更認真地做好每一週的作業。

覺得計畫中每週的作業真的都恰到好處,很有挑戰性但也絕非完全不能完成。覺得最硬的 week17 作業,是在對 Express 和 Sequelize 只有很粗淺地吸收就要開始實作部落格,但事後覺得也是因為這份作業我才真正熟悉並能有能力寫 Express 和 Sequelize。

關於作業,現在回來看,我會想更關注自己在寫作業時的思路過程以及效率,而不是花大把的時間硬幹出看起來品質不錯的作業。因為面對真實寫扣的環境,時間絕對是有限的,在有限的時間內用最有效率的方式思考、搜索、並解決問題,本身就是寫程式非常重要的核心能力。

社群互動

雖然大多時候我更傾向一對一的關係和互動,但 MTR04 的社群也給了我很有力的支持,在學習系統中看每個同學的進度報告,讓我知道還有很多人和我一起努力著,review 同學們的作業來當作自己的複習時,透過觀摩同學們在同樣題目上的不同做法,或順手幫同學測試或抓蟲(?,時常會帶給我意想不到的收穫和啟發。

學習之外,也很感謝願意私訊我,和我抬槓喇賽的同學和助教,能認識這樣一群人是參加 MTR04 的過程中最驚喜的收穫。

Final Project

在找工作之前就能擁有與別人規劃、開發專案的經驗是很寶貴的,也因為有 Final Project,之後求職找工作的時候時常是可以拿來發揮的著力點。如果有機會的話會建議下一期的學生都盡量能組隊做一些 projects。

課程建議

對於 Huli 在課程總結中提到加強實作過程那段還蠻有感的,因為和 Huli 模擬面試 live coding 寫不出來的就是我 XD,其實自己大概蠻早就意識到自己在這方面的缺乏,但在課程中可能其實不知道怎麼練習才能讓自己變強,變得更有效率,會希望能在課程中加強這方面的啟發。

另外私心其實還蠻羨慕第三期的學生每個作業都能被 Huli 親自改到 XD,很希望除了助教們的批改之外,每個作業也都能獲得 Huli 的 review 和回饋,但如果學生一多的話這個建議好像不太實際。

求職狀況

求職的目標是開發流程完整、對個人能力能有成長性、且有資深工程師可以作為楷模的公司,偏好以 React 開發但不排斥 Vue。從一月多一直找到過年前,投遞超過 170 份履歷獲得 20 多次面試機會,赴約面試 18 間,錄取 5 間,平均薪水是 43k,關於求職的心得還有很多沒有理清楚的部份,之後會在 Medium 上另寫一篇。

寫在最後

一直拖延不知道怎麼總結我的課程心得,是因為到現在仍然會有自我懷疑、覺得自己是冒牌者的時刻,也會覺得能成功轉職可能只是因為面試官錯估我的真正實力。但我覺得就算抱著這樣忐忑的感覺繼續往前,也沒有什麼不好的,只要是做著自己喜歡的事就好。

學生心得:Rock070

介紹一下我自己

  • 23 歲
  • 非本科(2019 年於國貿系畢業)
  • Lidemy 4rd 學員(2020/06/12 - 2020/12/12)
  • 利用下班時間在職學習(朝九晚五、週休二日的飯店採購專員)

更詳細的背景介紹我在報名 Lidemy 第四期的時候有寫過,有興趣可以看看這篇: 22 歲這年的自我介紹及程式學習路程

報名前的能力

我在畢業後一直嘗試成為一名工程師,這邊是我用過的資源:

你可能會好奇,我為什麼要學那麼多程式語言,但我也不知道,當時的我並不知道。

盲目的嘗試各種程式語言

一開始我只是對軟體編寫有興趣,但我不知道要做什麼,是要做手機 APP or 桌面應用程式 or 網頁設計。也不知道什麼語言可以應用在哪些層面,例如:JavaScript 可以應用在開發網頁。

所以我只是先嘗試學習程式語言,先了解他的邏輯,與我能不能喜歡「寫程式」這件事情。

後來,我覺得對於一個要轉職的人來說,先了解自己是否喜歡寫程式,這件事是很重要的,你可以了解到,你未來的工作都是要面對這些程式碼,與不斷的 Bug,只要一個符號打錯,都會影響程式碼的執行,而工程師就必須要有耐心去解決每一個 Bug。

對我來說 Lidemy 程式導師實驗計畫先修課程:先別急著寫 leetcode 與課程頭幾週安排先學程式基礎,也是具有幫助學生了解自己,是否喜歡程式設計的意義的。

報名動機

因為在畢業後一直想成為一名網頁工程師,因為聽朋友推薦過 Huli 的課程,看過課程大綱後,覺得這是我成為工程師之前很需要具備的能力,所以在第三期結束後一直偷偷 Follow 第四期,報名消息釋出的時候,真的是很開心,趕緊得打開電腦準備自己的報名資料,很怕自己沒辦法搭上這班車。

報名成功跟課程開始前的準備

在 2020/05/01 時報名開始的時候,我就曾想過,我一邊要上班,一班要學習,一定會爆炸,第一是因為下班就很累了,學習效率會很低,第二是我認為自己的學習能力,一定沒辦法在課程預期的每周三十個小時內把課程學扎實,我需要更多的時間來學習。

所以一邊準備報名資料的同時,我花了 $2490 購買了[MTR01] 程式導師實驗計畫第一期課綱 - GitHub),進行先修,因為學習過 C 語言與曾接觸過 JS 的關係,所以我自認為我的程式有一定的基礎,所以我先跳過了程式基礎,一直上到後端的時候,第四期開始了。

現在想起來,那時候想法還蠻狂的XD

學習時間

我的工作是週一到週五 9:00 - 17:30,加上交通跟吃飯的時間,正確來說,我的學習時間是在:

  • 週一到週五:19:00 - 23:30,共 22.5 小時
  • 六日:9:00 - 12:00,13:30 - 18:00,19:00 - 22:00,共 10.5 小時

總共是 32.5 小時,而且是下班後完全學習,假日完全不出去放鬆的情況,我覺得是不可能完全達到的。

不參加聚會與停止健身

為了盡量湊滿學習時間,生活習慣上變化比較大的部分是這兩項:

  • 聚會:原本不定期每週會有朋友聚會,會影響學習時間的(例如整個下午)一律拒絕,並誠實告訴他們我正在前往轉職的路。

  • 健身:原本每週會選四天去健身房健身,每次 1.5 小時,縮減成一週一次,一次練全身,到後期乾脆不去了XD

舒適友善的學習

1. 課程進行完全遠端

這對我來說是很好的,因為我不用花費多餘的時間去交通,我只要下班,吃飽飯到咖啡廳就可以開始學習,

2. slack 即時發問與關心

就像 Line 一樣,有遇到任何問題,不管是課程上、技術上,老師都很鼓勵我們問出來,因為其一是你問的問題可能是別人也會遇到的,其二是日後有人遇到一樣的問題,可以到你的問答中找答案。

3. 學習系統網站每日心得、每週作業

這部分對我來說是整個課程最重要的部分,像日記一樣,想寫什麼就寫什麼,一點點也好,每天的學習心得,都可以讓我檢視自己的每日進度是否在線,是否狀況不好,更重要的是,他可以提醒我正在往前,我每天又離轉職成功,前進了多少(就算一點點也好)。

4. 鼓勵放自己假期

有時學習煩悶的時候,我們可以自己安排假期,小旅行也行,不碰課程的東西,好好的去玩,晚上回來,把玩的心得記錄下來,像日記一樣,例如:電影心得、台南遊...等等。

5. 不定期 Youtube 直播

不定期會有 Huli 的直播,有時會有助教一起,學員會即時提問,讓Huli 來回答,其實比我想像中還熱鬧,大家在轉職這條路上的熱情與想成功的心,是我一開始想像不到的,我想不到原來有這麼多,是和我一樣,一直埋頭在默默努力的人,雖然大家互不認識,但我真的感覺到了溫暖,我想這就是有共同目標的人相遇在一起的美好吧。

求職狀況

我在台中求職,2021/02/04 這天拿到 offer,這次我投了 63 間,回覆 4 間,面試 2 間,offer 1 間,老實說我的成績不是很好,可能是我太急了,也可能是過年前的面試職缺不多,也可能是我的履歷並不夠好,但我還是決定先去拿到 offer 的那間磨練經驗,日後再往更高的地方走。

總結

要成為一個產業的菜鳥,我還有很多需要學習,尤其軟體的產業日新月異,需勉勵自己不斷的嘗試與努力。
很高興參加這個課程,認識到了很多很棒的學員,也得到了很多豐富的資源,真心感謝 Huli!

學生心得:lauviah0622

前言

時間也是過得蠻快的,原先是打算找到工作之後再寫這份心得的的。一開始是覺得程式導師實驗計畫也算是個培訓課程,找到工作之後好像比較能得到一個成果的評斷,而且自己現在還在服役中。不過上面這些也只是拖延的理由。等到退伍還有大概兩個月,如果算上找到工作的話又要延後一個月了,到時候還對課程這段期間有沒有印象也不知道了。

但是在過完年會來發現說第五期要開始了(還有看到 Huli 提到希望在報名前寫完心得XD),自己覺得在第四期也算是收益良多,而且的確也想好好的整理還有反思一下上課的內容,這樣看來早點打一打也不錯。對抗拖延症的方法除了自己的調適,外力介入才是才是特效藥啊阿阿。

計畫開始之前

背景

提一下背景好像比較好作為參考。先來點和程式無關的,自己大學就讀的是稍有名氣的學店,讀了六年。就讀的科系上課內容蠻雜的,但是每個東西都教的非常淺,包含有設計、遊戲、3D、影片還有網頁之類的。因為上課有接觸,後來系上的讀書會學長也有分享一些和網頁相關的內容,覺得寫 code 還蠻有趣的?至少比起設計而言,但真正決定要投入是突然發現自己的學貸金額相當之可觀(六年乘上私立),就這樣跟著原本的方向走可能會餓死,所以在讀到第四年時,決定說投入前端這個領域。

不過因為離畢業還有一段時間,沒什麼危機感,所以一開始沒有很有系統的去學習,直到大學第五年(大三)才開始買一些課程跟課,然後到畢業前決定要報名程式導師計畫第四期。

對,所以在報名前我已經有一些基礎,當時的程度大概是可以用 react 搭配 Firebase 的 API 來做個畢業專題的小專案

報名

都已經可以做出專案了為什麼要浪費錢報名?有一個主要的原因是看到這篇,前端工程師的需要的技能很難有一個清楚的定義,看完這篇文章之後,自己很認同文章中的「基礎紮實的網頁前端工程師」,也體會到自己的基礎真的薄弱到不行,決定報名。

但報名過程比起其他同學有在心得中提到,看到第四期的報名資訊才報名自己的過程有點反過來。

自己在報名之前就有在看 Huli 的文章,也看過 MTR 一二三期的一些心得,在第四期報名開始之前就想要名這個計畫,但可惜的是第三期已經結束了,而且看起來似乎不會再開,心灰意冷之際也開始想說自己應該要另外找資源來補完這些基礎。

然後新的一期報名就開始了。

真的就是這麼的巧合喔,而且時間算一算剛好課程的時間在畢業與入伍的這段空窗期之間,當然是直接報下去阿。

不過也是這個原因,相較於其他同學壓力並沒有那麼大,一來是自己沒有課程上完就得立刻就業,二來已經有基礎了,最後是自己沒有正職的工作,一週 40 個小時對自己而言不是個問題。在跟課有時後在想,自己都覺得有點硬,卡了很長時間了,零基礎的人到底要怎麼跟課。

在這裡對零基礎轉職的同學獻上最大的 Respect 🙏

記得自己第一天就填寫報名表了。在寫報名信的時,JS 和 scratch 自己都有摸過,所以沒有太高的難度,比較難的是寫報名信,沒有產出文章的習慣,而且又很怕沒錄取,修修改改了很久,到好像前一個禮拜才寄出報名信,幸好最後錄取了。

覺得有一件需要提的事情是,自己報名的是 B 方案。一個考量是,自己課程上完就要入伍了,如果採 A 方案的話即使完成課程,也不可能找到工程師的工作,那也就代表完全免費(或者是義務役的薪水 * 1.5 倍?),對於 Huli 沒必要;再來是算一下之後發現 B 方案會比較便宜(不知道自己哪來的自信)。

但其實自己也是有跟著進度跑,而且心得也有每天交,還打了不少字。有個進度掛在那邊覺得比較有推力,而且也會督促自己不要太過完美主義,見好就收,繼續接下來的進度。

期許

原本的程度我想就已經足以找到一份工作了,基礎的部份其實也可以在工作之後慢慢補上,但覺得說與其從工作經驗中學習,有個課程能夠更快的的填完之前欠的坑。所以比起「找到一份工程師的工作並轉職成功」,「打好自己的基礎」比較貼近自己對於課程的期許。而且自己有個莫名的想法是:「其他從零開始的人都可以做完基本的作業了,那自己不是應該做的更多嗎?」

所以自己會希望把課綱的內容都盡量看完,作業的內容也做好做滿,包含挑戰題。不過自己也沒有完全做完就是了。


程式導師實驗計畫

覺得這個計畫本身可以分成兩個部份,一個是課綱:包含教材、作業(挑戰題),這些理所當然的是整個計畫的主軸;但其他支持課綱的部份我覺得也功不可沒,像是助教制度、學習系統、同學之間的交流,雖然這些部份不會帶給你成為工程師的直接幫助,不過這也是幫大家能夠在這漫漫的轉職長路能夠堅持下去的動力之一,而且我也蠻享受這個部份的 XD。

課綱

這部份的內容基本上是再回去看完每個複習週的心得,以及再次看過課綱,然後對比較有感覺的幾個禮拜可能會稍微提出來講一下。

week3 程式基礎

有稍微談一下測試相關的東西,記得好像是有哪幾種測試,還有一點的 Jest,不過後面似乎到 20 幾週 react 檔案架構才有提到,覺得中間可以適度的加一些簡單的測試,還有測試相關的概念?

還有有印象的是第一次用 eslint,這時候是第一次用這個東西,就遇到很多蠻麻煩的 case。不過後面專案會在其他地方開發然後搬進來教作業,後來有時候都會直接忽略 XD

week14 後端基礎 PHP 與 MySQL

比較特別的是碰了 PHP,對於學習後端我覺得從 PHP 下手是蠻正確的選擇,語言蠻簡單的,而且配合 apache 丟上去就可以跑了。不過也因為太方便了,後面剛開始用 nginx + express 有點搞不清楚做了哪些事情。現在看起來當時使用的 apache 充當了 http server (也就是 express,但底層應該是 node.js 的 API),並使用 php(對應到 JS 語言) 處理 request。nginx 則是當時 apache 能做到但沒用到的功能:反向代理。

week14 伺服器與網站部署

week14 是最地獄的兩週之一,另一週大概是 week18。

因為第一次碰 Linux,而且蠻多要設定的東西,雖然有影片帶著做,可是就是常常會有遇到很多問題。自己印象中有遇到的像是 防火牆沒開(可能是 ufw 或者是 AWS 的 SG)、SQL 的帳號權限、Linux 的資料夾權限這些。在想可以弄個 checklist,把一些 FAQ 寫下來做對照還有處理。不過 FAQ 的詳細程度可能是個問題,要抓到不會透露太多可是又可以給到方向的程度。

不過未來一定會遇到非常多這樣的問題,早點撞牆也是好事。

week16 JavaScript 核心與物件導向

這週有用 PHP 教到物件導向的東西。有提到說因為 JS 的物件導向不完整所以用 PHP 教,不過用 PHP 學了之後反而有點不知道 JS 裡面要怎麼用,不知道說 OOP 在 JS 上的一些應用情境之類的?

JS 基礎的部份覺得沒啥可以挑剔的,這部份應該是整個 MTR 的精華之一吧

week 18 現代後端開發(下)

自己在 week18 卡超級久,但主要的原因是自己硬要做購物車,想說這週的作業跟上一週的作業好像差不多,都是做後台,想挑戰一下,結果就爆了。

覺得在這個部份很吃事前的規劃,而不只是 coding 的能力,從業務邏輯開始,會影響到前端要怎麼設計,然後要開哪些 API。前面沒有規劃好就會需要花上非常多的時間,自己的這個部份真的很廢,有點不知道從和規劃起。

還有一個是,過去做的大多是單個小東西,這週要做的事情真的蠻多的,包含

  1. 做出後端 API
  2. 做出後台的前端,然後把 API 串在一起
  3. 整個各個分頁的 API 和頁面
  4. 最後還要部署

自己發現後面 3. 還有 4. 的問題比我想像的大,再加上說這是第一次遇到專案比較偏大規模的作業,所以又花很多時間,這兩週總共花了快要一個月來做(week19 ,week20 也都在做),結果還是沒做完。

或許讓大家先把 API 開好,再學著用 Postman 做一點檢查(我忘記課程裡面有沒有提到這個了),最後讓前端跟後端串起來,可能會比較沒有那麼陡峭。

week19 產品開發流程

這個是 4th 新增的內容,雖然課程內容不多但我覺得超棒,直接竄升心目中 MTR 精華之一。除了 coding 以外,也要解一下產品開發流程,不過覺得可以拉到 week 17, 18 之前,覺得整個 week17, week18 完成餐廳網站是一個比較大的作業,把 week 19 的內容拉到 week17 跟 week18 或許可以照個之前餐廳作業的輪廓試著寫一份 spec 還有開 ticket,不然 week19 直接幫自己的 final project 開需求其實有點茫然。

這樣還有一個好處是可以把 week17, 18 的作業分成多的個小部份,就像前面提到這兩週要做的事情其實不少,如果一起做會變成前端做做後端做做,整個開發流程就會有點亂,分成小部份慢慢完成可能會有信心許多。

week 21 ~ 24 React

這邊一起講,一個是後面沒有複習週所以沒有心得了,另一個是這邊基本上就是圍繞著 react 在跑。

這裡覺得可以多串一些 API,記得第一次在 react 串 API 的作業就是 week22 的改寫部落格(串自己做的登入 API)。可是同時還要導入 react-router 加上大專案,整個作業複雜度就會偏高。但串 API 之後會有 sideEffect 要考慮 rerender 會需要用到哪些 hook,自己覺得會是 react 比較需要思考的部份。

最後就是 redux,自己的看法是蠻值得一學的,但不是指 redux 本身,而是在狀態管理上需要面對的問題和解決方法(Flux 的那套觀念),還有知道說 react 比較像是一個 library 不是框架,很多部份需要其他工作來補足一些功能讓它更好用。不過順便學學業界大家常用的 redux 當然對求職也是有加分啦。

作業

作業部份自我檢討跟助教蠻相輔相成的,自我檢討可以看一些比較基本的要求,助教改作業時,比較會挑出一些怪怪的 code 或者是 pattern(就自己寫的作業而言)。

第五期覺得可以提醒同學可以把問題打在 PR 上面或者是直接 comment 在 code 裡面,可能像是:

/*
 助教看我:
 這邊使用的雙重迴圈的方式不知道正不正確,有沒有符合平常使用的慣例
*/

自己好像是比較後期才這樣做的。有時候會覺得自己某些部份很有問題,可是助教很難在茫茫 code 海裡面看到,稍微提一下助教或老師應該會比較能得到同學想要的回饋。

進度報告

自己是 B 方案,雖然不強迫要寫心得,不過也是有照著 A 方案的頻率去交,最後跟完課的時候發現不知不覺也打了很多的字 XD。

不知不覺打了這麼多字 XD

關於心得要寫什麼, Huli 一開始就有提到說心得內容寫什麼都行,我也的確是什麼都寫,很多時候心得就變成一個發牢騷的地方。還有自己也不是很堅持的人啦,有時候只寫個兩三行,有時候寫了兩三千。

在發完心得之後自己也會稍微看一下別人的心得,看到別人有時候發生一樣的問題也可以稍微給一下自己的經驗,也可以看一下說同學進度怎麼樣,在挫折的時候看到別人也一樣在困擾時感覺就會好很多。

還有一點是自己本來也有寫日記的習慣(雖然堅持不久),不過在進度報和寫日記有很大的不同是,進度報告有人會看但可能不會太多,而且同學間在關係上有一定的距離。這樣的距離蠻適合去 murmur 一些想法的,還有在法律的範圍內可以吶喊一些必須得帶進墳墓的東西。

整體下來其實蠻喜歡進度報告的。但有個可惜的地方是卡卡文有點多,很想看某些人的進度報告,可是因為在忙卡了又不太會特別去翻來看。還有想許願說如果有像是標記 #21345 能夠連結到某篇心得的功能就太好了,整個進度報告應該會有趣很多。

上面這個功能可以用開個別心得報告的 url API 應該可以解決 ?(忘記有沒有)這樣就可以先用 markdown 的連結語法做連結。如果要作到 #12345 這種格式就直接連結到其他文章就要改 markdown parser 可能就比較麻煩 XD

是在哈囉

這個部份每次都會收聽,雖然有時候話題會飄到神奇的地方去,不過可能就是這種神奇的地方才會變成忠實聽眾 XD,內容常穿插各種哲學還有一些奇妙的知識,隨著時間話題會進入到很深的層面。

Min 跟 Clay 這個組合覺得蠻搭的,Min 蠻有講學的感覺,然後 Clay 會常常問出自己疑惑的部份,但兩位對於議題的對答又在一個蠻輕鬆的氛圍之下,聽著聽著常常不知不覺就長知識了。

收穫

一開始就提到說,這次參加課程是希望能夠打穩基礎,那基礎穩和不穩的差在哪裡?說實在的我也不知道課程上完之後基礎穩不穩,畢竟還沒去面試,沒辦法有一個標準可以做評斷。

不過課程上完後有個很大的不同是,自己看到一個沒看過的技術名詞或者是新技術時,可以知道大概這項技術的位置在哪裡,大概理解說是要解決哪方面的問題。這樣的同時,看看自己的技能樹,也大概知道自己在什麼樣的位置。

這有點像開地圖的感覺,原本自己就算學了 Jquery、學了 react,可以寫出個東西沒錯,但也不太知道為什麼要學,現在明朗起來的感覺很好。也因為這樣自己好像更喜歡這個領域了,開始會對各種東西開始好奇,以後也想摸摸看想要精進,而且在計畫中補足了後端還有部署的相關內容,要做 Side Project 也不是問題啦。

還有一個是 Huli 的價值觀,在課程期間也閱讀了老師很多的文章,慢慢了解很多老師的價值觀,開始會試著寫文章、有問題會開始翻 spec。不過自己覺得,這些都不是最大的影響,影響是什麼還說不太清楚,不過總覺得個性變得比較寡淡了。

自己在課程沒做到的部份

統整一下課程沒有做完的部份有:

  1. 一些挑戰題和超級挑戰題:記得是演算法、Docker、還有 mail API 跟金流 API
  2. week 18 作業
  3. Lazy Hackthon
  4. Final Project

覺得比較重要的部份應該是 Lazy Hackthon,有很多優化的部份應該是要補齊的,優先度大概會在找到工作之後。Final Project 其實很想做完,一個原因是覺得自己沒有比較大的專案(week 18 沒有完成),看狀況是來不及在求職以前做完了,可能也是接下來慢慢做 XD。

至於挑戰題和超級挑戰題比較看狀況,week 18 目前大概是放棄狀態了。

其實在課程之中蠻想找助教聊天和老師聊聊的,不過說實在也不知道要提什麼,最後都是問技術問題比較多。而且和助教講話會不自覺緊張起來,像和老師或主管講話的感覺,這樣狀況好像也沒辦法侃侃而談,就想說算了。

最後還有一件事是很想報名 5th 的助教,覺得在 4th 收穫不少,也想試著做一位助教去指導其他人還有為這個計畫付出一點東西。不過因為還沒有開始上班,等找到工作應該也來不及了,就只能作罷,看看之後有沒有機會。


課程之後

目前自己處於一個沒經濟、沒有工作、最慘的是現在也不能找工作的狀態。

看了很多同學的求職心得之後其實蠻害怕的,當兵時 React 的印象一直在慢慢變淡,每個禮拜都慢慢的在盡量做 Final Project 來復健。在營中有帶面試提進去寫,想說出來只要梳理一下流程然後查一點資料就可以,不過沒有網路可以查就只能空想,而且要同時複習面試題跟 coding 的手感真的很難。

還有自己算是第一次找正職,沒有正職經驗也是自己一個很擔心的點,怕說對方會覺得說沒有工作經驗而被扣分。不過這樣也是無可奈何,自己也真的就是新鮮人沒錯。

雖然 Huli 有說面試官不會太在乎作品,不過看其他人的求職心得好像都會問到專案的事情,做完也可以給自己蠻大的自信。但是就像前面講的,自己應該是來不及完成 Final Project 了。

對於求職的恐慌大概就是這些了,現在也只能盡可能準備,然後等待,在兩個月內也沒辦法做的太多。未來找工作可能也沒辦法等工作等太久,能夠複習多少也是未知數,其實蠻希望說等到一間自己喜歡的公司再到職,但是當下的情況沒辦法要求太多。

那找到工作之後呢?目前希望先把前端的基礎補起來,還有把 final Project 做完。詳細的規劃目前也沒有很清楚,就是只是很粗淺的想法而已,可能會先開始翻 spec 的東西吧。

結語

本來對於課程應該是有很多想法的,以為可以打個好幾萬字,後來發現比想像的還要少很多。可能是時間太趕了吧,馬上又要回營區了。而且後來看看好像打的有點流水帳,入伍後覺得動腦越來越慢,組織語言變得有點辛苦。

所以就這樣想到什麼就打了什麼,如果能有一點參考價值就很開心了 XD

總之這篇文章就到這邊了,非常感謝 Huli、助教、還有 MTR 4th 的各位同學,也祝各位求職順利~~

學生心得:ahwei777

關鍵字 - 行銷背景轉職、跨出學習舒適圈

哈囉我是 Ahwei ,因為相比其他同學較晚找到工作也幾乎無縫上班,利用上班後兩個月的空檔把欠了很久的心得補完。

-個人背景
-轉職原因
-選擇 Lidemy 原因
-學習過程
-求職準備
-求職總結建議
-課程建議

個人背景 - 一直找尋不到的「熱情」?

從高中開始一直沒有很確定自己的未來志向,如多數同學一樣只是被鼓吹努力考試的潮流推著走,對於自己的職涯規劃也沒什麼概念跟想像。企管系畢業後直接進了第一間錄取我的公司,從事某啤酒品牌在台灣的行銷及通路管理等。雖然運氣很好的,第一份工作薪資福利在業內已算不錯,但因為公司性質偏向傳產,有不少積累陋習以及在個人成長上有所侷限,待了四年後毅然決然轉換跑道,剛裸辭時花了不少時間重新面對自我,但老實說還是沒辦法找到一個能讓自己拋開一切投入的目標。這邊滿建議有相同煩惱的人可以看看 So Good They Can’t Ignore You 這本書,作者對於過去幾年鼓吹的「追隨熱情」做了一些反思,我相信許多傑出的**選手或音樂家,除了天賦異稟外一定也具有相當的熱情去支持他們不斷前進成長。但如果你沒有在某方面明顯高人一等,也還沒找到某個可以燃燒生命的目標,那可能要思考一下「不停尋找熱情」是不是適合自己,因為熱情也能伴隨累積跟成就感產生。但當然要一直追尋熱情我也覺得沒有不好,但就是要把對應的成本考慮進去。我在仔細捫心自問後覺得更具體、更現實的去選擇一項工作,應該更適合我目前的人生階段。

下面提供一些我向自己提出的問題,網路上還有很多類似問題可以搜尋,主要都是希望轉職者可以充分、多面向思考後再做出決定,而非單純只憑衝動。

  1. 現在的工作是我想一輩子從事的嗎?
  2. 目前想轉職的推力是轉換產業可以解決的嗎?
  3. 我是一個需要從工作上取得成就感的人嗎?還是我可以從工作外實現個人目標呢?
  4. 如果我現在離開這個行業會有多少損失?跟不做選擇相比哪個會讓我未來感到後悔?
  5. 目前工作的優缺點是什麼?你評估後有興趣的目標工作/產業的優缺點是什麼?

轉職原因 - 工作與產業特性

我直接條列式,因為我覺得每個人的原因跟考量都不相同,我認為的優缺點不一定是你認為的優缺點,僅供參考:

  1. 想從事可在工作中取得成就感及不斷學習成長的職業。
  2. 想進入快速發展的產業,多看看新奇有趣的事物。
  3. 想擁可累積及移動的技能,容易彈性轉換公司或是去國外工作。
  4. 偏好年輕自主負責的企業文化,不喜歡辦公室政治還有傳產氛圍。
  5. 學生時代對於數學一直還算拿手,也學習了基礎程式語言,自認不會排斥。
  6. 目前軟體產業成長快速,薪資水平也較高。

選擇 Lidemy 原因 - 酷老師 & 自我挑戰

確定學習程式想法時已經有做過功課比較各種實體/線上教學管道(資策會、聯X、六角、ALPHA Camp...),選擇主因如下:

  1. 課綱內容完整從基礎到相關面向皆有涵蓋,我不希望單純學會使用工具但不了解相關背景領域。
  2. 認同有關心得筆記、自學及搜尋能力對優秀工程師往後持續成長的必要性,而這是其他管道相對較欠缺的。
  3. 已嘗試並驗證過可以有自制力的線上學習,不僅節省大量通勤時間且可隨學習狀況調整進度。
  4. 導師同為自學背景較能以貼近語言解答並針對初學者可能障礙提供指引。
  5. 借用之前某前輩結訓心得:跟老師的相性很合,Huli 部落格內有關工程師的文章我全都看過,有關教學態度、拖延症(我自己也是一個重度患者)、工作價值觀等有很多共鳴,讓我感覺到這個老師是具有溫度跟能貼近學生的,而且除了專業知識外也會有很多可以交流學習的部份。

學習過程 - 自我妥協的拉扯

因為在二月底就從上份工作離職,在空窗期就有先透過網路資源學過一些 JavaScript 基礎語法,因此六月計畫正式開始時進度算是已經超前 1-2 週,但由於是人生第一次遠端自學,加上鑽牛角尖個性在每個挑戰題花了過多時間(手刻 Carousel 大概花了我快三天...),week 17~18 的後端部分因為不服輸也沒有跳過,因此到了尾聲時進度反而落後快 2 週,直接影響到了求職的時程,但過程中有些經驗可以分享給未來參加這個計畫的人做為參考:

  1. 作筆記的取捨

    如果有餘力我個人是很推薦作筆記,好的筆記除了幫助吸收也提高複習效率,尤其剛踏入一個新領域基本上同樣概念要看過好幾次才會比較有記憶度,加上有完整的筆記在求職複習前你會超感謝自己。但磨合出適合自己的筆記方式需要時間,因此在做筆記花費的時間上要做適當取捨,如果太執著在整理筆記一定會反而拖延到課程進度。

  2. 找到最適合自己學習的環境

    我在這半年基本上都是找外面的咖啡廳或圖書館學習,因為我是屬於很難在自己房間裡面專心的人,我需要一個空間營造感才能進入專心狀態,環境周遭的人也同樣在努力的話我會更有動力。另外也是因為全職學習的孤獨感相當強烈,如果還能跟社會有一些連結的話感覺會比較踏實一點。

  3. 不求甚解不一定不好

    這個我聽過某位程式界的前輩說過:「有些東西如果想很久還想不通就直接把他記起來,等到未來某個時間點你就會突然想通了」,這個概念對於我在學生時代都是打破砂鍋的方式算滿大衝擊,但對於有求職壓力的人來說不求甚解反而是不失為較有效率的學習方法。但提醒一下這邊只是希望不要在一個卡點執著太久,畢竟求職時還是會問你是不是真的對相關觀念理解透徹。

  4. 挑戰題沒做真的不會怎樣

    這個我也是直到事後才有感覺,因此我有聽說 Huli 打算之後的課程會直接做隱藏之類的處理,有時候長久的強迫症是很難一下子被糾正的 XDD

  5. 規律學習 + 規律放鬆

    每天白天學習完後我在晚上還是會固定去健身或是做一些**,假日也會與朋友有些聚會,全職學習真的壓力頗大,只要制定適當的計畫後就不要把自己逼得太緊,另外轉職真的需要相當大的勇氣跟毅力,一定要適時的鼓勵自己。

求職準備 - 跳脫學習舒適圈、臉先洗先贏

  • 履歷整理

    原本打算用 html 手刻,但因為後來更動實在太頻繁,在同學建議下改用 figma,相比 Cakeresume 客製程度高且方便改動,也可以參考既有模板。初版完成後再請助教及業界前輩給予意見,前後大概花兩週完成比較滿意的初版,但後續都還是有持續微調。

  • Final Project 及作品整理

    期末有與兩位同學一起合作一個學習平台的 project ,另外也把課程作業中的 react blog 跟餐廳官網優化,加入一些新功能跟完成部署,然後把 Readme 盡量寫的完整。

  • 面試準備(技術/非技術)

    技術部分照 Huli 課程中提供的方向已經幾乎 cover 80% 遇到的問題,有餘力可以再去看其他題庫,但自己面試幾次下來覺得對於 junior 職位來說技術並不會問到太深,反而非技術題的部分還滿重要的,在自我介紹跟非技術題上要多用點心,讓面試官感受到跟你一起工作會是開心地而且你也是個對自我有要求負責的人,基本上就差不多了。

  • 轉換心態跳脫學習舒適圈

    雖然課程尾聲 Huli 佛心的開了面試衝刺群強迫自己每天練習,但我算是比預期花了更多時間才調整好心態跟建立信心,回頭來看我發現自己在課程後段有點陷入"學習的舒適圈",每週忙於追逐課程內容跟完成作業帶來的成就感,而這些小小的成就感成為這半年來支撐著全職學習且常常懷疑自我的我的養分,造成後來費了許多心力跟時間才將重心重新擺回"努力求職"上。找到工作最直接關鍵不在你私底下多努力學習,而是在你拿到了幾個面試機會還有實際面試中的表現。

  • 投履歷策略
    個人策略僅供參考,請選擇適合自己的方向:

    • 以前端為主但也有投一些後端。
    • 排除博弈跟轉型老公司。
    • 有穩定獲利產品與完整開發團隊。
    • 偏好扁平式自由管理,不用參與太多辦公室政治。
  • 總結投遞履歷成效
    從 2 月中開始初步投遞,先選擇比較沒興趣或條件較差的職缺,純粹練功跟逼迫自己進入面試狀態,但結果連這些雷缺的回覆率也低的可憐(不知道是競爭者太多或是遇到連續假期,當然也可能單純是履歷競爭力不足),於是乎就直接進入海投。

    • 104 銀行 121 家,Yourator:8 家,實際回覆率大概一成,最後拿到 3~4 個 offer 。

求職總結建議 - 徹底坦率

  1. final project 建議一定要設定時程進度及停止點,不然容易耗費太多時間或沒有做完的一天。
  2. 如果沒做 final project 建議還是要用心整理作品集,這些都是面試時的談資。
  3. 只要在履歷上有寫出來的都要假設會被問到,做球或被洗臉就看自己準備多少。
  4. "跨領域"轉職的必須好好想想怎麼把過去技能經驗"轉化"成讓對方感興趣的亮點。
  5. 無腦海投只是快速增加面試機會,但真的有興趣的夢想職缺建議還是稍微客製 cover letter ,也能讓 HR 感受到你的重視程度。
  6. 盡早開始安排面試,先挑幾家練功跟培養面試節奏後就可以投自己真的有興趣跟價碼可以接受的缺,然後不要把面試安排太密集把自己逼死。
  7. 面試時盡量坦誠相見,雖然很難不偽裝自己來討好對方,但找工作就如同找對象,之後的日常相處才重要,當下多互動跟感受面試官的個性、公司環境文化是不是自己喜歡的,避免進去才感覺磁場不合或是沒辦法做自己。
  8. 不要不要不要心急,公司需要一些時間消化履歷,寄出後過一到兩週才回覆都是非常正常的。
  9. 得失心真的真的真的不要太重,被洗臉代表是有哪些地方準備還不夠那就回家收拾好心情再接再厲,如果能有一群同時找工作的同學互相鼓勵講講幹話應該也不錯。
  10. 如果還不確定偏好前端或後端的同學,可以提早多了解工作實際差異或詢問前輩意見等,像我這次很幸運的前後端都各有拿到 offer ,反而造成選擇困難,最後是列出自己在意的一些優先次序比較來幫助選擇。

課程建議

這個計劃的特色就是真實透明,在這樣的環境下每一期學生都有給予真實的回饋,在前面幾期的修正之後我覺得已經相當完整,以課程設定的初衷來說是相當適合像我一樣完全無基礎轉職的同學,並且在過程中給予適當的學習痛苦讓你成長,以下是個人對於計畫的幾點小建議:

  1. 後端課程獨立為自由選修並加深

    這部分我看到許多同學也有反映過,我個人是認為兩週的時間對於剛接觸前端的人來說馬上要快速理解後端的架構真的稍微困難,因此是滿建議把後端的部分整個獨立出來,除了可以更完整的從基礎開始介紹外,也可以讓有興趣的同學自己決定是不是要額外花時間學習後端的知識,因為以我自己的經驗來說這兩週只是很快速的跟著 doc 跑過一遍,很多相關工具的使用也都是快速帶過,我相信老師當初是立意良善,但以整個「前端轉職」計畫安排來說可能反而不是很恰當,以我自己求職的經驗來看,後端怎麼實作大部分的面試官並不是很在意,反而前端要怎麼 call API 的流程跟可能遇到的問題會比較重要。

  2. 求職前的最後一哩路

    因為進入表定求職期時,我相比已經在求職的同學不僅進度稍晚,履歷、作品集也都還沒到位,自己也花了不少時間在調整心態,走出上面提到的"學習的舒適圈",當然這些總歸都是要自己負責的,但如果在結尾時能夠設計一些方法或機制的話,我覺得或許可以幫助到像我這樣欠缺自信的同學,像是後來透過助教有跟 Huli 一起做過一次模擬面試,我覺得就非常有幫助,撇除 Live coding 炸掉不談,當下給予的回饋真的給予我很大的勇氣跟信心,去面對真實面試官的洗臉。

  3. 關於 Live coding 的教學方式

    我自首自己也是後來 Huli 提到在模擬面試 Live coding 中整個卡住的面試者之一,當下其實超級緊張也算是滿震驚的,明明學過的東西但是當下要你馬上從 0 寫出來卻瞬間失去頭緒,回頭想想可能是課程中後端已經非常習慣片段式的跟著老師 coding,老師打一段我接著打一段,而沒有嘗試關掉影片並整個從頭到尾自己構思架構,雖然我記得老師有提到這方面的重要性,但後來進度延遲的時候只想著趕快交出可以符合標準的作業。如果之後作業可以增加像是不提供影片直接要求完成部分功能的話,應該會有助於改善這樣的狀況,或是可以在課程中穿插一些類似題目來訓練這方面的技能。

  4. Final Project 媒合以及由助教擔任 PM

    我個人覺得對於無經驗轉職加上你又沒有太多個人魅力或是豐功偉業的話,Final Project 還是有幫助的,但課程內其實算是滿自由放任的,如果有一個平台或機制協助想做的同學可以媒合同伴的話應該會更有效率一點,例如提供一個簡單的格式請發起人簡述一下自己的專案方向、需求人數、預計時程...等之類,然後如果能再分配一個助教擔任類似 PM 的角色,提醒大家關於題目方向的選擇,還有在團隊太發散時適度幫忙收斂,提醒專案時程等的,對於完成 Final Project 的效率跟質量應該會有一些幫助,像我自己知道的大多數組別其實完成 project 的時間都比原本預期的時程還要多出不少。

  5. 業界實際開發流程及進入職場前的準備

    這邊算是滿私心的啦,因為真的進來工作後才發現很多工具或是流程管理是之前碰都沒碰過的,包含 git 更複雜的指令、環境設置、docker 指令、好用的 VScode extension 等等,當然碰到當下都是要自己搜尋解決,但如果在開始工作之前能夠先預先接觸的話可以加快上手撞牆的速度,看是不是可以定時請學長姐或助教分享一些工作初期的小心得,應該會有一些幫助。

學生心得: krebikshaw

報名契機

時間回推到 2020 年的 3 月:
對於完全不了解程式的我而言,希望能轉職成為工程師,想說先挑選一種語言來學習,也許知道如何利用這個語言來做個一兩個功能,我認為就可以求職了。

在剛開始挑選語言時,先 google 到處查找學習資源,看看大家推薦學習什麼,結果搜尋到了一篇文章「從教學者的角度看無經驗轉職以及課程選擇」,身為一位不懂程式的轉職者,看不懂申奧的技術能力分享,但是這篇文章當中,作者用了一般人能夠聽得懂的講法,利用故事搭配情境模擬,告訴我們他推薦的學習路線。由於比起其他教學資源,這位作者的表達方式更加平易近人,是我這個外行人能聽得懂的,所以愚人我直接挑選了唯一能聽得懂的課程來學習,就開始找這位作者 Huli 開的課程來學習。

藉由這篇文章,我找到了 Lidemy 這個學習網站,看到了網站上有相當多的課程可以買。(當時 Lidemy 還沒有現在的訂閱制可以選擇)
因為想說挑選個基本的語言,能做個一兩個功能就能夠求職了,所以看到課程名稱:[FE101] 前端基礎:HTML 與 CSS、[FE102] 前端必備:JavaScript 因為上面寫著「前端基礎」跟 「前端必備」所以我覺得這兩堂課應該就是我該上的課了,所以就直接給他買下去!

開始上課後,學會利用 HTML 切出個完全沒有樣式的表單後,看到自己已經可以自己做出一份表單,信心大增,原來寫程式這麼簡單,我覺得自己已經是工程師了!

但是學到 JavaScript 之後,發現我完全看不懂,而且老師講課的方式,感覺好像預設我們已經會一些基本的概念了。我怎麼想都覺得不對!應該有什麼課漏上了,我才知道我需要回去補上一堂課 [JS101] 用 JavaScript 一步步打造程式基礎。知道了基本的變數、判斷、迴圈、函式以後,終於又感覺到自己有像工程師的樣子了。

(我這邊也建議老師,可以在 Lidemy 官網上找個顯眼的地方設立一個公告,讓第一次造訪這個網站的同學,可以先了解一下學習的順序,例如看哪部影片以前需要先看過其他哪一部影片,建議觀看影片的順序是依照.....順序來觀看,才不會有人像我一樣傻,看到前端必備,第一個就給他買下去了。)

雖然寫出來的功能亂七八糟,但是似乎還堪用,而且前端的 HTML、CSS、JavaScript 也都學完了,多練習些題目,應該沒有什麼問題。

自學了大約 1 個月的時間後,我認為自己也差不多可以出去找工作了。正信誓旦旦的準備來寫履歷時,第四期程式導師計畫的報名訊息釋出了。此時我面臨了兩個選擇,1. 我已經很棒了,直接求職去 2. 老師開課了哎!是不是應該來報名一下?
此時此刻因為我面臨兩種選擇,所以才認重新認真的看待轉職這件事情。

我重新了解一下第四期程式導師實驗計畫的課綱後,看到了前端工程師所需要具備的技能及條件。
原本的我以為會一點基礎,可以寫出一點點東西後就能找到工作,後來才意識到,對於沒基礎的人而言,轉職不該是自己隨便找幾堂自己覺得是對的課程來學習就能輕易成功的,應該找個有工作經驗的人來告訴我們職場上需要具備什麼!

這是我報名第四期程式導師計畫的契機,如果當時沒有報名成功,我現在大概還只會用 HTML、CSS、JavaScript 切表單而已吧。

這個計畫對於完全沒基礎的人來說怎麼樣?

不曉得其他沒基礎的同學,在剛開始決定轉職時,是如何入門的?不曉得大家會不會像我一樣,搞不清楚學習路線是什麼,亂學一通,然後還很自信的覺得自己很厲害。

我自己因為不曉得到底從哪裡開始,也不知道學到什麼程度是可以的,所以打算找一個我覺得可以相信的人,去相信他所提供的學習方向。
在這個程式導師實驗計畫裡,每一週都在成長,當新的一週來臨,會先有一種:「天吶這東西怎麼這麼難,如果工作不會用到,我可不可以不要學它?」的感覺。但是學完以後又會有一種:「哇噻!這麼難我都學會了,我覺得我現在是個工程師了!」的體悟。

整個計畫的過程中不斷反反覆覆,「啊!又有好難的東西要學,啊!我又學會了很難的東西。」等到半年過去了,回頭看這一路走來,學到了很多計畫開始前,還在自學的那時候,我根本沒打算要學的東西,要不是因為跟著計劃在走,甚至大部分的內容我一輩子不會想去碰它。

但是因為我選擇相信了這個計畫,相信了這位老師,我才硬著頭皮把這條艱難的學習之路給走完。
現在計畫結束了,我審視所有過程中學習到的技術,明白了為何老師給了這條路線,也知道了每一週接觸到的內容,與工作之間有著什麼樣的關聯。

我認為對於沒有基礎的人來說,轉職最重要的事情,就是「先相信你自己,再相信你選擇的老師」。

對於課程的期待?

在計畫開始以前,我預設計畫結束後我能夠做出來的網站是長這樣子的:Google 表單
能利用程式切出一個頁面,可以加上一些功能,能在瀏覽器上面分享自己的作品給親友看。
結果實際上計畫結束後我跟組員做出來的網站是長這個樣子的:Give++ 二手交易平台
一個具有會員系統、商品系統、購物車系統、訂單系統、後台系統的購物網站,有自己的伺服器,自己的資料庫,還有自己的網址(域名)。

這項成果是我當初報名計畫的時候,意想不到的。我以為我就是一個具備一點點基礎的求職者,進公司之後再學習相關技能,但是程式導師實驗計畫並不是一門讓我們只學會一點三腳貓功伕的天使課程,而是一堂要讓我們可以在職場上生存,並且俱備競爭能力的魔鬼訓練班。

這堂課不會手把手教你一步一步完成作業,而是會訓練你自行找尋資料,靠著自主學習,培養解決問題的能力,能夠自己去找出解決問題的方法,過程很痛苦,但成果很耀人。

我跟組員做出來的網站「Give++ 二手交易平台」,也是在課程結束後,靠著學生自主學習的方式,在沒有老師協助的前提下,自行開發的網站,老師只有在最後驗收時有提供改進的建議跟方向,並沒有協助參與開發及製作!

所以對我而言,這堂課的收穫是超乎我當初所期待的。

我自己對於學習的要求

計畫分成兩個方案:參加 A 方案代表有求職意願,在課程結束後兩個月內如果沒有找到工作,就不用付學費; 參加 B 方案代表沒有求職意願,不論有沒有跟玩課程,不論有沒有找到工作,都需要付固定的學費。

我參加的是 A 方案,但依照課程的要求,需要達成兩項條件:1. 必須要每週付出至少 40 個鐘頭的學習時間 2. 每天繳交學習心得,否則有可能會被課程的淘汰機制給淘汰掉。

既然都已經下定決心要轉職了,就應該給自己一點目標。我對於自己的要求是,除了課程規定的學習時數及每日心得之外,我要求自己盡可能維持在每週進度上面,因為讓自己不要落後於進度,就有越大的機會能夠在計畫結束時轉職成功。

但是這堂課光看學習影片是不夠的,我們要花非常多的時間來研究如何將作業完成。
因為影片看完之後,往往都有已經學會的感覺,大概是都聽得懂在幹嘛,應該沒什麼問題!但是實際要寫作業時,才會突然發覺,寫作業跟看影片完全就是兩件事情。看得懂影片,依然寫不出作業,只能另外再尋找更多資料,或者多看幾遍影片。

由於作業才是我們是否有學習進去的關鍵,所以寫作業也成了最容易拖慢進度的環節。
我既然要求自己能夠跟上課程進度,就會想辦法不讓自己卡關太久。如果進度上來不及,我甚至會直接去參考同學或學長姐的作業!
雖然參考別人的作業,可能導致我失去一次自行思考的機會,不過我認為比起拘泥於一定要自己想出答案,能趕緊跟上進度才是現階段最重要的事情。不是為了趕進度去抄答案,而是先了解別人是怎麼想到的,再把它自己重新想過一遍後寫出來。

當然還有一種確保進度的方式,就是利用複習週的時間來趕進度。我自己採取的方式,是先去看接下來五週會學習到的課程,會不會沿用前面五週學習到的內容,如果會沿用到代表我到時候還是會回去複習,那我就不在複習週的時間先複習這個部分了,可以省去一些些時間,將時間用來看那些比較不熟的部分,或者提前進入下一週。

課程心得

課程初期 (week1)

像幼幼班,為了讓你對程式感到興趣,先從簡單的地方帶你認識程式。
很多的故事鋪陳,很多的生動案例。這個階段是最享受的,老師講一步,換我做一步,我只要在電腦前面嘻嘻哈哈,覺得好玩就好。
認識利用指令來跟電腦溝通,撇開功能不談,寫指令就是帥!

課程前中期 (week2 ~ week5)

像國小一樣,從 1 + 1 這種小學程度的數學,帶我們利用 JavaScript 進入程式語言的世界。讓我們知道程式只是一行一行的文字,在對應的環境底下執行,電腦就會依照規則來執行我們撰寫的指令。

老師一樣會說明的很仔細,但是更多的時間,是出作業讓我們練習,不再像幼稚園一樣可以整天玩耍,我們開始要利用大量的練習,讓自已熟悉學過的東西。

此時同學之間的差異會開始出來,有些先前就有基礎的同學,進度就會開始超前,並且會去實作出有難度的挑戰題。其他同學可能因為沒有基礎,所以看到別人學習的比較快,難免心裡會有一些壓力。如果看到挑戰題擺在眼前,又不去實作它,可能心裡會有一種作業沒寫完的感覺。

在這邊我會建議,將作業中的挑戰題,改成「自行索取」機制。同學完成了當周的作業之後,再自行決定是否要向老師或助教索取挑戰題。這樣不想寫挑戰題的同學,就不會直接在自己的作業當中看到挑戰題,也不會因為沒有寫而感到不踏實。

課程中期 (week6 ~ week13)

像國中一樣,課程開始出現一些有趣的內容,但是難度也隨之增加。除了 JavaScript 之外,也帶我們認識了很多前後端相關的其他工具。
但是因為接觸到的技術跟工具開始變多,有時候會抓不太到這項技術要了解的深度要到哪裡,有時候也會看不懂老師在示範過程中進行優化的步驟是在做什麼。

因為沒有基礎的關係,所以心中沒有衡量的那把尺,可能某些範例只是為了示範一個觀念,寫完之後就會馬上擦掉了,但是在觀看課程的過程中會以為這東西是很重要的,一心一意想要把它弄明白,結果卻把「範例」跟實際「技術」的兩者的輕重程度搞混,反而在實際應用時不小心弄錯觀念,寫出了一堆四不像又無法執行的程式碼。

再來就是,實戰演練的時候,我很喜歡老師用 live coding 的方式來演示開發時會遇到的狀況。
但是有時候太過於真實的範例,會不易於沒有基礎的同學學習,可能功能做到一半,就突然把某幾行程式碼獨立出來建立一個新的 function,會瞬間打亂掉原本建立起來的思緒。也因為銀幕高度有限,在示範時會需要滾上滾下來找程式碼,也可能在撰寫時,會一下寫上面,一下寫下面,或偶爾把某一個 function 刪掉之後改寫,或者突然發現剛剛想到的方法不太行,讓大家先忘記剛剛寫過的東西。
這些實際開發時很正常的情況,對於沒基礎的同學而言,會很難跟上這樣跳耀性的思考方式,導致看不懂的情況產生。

我想建議老師,在剛開始介紹到比較有規模的實戰演練時(像有留言系統、會員系統、後台系統),先不要直接寫程式,可以利用 [ALG101] 先別急著寫 leetcode 裡面教學的方式,先把功能的架構利用類似 pseudo code 的模式寫在白板上,直接將會用到的 function 先列出來,先讓大家知道每個 function 的功用及使用的時機是什麼,整個專案的程式架構會是什麼樣子。等到大家知道待會要示範的內容,就是建立在這個概念跟架構上頭,再開始 live coding 把每個 function 的內容填上去。

也許過程中一樣會遇到需要刪掉重寫,或者改錯跳行的情形,但至少學生會曉得,這跟一開始提到的某某功能是一樣的,是在做同一個東西,所以思緒能夠被拉回來。

還有一點我想吐苦水的是,我覺得 week11 的作業真的太多了。在 week6 ~ week9 這段時間,已經習慣每週大概會完成一個頁面,或者是一個簡單的網站,當時每一週作業大約需要花 2 天的時間來完成。但是到了 week11 的時候,作業內容除了把原先的留言板加上登入功能及後台功能之外,還要再加上一個部落格。對於剛認識 PHP 不久的同學來說,同一週要完成兩份稍微有一點點規模的專案真的有點太趕了,我當時是留言板花了 3 天,部落格也花了 3 天,所以 week11 光是作業的部分就花了大約 6 天的時間來完成。反倒是 week12 ~ week13 作業我覺得內容就有點偏少,所以會提議將 week11 的作業內容做一些調整。

課程中後期 (week14 ~ week20)

像高中一樣,難度開始飆升,老師也不再像以前一樣一步步帶著你前進。此時如果還習慣等著老師親自示範,就會討來老師一頓打(開玩笑的)。老師會很親切的告訴你,課程已經進行到後半段了,大家不能夠再只依賴老師所教學的內容,要開始練習自行尋找答案,不能有老師沒教我就可以不會的幼稚想法囉。

課程跟到了這個階段,對於網頁的基本架構以及運作模式,都會有清楚的認識了,現階段在加強 JavaScript 的重要觀念,以及開始認識框架。此時會有一種感覺,先前晃過一輪技術學習之旅,認識了各式各樣的工具之後,現階段開始收斂將重心拉回來 JavaScript。有點像我去全世界繞過一圈回來,看過了各地的風景,開始回來享受台灣的美好。我將更認識 JavaScript,並且更喜歡用它,(可能因為先前被 PHP 摧殘的體無完膚)。

開始進入後端框架後,需要認識的東西變多了。要知道什麼叫 MVC 架構。要知道怎麼架設出一個後端 Server 出來,要嘗試自己部署後端。

部署的過程真的就像高中在拼學測一樣痛苦,沒日沒夜的在應付眼前不斷生出來的問題。而且時間一分一秒在走,都不知道盡頭在哪裡。但是部署成功得喜悅,也像大學放榜後一般快樂,心中的巨石瞬間消失,全身輕飄飄的。
而且更加有自信,更加覺得自己像一位工程師!

另外,老師在這一期錄製了一套新的系列「產品開發流程」,這套真的很棒哎!它大大影響了我對於這個產業的認識,也讓我更加重新思考過自己學習的方式。以往我是瀑布式學習,結果因為前面沒學好,我永遠學不到後面。認識敏捷式開發後,我毅然決然的把我不想寫的 week18 作業跳過了。(其實不是不想寫啦,我會跳過是因為我當時認為 week18 的內容,我打算在期末專案再來實作,所以 week18 作業我就沒寫了,我期末專案是有把功能實作出來的唷~)

課程後期 (week21 ~ week24)

課程後期終於進入大學了!但是不是像大學一樣的快樂,而是要像大學一樣,永無止盡的學習。跟高中比起來,課本變成原文,每本都跟字典一樣厚,規模跟深度都有很大的差距。

week21 ~ week24 整個月的時間,都在學習前端框架 React。一開始沒有碰過框架時,我以為框架是一個類似房子骨架的概念,我們要學習如何去設計這個骨架,讓房子可以順利蓋成想要的樣子。結果接觸到框架之後,我覺得框架的概念更像是「限制」,限制我們只能按照一定的規則來開發。雖然多了很多限制,但是也多了非常多的方便,而且協作時更容易。

在這個階段,會感受到這半年以來的鋪陳,就是為了這一刻!導入框架,解決以前遇到的所有痛點。所以如果課程進行到一半就陣亡的同學,是體會不到開始使用框架的喜悅地~

前端框架的這段課程,老師有重新再錄製過一遍,我必須說,這部分新錄的教學影片,我覺得品質非常好!
記得老師有說過,是因為他重新開始工作之後 React 的功力大增!所以把很多精華都濃縮在裡頭了。

其實看第一遍課程的時候,真的就只是看過而已,過沒多久就忘記了。但是每過一段時間再回來重看一遍,會發現每一次看都能有不同的體會!!而且,面試會問到的重點通通在裡面了!

雖然老師課程錄製的很好,但是我強烈建議,大家一定要自己再找時間去把官方文件看過一遍!(雖然老師沒強迫)
官方文件裡頭還是有提到很多要注意的開發細節,以及推薦的使用方式,這些部分依然得靠自己找時間去補齊。

前端框架學習完之後,基本上就只差經驗的補強而已,任何東西,只要有查詢過方法,都有機會靠自己的力量來實作出來了!連噴、段位、托飄、締造、騙氣、360 這些技巧都教會你了,剩下的就是好好去把每張賽道給練熟。

實作期末專案

實作期末專案,很像是研究所在趕畢業論文一樣!已經將技術都學習完畢,剩下得就是你如何去融會貫通,並且自行尋找解決問題的方法。

先貼上我在完成期末專案之後撰寫的個人心得:https://mtr04-note.coderbridge.io/2020/12/28/final-project-record/

我認為這份專案,是我一開始報名計畫以前,沒有想過自己能做的出來的。
整整半年的培訓課程,抱持著不曉得自己能不能成功轉職的忐忑,接觸自己不擅長的技術。明明自己的能力就在進步,卻覺得自己離成功越來越遠,因為你越是學到更多東西,就越會意識到自己不會的東西越來越多。

製作期末專案,不是必須的,但是可以有效增強自己的信心。當面試官詢問你能不能說說看自己做過的專案時,你可以利用自己熟悉的東西,給自己加分,這種感覺很好。

我認為自己經過了培訓,就應該要給自己一個訓練的成果,我選擇製作專案。
從頭到尾將一個完整的網站給架設起來。
過程中體驗如何跟同學協作,如何自己模擬工作時的開發流程,如何在遇到 bug 的時候靠自己的力量來解決,以及如何對自己負責任。

我認為製作專案,要先問問自己為什麼想做,而不是看到別人在做而跟著做。
假如有一天想到一個自己很想做出來的東西,用心把它給實作出來,這就是最好的選擇了!

求職

我先講結論,我很滿意自己最終求職的結果。在整個求職的過程中,面試得到的經驗不會比課程中教給我們的還少,因為面對眼前的每一位面試官,他們讓我知道我還欠缺什麼,我可以怎麼樣變得更好。

我很感謝老師錄製的 [INT101] 求職入門 系列影片,它幫助我們增強了很大的信心。
其實求職這件事情真的沒有準備好的一天,唯有踏出第一步,才知道自己還差多少。

要記得,學習上遇到越多困難,面試時就越多東西可以分享!
比起一個事事順利,沒有遇過困難的求職者,面試官更喜歡一位遇到過問題,嘗試過解決困難的求職者。
所以不要忘記自己在學習的時候面臨的各種困難,讓它們在對的時候,發揮出最大的價值。

求職的方法很多種,每個人都不相同。
我自己求職的方法,是跟著與我一起製作專案的組員們合作,大家分享彼此複習的筆記,分享各自面試的心得,所以每一位面試過的夥伴,會幫助其他所有夥伴一起進步!我今天面試遇到了什麼問題,回去跟夥伴討論,大家一起找出最好的方式回應,下一次任何人再遇到相同的問題,大家都可以輕鬆應對。

我們組員之間也會進行模擬面試,大家互相考對方技術題、上機考、白板題、問答題,協助彼此找出不熟悉的環節,在出去面試以前,把問題都解決掉。

有組員今天要出去面試,其他人會給他祝福,時刻關心彼此的近況,也讓求職的過程,有更多的溫暖。
我很感謝這些組員,我有很多的面試技巧,是靠他們的幫助才提升起來的,這種正面的能量,值得不斷傳遞下去。

我在這堂課獲得最大的收穫

我覺得我在程式導師實驗計畫,獲得最大的收穫,就是在計畫中認識的優秀同學,以及老師跟助教們。
大家因為這個計畫而凝聚在一起,我們一同踏進了前端的這扇大門,未來大家會一起面對各式各樣的挑戰,而且不是孤軍奮鬥。

這是一堂魔鬼訓練班,同組的同學一起結業,我們有革命情感。大家出來求職,每個人都相當優秀,我們彼此是求職時的競爭對手,但是也是未來一同成長的好夥伴。

這一期的助教跟老師,是我們的貴人,幫助我們學習,認真的解決我們遇到的問題。而同一期的同學,是最好的戰友。
除了一起朝著相同目標邁進,更在彼此低潮時給予鼓勵。我與一同製作專案的夥伴們約定,進入了職場,我們會繼續分享自己工作上用到的技術、分享解決難題的經過,大家建立一個共享學習資源的筆記資料庫。

結語

程式導師實驗計畫雖然結束,但是導師依然是我們永遠的導師。
這趟旅程很精彩,如果問我會不會想再報名一次,我會回答:「會」
不過我希望報名的是,成為下一期的助教,從一個受到幫助的學生,轉變成一位能給予幫助的助教。

我認為這是一個很棒的學習計畫,它值得持續傳遞下去。讓更多想轉職的朋友,也能參與這份美好。

我是程式導師計畫第四期的學生,現在的我,是一位轉職成功的「前端工程師」。

學生心得:cwc329

MTR04 心得

警言

網路心得文有倖存者偏差,請謹慎服用。
每個人的主觀感受與客觀條件皆有不同,所以也無法複製。

個人背景

台大哲學系畢業(大概是唯一比 huli 大大厲害的地方)。第三期本來有考慮要報名,但是知道訊息的時候只剩三天,打開 Scratch 看半個小時後就打定主意報下一期。
報名前只有用 excel + VBA 寫過簡單的股市進出場模擬,可以算是零基礎。
在家全職學習,理論上可以達到課程要求的每週 40 hr。
個性可以說有點自負、好勝,對人事物的喜惡較分明。

報名準備

我是覺得要「誠」。
基本上報名有兩大部分:作品與動機信。
作品部分,我當初的 Scratch 作品很粗糙,不過 CodeWars 的東西我倒是寫了大部分。
而動機信真的就是「誠」,我很認真的評估自己的客觀條件與主觀意願。客觀條件上我自己是符合求職方案,畢竟我不會排斥以 coding 作為一個職業,而且自學 VBA 是自我學習能力的小佐證。
但是在主觀意願上,我其實沒有很強列的意願。我並不是非要當前端工程師,或者說當軟體工程師。這對我來說是一種選擇,但不是唯一。
選擇這個計畫,我是抱著試試看的心態,那個時候連退路我都想好了,如果沒有成功對我來說不會有太大損失。
評估完之後,我就把我自己的評估結果老實的寫在動機信中。
我記得應該在報名截止前還有一兩週就寄信了,接著就等通知。

上課準備

week0 huli 準備了很多心理建設的東西給學員,這些東西助益因人而異,老實說我那個時候也沒有很認真去看。
除了心理建設,在開課前也給了兩個課程影片讓學員先看,這兩個課程很能幫助新手建立解決問題的思考模型,以及熟悉電腦科學。
這兩個課程我在開課前都有看完,看完其實並沒有那種功力大增的感覺,但是透過這兩個影片我一窺之後半年我要接觸的東西究竟為何。

開始上課

課程內容

先就客觀事實來說,
課程內容與課綱相符,課綱說要上啥就會上啥,雖然會有修改,但是不會改到跟原本的課綱完全不一樣。
不過可以注意一點,以第四期的課綱而言,雖然網路全端都有上,但是是偏向前端開發的課程,可以預期會碰到很多有關畫面的東西,包括網頁的切版、響應式網頁等。
課程深度,我認為如果有達到每一週的最低要求,那麼應該是可以達成求職方案的目標,成為一個有工作的前端工程師。
而如果除了最低要求,還能完成 P2 以下的要求,那麼在某些場合是可以讓人眼睛為之一亮的轉職者。
課程設計能有這樣的效果,當然是因為有前幾期的經驗與 huli 自己的職場經驗。

個人經歷

前期

前幾週我的進度是完全超前的,不過這是我個人的時程安排較為不同。
雖然是全職,但是我家預計在年中翻修,我房間也要重新整修,這會大大壓縮到我的學習時間,所以我想在一開始能衝進度的時候先衝,為未來留一些餘裕。
由於進度超乎我預期,在這個時間點我可說是信心爆棚,覺得未來一片光明。

當我家開始整修,我被迫搬離我的房間,我的學習時間就開始不是那麼固定。除了時不時需要幫忙整修的事情,整天工人在家裡來來去去以及吵雜的施工聲讓我很難專心。
我本來以為我是可以在任何狀況下學習的人,那個時候我才知道我錯了。
我得開始珍惜晚上與假日的時間,因為只有這個時候我家才沒有外人而且安靜。
在學習時間不斷被壓縮的同時,又一個問題浮現:「我可以更努力」

不過就算是有這樣的決心,到底要把自己壓榨到什麼樣的程度才算是 100% 努力?一天讀 8 個小時嗎?還是除了睡覺的 8個小時外都在讀書?話說人有需要睡 8 個小時嗎,說不定只要睡 6 個小時就可以了!

然後每天都在懊悔中度過,「我可以更努力」這句話已經像是魔咒一樣緊緊箍在我頭上,最後連在早餐店多等 10 分鐘都覺得時間被剝奪「這10 分鐘我可以算一題出來了居然浪費在這上面!」最後每天都過得煩躁。

以上是我朋友全職準備研究所考試的心得節錄,基本上就是我的心情寫照。
以往我坐在電腦前坐常做的事情並不是任何有生產力的事情,我最常做的事情是玩遊戲看影片。可是在一個線上教學的程式導師計畫中,一定會需要用到電腦或者行動裝置,每次打開遊戲或者點開影片,總會感受到這句「我可以更努力」。
尤其當自己的進度不如預期,或者發現本來領先的進度被追上,我也開始焦慮。

此時我又發現自己不知道的一面,我比我自己以為的更在意別人的眼光,以及優越感。

大概從 week6 開始,我的進度放緩到僅超前一週,同時課程難度開始稍微變難。
家裡的整修計畫如火如荼,原本預計一個月完工,但是我房間被開了個大洞之後就沒消沒息、遙遙無期。
這個時候課程進入 HTML 與 CSS,開始要處理畫面。
雖然很多人說開始進入畫面之後會很有成就感,但是我很無感。
我可以說是個對美感無感的人,一個東西只要用得順手我都可以接受。
所以當開始要處理畫面,尤其要自己規劃版面,自己切版對我來說很痛苦。
看到很多同學切版都很有心得,覺得這是個有意思的事情時,我感到更痛苦。
一直到課程結束開始求職,我才發現這個痛苦來自於把畫面做好不是我感興趣的事情。

中期

課程時程過半,這個時候我遇到一項抉擇。
年初我有報考研究所,本來以為備取很後面沒有希望,沒想到在開學前一週接到電話問我要不要去報到,並且說無法先保留學籍。
當時會報考這個研究所也是因為對這個領域有興趣,想要嘗試看看。
我自己思考一下,決定先去報到,打算邊上研究所邊進行 Lidemy 的課程,如果負荷不來的話再作打算。
於是我收拾行李,就回到台北準備開始新的生活。但是計劃終究趕不上變化,當我到學校完成報到手續,教務處職員第一句話問我:「你要辦休學嗎?」
這讓我意識到原來還有這個選項,回去想個一個晚上,我就決定先休學,先把 Lidemy 上完,如果沒有找到工作,或者做了之後發現沒有很喜歡之後再回來念就好。
一個禮拜後,我就又回到高雄了。

折騰了好一陣子,我的房間也整修好了,頓時沒有任何可以煩心的事情,我以為我接下來的學習之路會一路順暢,那時真的好傻好天真,也太不認識我自己了。
回到高雄之後,我的作業開始一直出錯、看錯需求作業白做工、課程越來越難越看越不懂,種種事情讓我學習越來越受挫。那個時候連點開課程影片這項簡單的事情我也百般抗拒,也不想看課程社群裡的東西。
屋漏偏逢連夜雨,那個時候我的身體開始有毛病,身體不適加上心情鬱悶,這段時間是我在計畫中狀況最差的時候。
不過因為求職方案的進度要求,我依舊每天摸一些程式或課程相關的東西。
我自己認為,在前期我的生活有兩個重心,整修以及課程,所以雖然很忙但是至少有可以分心的事情。
但是在這段時期,我只有課程要顧,「我可以更努力」的想法更加強烈。
而我排解壓力的辦法是**,不過因為身體狀況不允許,我也沒有辦法調適自己的心理狀況。
這段時間我真的感覺自己快被壓垮了。

後期

我每天還是逼著自己至少要碰一些程式或課程相關的東西,但是沒有要求自己一定要做很多,只要有打一兩行 code 或者看半小時課程影片我就覺得夠了。
我就這樣慢慢地找回上課的節奏,原本很在意的進度也把重要度往後排,因為我發現現在生活只有 Lidemy,如果太在意的話又會回到之前的低谷。
幸好,當時接近 12 月,Advent of Code 快要開始了,這是一個耶誕倒數的程式解謎活動,每天會有一道謎題,難易度基本上越接近聖誕節越難。這個活動是 week3 挑戰題時 huli 提到的,從那個時候開始我就很感興趣,現在有機會共襄盛舉,心情突然好了起來。
12 月也是課程時程的最後一個月,這個月其實我解 AOC 的時間比花在 Lidemy 的時間還多,感謝 huli 人性化的設計,讓我即使這樣也能有完課證明。

Final Project

Lidemy 的 final project 並不是強制的,但是推薦。
說到這邊我一定給要感謝我的組員,因為當大家開始要動作的時候我剛好在求職,蠟燭兩頭燒的情況下我其實是啦啦隊,專門拖著大家的進度。以至於打這篇心得的當下,這個專案都還沒能完工。
我不知道多人協作 final project 能夠模擬幾分以後工作上的情況,不過就我看同期學員的心得以及跟其他學員聊天,我自己的結論是推薦去做。
其實就我自己面試以及其他同學的經驗,我不清楚有沒有 final project 跟能不能有面試機會有正相關,也不是所有面試公司都會問有關 final project 的東西。甚至我在面試的時候我的 final project demo 出來根本連 10% 都沒有,還一堆 bug 與跑版。
然而我有幾個理由推薦做 final project。
首先,因為 Lidemy 的作業都是要獨自完成的,這樣會缺乏多人協作的經驗,如果能用 final project 補上的話,可以讓自己的履歷更加完整。
再者,像我這種作業只求功能完整不求細緻的人,作業是非常粗糙的,這對於以轉職身份求職來說是的弱點。當然也是可以把之前的作業修到 90 分以上當作作品集,但是 final project 有另一個不同的就是,如果是有好好規劃討論的話,這個專案的規模會比任何一個作業都要大,是可以達到與作業不同的高度。
最後,如果能夠做出一個非常完整而且自己有興趣的東西,我相信是可以增加自己的自信,而自信不論是在 Lidemy 的課程與之後的求職我認為都是很重要的。
所以我會推薦如果狀況允許,可以跟其他人一起組隊嘗試 final project。

總結

對我來說,Lidemy 其說是學習程式,毋寧說是學習認識自己。
大概因為我是哲學系畢業,認識自己是我從大一就一直聽到的事情。不過真的實行這件事情是當我開始有意識的自省,觀察自己的起心動念、情緒、行為,並且試圖去理解這些東西,並把所得到的結果與自己以前所認為的想法相比較。
我最後並不是轉職成為前端工程師,而是後端。
這個決定看似是在短短兩三天做出的,但是如果要追尋脈絡我自己覺得其實在課程中都有跡可循。
我對於處理資料與演算法一直都很有興趣,然而在課程中我自己一直忽略這點,即便 huli 說這個課程不是一定要轉職成為前端,我可以選擇學習全端或者後端,我還是沒有意識到。
直到某場面試被面試官點醒,我才猛然發覺,原來我自己更有興趣的不是前端。
而前面的心得也可以看到,其實每個階段我都認識到不同的自己。
寫動機信的時候,我本來以為我已經很了解自己了。但是在課程的每個階段,我都發現自己新的一個面向,不論好壞,這都是我自己,我必須要了解、承認、接受並且與之共存。
越認識自己,就越能知道自己所欲,以及什麼對自己比較好。如果不夠認識自己,即便完成課程找到工作,可能也不會得到一開始進入 Lidemy 所想要的事物。

學生心得:oceankj

好久沒有寫東西 ,現在這樣敲打鍵盤居然開始浮現之前寫簡答題的畫面,好可怕...
說起來之前在開始面試大挑戰的時候也想說再來寫寫每日心得好了,結果也就堅持兩篇而已...後來找到工作也想說要來寫回顧,不過自從拿到 offer 後整個人突然鬆懈下來,懶懶的,不想動,結果就是到現在第五期都要開始招生了,才不得不來趕工啊,這幾天都在整理這半年回憶,我只能說挺夢幻的啊!!到了今天我居然也已經正式以『工程師』的身份上班一個禮拜啦!

『轉職成功』,這不是免洗手遊,這是真實世界阿!

背景

大學學開船,畢業後去開船,開了兩年,心累,下船。

繞了世界大半圈,見識許多人事物,很酷。但是長期跟社會脫節還是讓自己心裡很彆扭外加又遇上疫情,仔細想了想畢業時不甘心的部分也消散大半了,那好像也沒有繼續待下去的理由了,差不多可以回家了。

雖然下船的時候很灑脫地放棄了最後一個月的獎金,不過回到了陸地上也不知道自己要做些什麼,大方向是想要做網路相關的工作,有一點報復心態,在待過船員這個最古老的職業後有點太急切跟社會建立連結,就想跳到一個最新最潮的產業,一開始是把目標放在 UI/UX ,甚至也去應徵過網路行銷業務,也不是沒想過當前端,但是有點猶豫,總覺得寫程式會不會門檻很高。

剛好在這時候 Lidemy 第四期開始招生了,我朋友也幫我介紹了一個工作時間比較彈性的工作。解決了經濟壓力,時間也有了,一切都很剛好,我想那不如就試試看吧!

Lv:1 火球術

其實很早就上過 huli 的課,那時候我還在當替代役,是我人生最閒也最迷惘的時候,瘋狂的參加了很多的職涯探索或是講座,也就是在那時候我聽了 [ CS101 ] 初心者的計概和 coding 火球術,印象中 huli 好像是說,對於初心者最最一開始學的基本上就是火球術,所以後來每次寫 code 我都覺得我在搓火球...

其實還有一個報名的環節,大概就是自我介紹,然後出一些題目讓你想,都沒有很難,主要就是確定你有沒有認真看待這件事。不過我記得其中一項是 解出 Codewar 裡面任意三個題目 ,雖然不難但還是讓我很緊張,老師還在報名須知裡面寫說「根據前人的經驗,沒有任何程式基礎的話上課會上的很趕很趕,所以強烈建議你在報名前自己先預習很基礎的程式知識。」想說到時候如果真的進了我是不是會跟不上,就跟女友在等待報名結果前,先看 Odin project 來預習,不過看到後來突然要我們自己做一個專案的時候,我就傻了,蛤?是我英文不好有漏看了什麼嗎?還是他的課程安排就是這麼陡,看來我悟性不夠啊...搓不了火球了,就在我自怨自艾考慮還是當聖騎士搓爐石回家的時候,謝天謝地,第四期開始了。

Week0:年輕人要從武德開始學

要說整個課程我最喜歡的地方,就是很有人味。聽起來很怪,明明只是個線上課程,但是給人的連結感卻很強,不管是每週 huli 長長一串的隨意聊,或是助教分享的心路歷程,轉職要學的東西很多,但倒是不太孤單。

其實這週叫心態培養,我自己是覺得很酷,huli 貼了很多自己寫的文章來幫我們建立心態,看得出來他真的對於『學習』思考很多,然後文章好長....那時候有點嚇到,不過後來看多了老師的文章,發現那是他的風格。感覺真的很怕我們被自己打敗一樣,所以不厭其煩在你旁邊幫你打氣。感覺挺好的,不然之前在 Odin project 自學的時候,要不是因為我有人跟我一起學,心裡的不確定感還是挺強的。另外一方面我覺得也像是 huli 在自我介紹一樣,讓你知道他的風格他想要做到的事情,雖然是線上,但挺有親切感的,整體感覺就是一個跟我們一樣的年輕人在跟我們說『欸,我程式學得不錯,要不要試試看跟我學』

課程開始

對於課程的內容我就不贅述了,其實看課綱就可以知道都上些什麼,但更重要的是我預設我是寫給跟我當初一樣毫無經驗的人看的,意思就是,就算你跟我解釋我也看不懂拉!哈哈哈哈哈哈哈哈(絕對不是因為我想不起來我到底都在幹嘛),所以我比較想聊聊我自己的感受。

對我而言,這次的課程分成兩個階段,離職前跟離職後。

一開始我是打算先一邊工作一邊上課之後在看狀況調整,前面有說這個工作時間相對自由,那具體是怎樣自由,我稍微解釋一下,讓有『半工半讀』想法的同學有例子可以參考一下。

Day1 Day2 Day3 Day4 Day5 Day6 Day7 Day8 Day9
正班 副班 正班 副班 正班 副班

九天一個循環,每個循環之後會切換日夜班。每次上班時間 12 個小時(06001800為日班 ; 18000600為夜班)。
正班:代表說我要到公司上班。 副班:視當天現場的情形決定要不要去上班,一般來說是在家休息,就算要上班最多也是半天而已。基本上可以簡單想成是做一休一。

算下來每個月可以有1/3時間全日學習,1/3半日學習,最少會有120個小時(全日( 8hrs)*10+半日(4hrs)*10)。攤到每週的話也基本滿足40小時了(實際上應該會花更多時間)。

前兩個月,我學得很開心,用 CLI 下指令覺得自己超帥,也可以感覺得到自己每天都有在進步,但是越到後來越吃力。跟天賦什麼的沒有關係,是客觀上的時間真的不夠,我半工半讀大概堅持到學 Express (後端框架) 的時候,那時候就有點力不從心,確定要離職了,在忙交接然後跟課以及生活上一些瑣碎的事情,坦白說是真的有點混亂,都不知道是因為後端真滴難還是自己太累,後來我是戰略性的先放棄 express (不過後來還是有想辦法盡量補上拉!),然後把心力放在找前端工作會比較重要的 React (前端框架) 上。

建議打算半工半讀的同學要記得考慮自己的精力,像我的規劃裡面就忘記了,那時候的日子基本上沒有假日,除了上班之外就是唸書,其實精神是很緊繃的。如果在這時候其他事情(例如工作上同事很惱人)來消耗你額外的精力,呵呵,很容易就感到身心俱疲了。另外我前幾個月可以成功,有一部分是因為有些內容我在 odin project 有先預習過了,我主要都是在釐清概念,要重頭開始學的東西相對較少。

離職之後

開始全職學習之後真的很快樂欸!

假的,其實還好,雖然現在回過頭看是真的挺快樂的啦,畢竟能夠沒有後顧之憂專注做一件事,這本身就很幸福。但是在那當下,一心只想著追趕進度實在沒空去想那些,每天都想辦法在文件海裡面生存下來,然後瘋狂看沒搞懂的影片補強觀念,還是不懂就再看一遍,一遍不夠就兩遍,五遍有時候也很正常,自從國小拿到查資料比賽冠軍之後,我很少這麼認真了啊!每天都排得滿滿滿,沒什麼時間感,總覺得這段時間過得特別快,大概是終於從惱人的職場人事中解脫然後又有一個明確的目標,所以才能這樣心無旁騖吧!

當然全職學習也是有很多困難,你會遇到的困難,我都幫不了你,哈哈哈哈,但還是可以聊一下啦。第一個要解決的就是經濟壓力,呼應上一句,大家的狀況都不同,只能說加油!另外就是心態吧,畢竟是破斧沉舟了嘛,就算一開始已經下定決心,但是時間久了還是很容易懷疑自己,這個時候選 Lidemy 的價值就體現出來了,因為胡立他會肯定你選擇放棄的決定,不是補習班主任式的『假肯定、真情勒』那種討人厭的反話,因為這個計畫賺錢也不是首要目標,看收費方式就知道了,胡立很佛啊,不適合那也只好放棄啦,小事。但反而是他這種態度,你會冷靜下來思考,所以是真的要放棄嗎?我建議大家在這種時候可以回頭看一下自己目前為止都學了些什麼,你會發現,你超屌。我自己認為掙扎是好事,只有努力思考過了才知道自己想要什麼,也比較不會後悔,你可以理直氣壯的說『我有想過啊!』。不過說回胡立,也不是說他就這樣放你自生自滅,從他第零週是排心態建立看你就隱約可以發覺,他蠻關心你心態變化的,我們這一期因為有助教的關係,他其實比較退居二線,跟我們的互動沒那麼頻繁(不過聽說他本人沒有很愛這種模式,所以第五期會怎樣我也不知道),這就變成除了出現在影片右下角,每次他出場就是在每週的隨意聊寫勵志專欄哈哈哈哈哈哈哈。

Final Project & 求職

這兩個我覺得可以一起寫,其實到了這個階段課程已經都結束了。客觀上,沒有做 Final Project 都還是可以求職,胡立也有說有沒有的差別不大,但是我不信!哈哈哈,其實是要求職之前其實有點慌啦,你會覺得怎麼辦,我可以嗎?做 Final Project 是一個可以肯定自己的好方法(也是認識同學的好機會)。所以主觀上,第一次的學以致用,對求職前的心理建設而言,還是很有用的!不過要小心時程不要做太久,我自己是不斷在寫的過程中提醒自己我的最終目的是求職不是產品本身,雖然這樣的心態有點急功近利,但的確減少了很多決策的時間,很感謝那時候一起做專案的同學們,大家都好罩!我們完成專案初版後就緊鑼密鼓地開始者工作啦,也沒有分享給大家學得有點可惜,趁現在我偷偷的來分享一下!

甜之呼吸

求職就跟期末考一樣,不斷的在補技術題,不過還好我們的講義很精準,所以那段時間就是一直再回頭看之前老師出的簡答題,和看其他同學分享的面試心得,真的很有幫助。我覺得不用怕找不到工作,就目前而言 web 還是一個很缺人的產業不管前端還是後端,你需要的只是一點耐心和信心!

回顧

如果你問我我是怎麼堅持下來的。首先,我是跟我女友一起上課的,呵,這真的很重要啦,課程上的東西都可以一起,比較不會有代溝。我是建議大家最好要先跟另外一半先討論好,不然自學這件事真的會花費你大量的時間,還有心思喔。某種程度上這是社會上少數單身友善的環境喔!?還有就是我真的挺喜歡寫程式的,越寫越喜歡,或是說比較喜歡工程師的生態吧,網路上資源很多,樂於分享的人也很多,而且還有能力去把自己的想法實踐出來,很容易累積小小的成就感。最後還有個不負責任的『觀點』啦,當初我也是受夠了傳產,就想說工程師,畢竟是靠動腦吃飯的,工作上你可能還是會遇到白目但是遇到白癡的機率應該會小很多吧!我還挺菜的所以這件事我還在印證中啦,但現在看起來好像是這樣沒錯!讚!

最後就是感謝,首先是謝謝胡立開始了這個計畫,不只是課程,社群也讓人很有歸屬感,第一次在結束一件事情的時候會有點感傷,可能是因為你能真切地感受到除了自己,不管是老師助教還是同學大家都花了很多心力在認真做同一件事吧。接著是助教,明明大家也都是剛剛完成計畫,其實自己也是在適應新的工作,但每週還是花很多時間在幫我們解決問題,更不要說還有自發性的談話節目哈哈哈哈哈,minw 跟 clay 根本就變成最熟悉的陌生人。還有每天分享自己學習或是生活大小事的大家,看大家都在煩惱我就安心了!?哈哈哈哈哈,每天滑學習心得真的挺開心的,課程結束的現在偶爾還是會滑滑,還好還是有些同學有在更新!讚讚

小建議

  1. learing report 的首頁啊,不是有一個可以自己寫課程進度的地方嗎,因為後來有些人都有跳關,例如我...但是那裡沒有支持跳關的功能,一定要按照順序點,所以變成我現在還卡在第17週...有點哀傷。
  2. 課程裡面我覺得就是測試和AWS的部份希望可以多說一點吧!我看大家很多也是在講這部分!
  3. 其他部分我是覺得都不錯!學習曲線很合理,也都會跟你說如果想要在更進一步可以怎麼走。

學生心得:heidiliu2020

「平凡的我啊,哪有時間低頭回望?」——《排球少年 264 話》

同步發布於 Medium:轉職前端工程師|Lidemy 結業心得與求職總結

前言

各位安安,我是 Heidi,從年前就一直思考,應該如何總結這一年來的學習心得,結果又拖到現在,不知不覺都已經入職快兩個月了XD

這篇是記錄我在 Lidemy 學習半年的結業心得,也會稍微帶到多人協作和求職總結,文章大綱如下:

  • 背景與動機
  • 為什麼選這個計畫?
  • 為期半年的課程
  • 挑戰多人協作
  • 求職之旅
  • 結語

背景與動機

亂點技能樹…卻又好像環環相扣的人森。

生農學院畢業,但其實是黑手指,路邊花草樹木一問三不知;在大學時期選修日文,透過這門語言開啟新世界的大門。畢業後前往日本打工度假一年,之後曾在一間日商公司擔任窗口,發現自己內心深處還是想嘗試在日本工作,即使我不知道自己究竟想要什麼,仍對自己的未來感到徬徨不安。

直到後來,偶然參加一場選考會,很順利地拿到一家餐飲集團的 offer,也預計在去年年初赴日工作,一切看似順利,卻這麼碰巧遇上疫情爆發。經過反覆掙扎,終於在鎖國前一週決定放棄簽證資格,又以此為契機,讓我重新思考未來方向。

然後,就沒有然後了,可以說是與程式語言毫無關係的學經歷。

或許也因為經歷如此平凡,對自己一直很沒有自信吧。好像有點會讀書,直到大學時才發現自己是死讀書,一路走來,總是被沉重的學歷枷鎖壓得喘不過氣,只想跳出無限循環懷疑自我的迴圈。

在這段迷惘的歲月,不斷與自我對話,果然還是該考公職嗎?還是準備研究所?曾經的留學夢呢?我到底,要的是什麼?這個問題的盡頭,終究只能靠自己去摸索找出答案。想轉換未來的跑道,跳脫自我厭惡的循環,那就必須嘗試「學習新技能」,這是當初浮現在腦海中的一條路。

而在去年三四月時,想起之前為了架設有關旅行遊記的部落格,在 Hahow 購入有關動畫互動設計課程(發現不少同學都看過這堂),在學習過程中,發現自己渴望更深入探索前端領域(其實是因為中間卡關,轉而尋找更多資源),於是又陸續透過六角學院、YouTube、Udemy 等平台,開啟自學網頁程式這條路。

為什麼選這個計畫?

在自學過程中,瞭解到自己是需要透過「目標與成就感」產生「動力」的人。在這片浩瀚的前端海洋,縱使有著取之不盡的資源,我卻不曉得此刻的自己需要什麼、應該要做些什麼,心底總會感到不踏實。我想成為一名前端工程師,但究竟自己是否真的喜歡前端?還是只是因為我還沒接觸到更多?

直到我在 Medium 平台,閱讀 Huli 寫的《零基礎的小明要如何成為前端工程師?》時,無意間發現《程式導師實驗計劃第四期》正開放報名。看過 Lidemy 官網的 課程大綱 之後,瞭解到這是為期半年的前後端線上課程,課綱涵蓋程式基礎到專案開發,也能夠藉由這個機會接觸到後端,是我決定選擇 Lidemy 的原因之一。

或許,我能夠在這裡尋找想要的答案。我想要透過這個計畫,去瞭解自己究竟適不適合走這條路,跟著 Mentor 指引的腳步,把不足的部分逐一補足,讓自己更確實朝向目標邁進。

然後,還有另一個原因,是在看到 Huli 本名時,總覺得這名字有點眼熟,谷歌了一下發現以前竟然有同校 N 年過(還跑去翻了畢冊),默默把這段緣分收在心裡,等我未來轉職成功就來認親吧!擅自訂下了奇怪的目標XD

總之,不管過去成長背景如何,想要走上轉職這條路,我想最重要的還是「動機」吧。是什麼原因想要轉職?其實理由因人而異,但這個「理由」必須能夠驅動自己往前邁進,必須能夠先說服自己,未來在學習途中,在準備履歷作品的過程,在求職面試的時候,才不至於顯得動搖,這也就是心態建立的重要性。

之所以會想強調這點,是因為自己在求職階段,或者即使正式確定 offer 以後,被問到「為什麼想轉職?」這問題時,還是不免感到自我懷疑,我真的有能力轉職成前端工程師嗎?但後來我漸漸明白了,這或許就是所謂的 冒名頂替症候群 也說不定。不管進入哪個階段,始終會感到害怕,怕自己只不過是運氣好,怕自己其實沒有足夠的能力。所以呢?這時心態建立就非常重要,知識能力可以一點一點慢慢累積,可是心態一旦崩潰,就必須花費更多時間才能重新振作起來。


為期半年的課程

關於課程內容,其實課程大綱都寫得蠻清楚,所以這邊就不贅述,舉幾點個人認為比較需要注意的地方:

  • 心態建立的重要性
    • 課程第零週就是心態培養,即使在學習過程中感到迷惘時,也會再回頭讀這幾篇文章。
  • 作筆記的重要性
    • 我習慣使用 HackMD 寫筆記,優點是使用方便、能夠同步到 GitHub 備份;缺點是不易進行管理、刪除後沒有垃圾筒還原(有次誤刪了只好寄信請後台幫忙還原)。
    • 另外也很推薦 Notion,功能非常強大,能夠客製化、有系統性的整理每篇內容。
    • 集結起來放到部落格,就是一個能展現自己的作品,也能幫助自己快速複習重點。如果從頭來過,我還是會寫筆記,但要注意不要花太多時間整理,進度落後反而本末倒置。
  • 跟上課程進度的重要性 >>> 完全理解內容
    • 約在第八週的串接 API、第九週的後端基礎、第十七週的 Express 時,進度慢慢落後了,或許是因為接觸全新的知識,又想要「完全理解」,其實不必執著一開始就聽懂,有時候藉由實作過程來理解,也是很棒的學習方式。
    • 卡關時就跳吧!找到適合自己學習的步調很重要,但跟上課程進度也同樣重要,一旦落後了就很難再跟上,因為知識只會越來越複雜,有些東西以後你就會懂了(是真的)。
  • 找到能讓你與眾不同的地方
    • 雖然大多數人光是想要跟上課程進度就很吃力了,我自己也沒能達成,但我想這點還是非常重要,畢竟面試官在收到同樣課程出身的履歷時,會傾向選擇哪種類型的人才?過往經歷也好,對程式的熱情也好,該思考如何讓自己變得更突出。
    • 因此除了課程內容,能夠再結合自己的興趣、專長去實作一個 Side Project 是更好不過的選擇,就算沒有時間準備,至少要把課程作業的完整度提高,學會使用某種語言刻出 Todo List 和 Blog 以後,其實基本技術能力也差不多具備了。
    • 試著將作品的圖形、資料作出變化,有設計能力,就把畫面刻得更精緻;對後端感興趣,就更深入去瞭解 MySQL 語法、結合資料庫和伺服器,面試時更能夠拿出來展示發揮。
  • 社群的影響力與重要性
    • 「一個人可以走得快,但一群人可以走得遠。」把握社群的力量,以前的我其實不太敢發問,到了課程後期,才漸漸地鼓起勇氣找人解惑,真的太慢頓悟,浪費不少時間在自己撞牆摸索。
    • 善用谷哥大神的搜尋力量,像是 Stackoverflow 這類的技術論壇,類似的問題別人說不定也曾發生過。也因此技術方面的問題,通常建議使用英文作為關鍵字,才能找到更多搜尋結果,畢竟 debug 時跳出的錯誤訊息也都是英文XD 有時找不到解答,往往是下錯關鍵字的緣故。
    • 當卡關太久就是該尋求幫助的時候了,不管是老師、助教還是同學,都是能夠尋求幫助的對象。
  • 學習系統的重要性
    • 不知不覺進度報告也累積了二十多萬字,我很喜歡像這樣把學習過程視覺化,能夠知道自己堅持了幾天,進度到哪週,累積多少學習心得,也能不時回顧自己當初記錄的種種,但也要注意不要花太多時間在這上面。
    • 除了進度報告,學習系統也是繳交作業的平台,在這裡能參考同學們的心得和作業,因為總會有跑在前頭的強者同學,無形中也成為一股推進力。如果當週作業想不出解法,也能藉由範例來學習。有時把問題寫下來,會有熱心的同學來為自己解惑XD
    • \許願希望未來的學習系統/:課程進度能支援跳關、能夠以滾輪方式顯示過往動態、能夠有書籤功能來收藏喜歡的心得。


挑戰多人協作

很喜歡這期新增的 [PD101] 淺談產品開發與工作流程 課程,能補充工作流程與產品開發相關知識,讓未曾進入這個業界的我們,增加對未來工作環境的想像。

到了課程中後期(十一月左右),差不多要來準備多人專案,在 Slack 頻道上剛好看到有同學在徵人,當下想著應該把握這個機會,於是組成了四人協作團隊!

協作時間規劃大致如下:

  • 十二月初~初期討論:大約花一周的時間,和組員們討論協作專案方向,再依照主題制定需求,並撰寫 User Flow、Wireframe、User Story,使用 Jira 來管理任務,嘗試敏捷開發。
  • 十二月中~開始動工:在這一個月的時間,基本上是透過 Slack 和組員密切討論,每三到五天就會透過 Google Meet 視訊,以同步分配的工作進度,像是切版進展如何、遇到哪些問題、確認是否刪減需求等等。
  • 一月初~重構與部署:連作夢都會夢到自己在寫扣,然後在夢中思索怎樣改寫會更好,真的不誇張,從沒想過自己能夠進入這樣的狀態(?)那是一種很難形容的感覺,雖然那陣子腦袋不斷運轉,晚上也幾乎睡不太好,日子卻過得異常充實。
  • 一月中~完成專案初版:因為和組員們都希望能早點完成專案初版,接著就開始準備履歷求職啦!

其實個人感覺遇到的最大困難是在初期討論,因為所有人都是第一次合作開發,許多地方必須靠自己去摸索。過程中需要磨合並整理彼此的想法,尋求 Huli 和助教、同學們的幫助,也因此在最後完成了專案初版的當下,那股成就感是前所未有的。記得要把這些感受好好記錄下來,之後在面試展示作品 DEMO 的時候,就可以著重於協作過程中感受最深刻的是什麼。

因為完成的作品還有不少能夠優化的地方,一開始也忍不住擔心這些地方會不會反而變成扣分點,其實倒也未必。既然知道可能會被點出哪些點,就針對那些問題提出未來能夠改善的方向(即使不一定真的有時間去修改),至少在面試當下,反而能成為表達邏輯的一個施力點!

多人協作想要達成的目標是什麼?是開發一個完整的產品?還是累積合作經驗?既然最終目的是為了求職,那麼答案想必是後者,不然直接去創業就好了吧XD

最後附上專案 GitHub 連結,主題是「Sweet Breath 甜の呼吸」,採用前端技術 React Hooks,搭配後端技術 Express、Sequelize 進行開發。雖然很可惜只來得及完成 P1 功能,沒能挑戰金流或第三方登入串接,但藉由這段協作經驗,還是讓我深刻體會到,能夠實際寫出想要的功能是多麼爽快和充實XD

因此,還是很推薦找組員一起挑戰協作,能夠在工作前先累積合作經驗。感謝很罩的組員們,不管是在處理 Promise 資料卡關時,還是架設後端資料庫時,真的受到很大的幫助和鼓勵,也讓自己更有信心去面對往後的求職!


求職之旅

這期開設的 [INT101] 求職入門,包括準備流程、面試順序、常考技術問題,以及如何做自我檢討等等,讓非本科轉職的我們能夠在短時間內抓住準備方向,也提到了正確的求職心態,就是「永遠不可能有準備好的一天」。

還有去年底在 Line 開設的面試衝刺群,連續十五天要在晚上 11 點前回答指定題目,提供強迫自己訓練口說的環境,同時也能透過同學的回答,學習不同風格的答題技巧。

現在回想起來,直到開始進行協作專案、加入面試群,到後來頻繁尋求老師的建議、同學分享交流心得,這段期間,才真正有和同學們「一起」在同一個計劃學習的感覺。

在多人協作告一段落之後,就馬上開始準備投履歷和面試,約在一月中左右投遞,主要是透過 104、Cakeresume、Yourator 等平台投遞履歷,數據結果如下:

  • 投遞履歷:71 間
  • 安排面試:14 間
  • offer:4 間

在接到第四家 offer 後,瞭解到這差不多就是自己的極限了,薪資落在 35k~42k 之間。或許曾天真的想過,說不定有機會在第一份工作就進到當初設定的目標公司,但在瞭解與旁人的差距以後,也慢慢認清現實,於是在年前決定要去哪間,結束這段求職旅程。

想起在 Yourator 博覽會的某攤位,有遇到一位人資主管,稍微瀏覽過我的履歷後,便很直白的告訴我:「現在的你沒辦法在公司存活,但我很期待半年後看到你的成長,這份履歷我就先收下了。」當下的我是既失落又興奮,是啊,「現在」的我還遠遠不足以勝任,也沒什麼,就是繼續努力而已,未來還是有挑戰的機會。

其實在剛確定進入現任公司時,心情是有些徬徨的,畢竟公司目前主要使用的前端框架是 Angular,明明過往在課程中學習的是 React,先不論自己是否能夠快速上手新技術,會不會連好不容易熟悉的 React 都逐漸遺忘了呢?總之就是對未來充滿各種迷惘。

但是在經過一個半月的磨合,自己也慢慢釋懷當初的決定,主管和同事們人都很好,很願意分享技術,還有我很多能夠學習的地方。即使現在的我仍在慢慢摸熟 Angular 和 TypeScript,最近終於有點實質產出,能夠修改一些簡單的 Bug 了,可喜可賀!之後再來好好整理一篇上工心得!

結語

不管想做什麼,少一點猶豫害怕,多一點勇敢果決。如果我能早一點開始學程式,早一點跟完課程,早一點完成協作專案,早一點開始求職……或許我能夠有更多選擇也不一定。但更重要的「開始」,現在的我終於邁開步伐,與過去的懊悔告別,正式踏入全新的領域。

失敗了其實也不會怎麼樣,這點在 Huli 的隨意談其實也有提過,不過是認清自己不適合,或是目前還沒有足夠能力罷了。也許在更遙遠的未來,這些新技能會派上用場也說不定,更重要的,是直到我真正放棄的那一刻為止,就還不算失敗,我只是比較慢抵達而已。

如果問到未來的目標,回想起自己在報名信中是這樣寫的:

最終目標是「轉職成為軟體工程師」,並且實現「在日本生活」這個夢想,現階段想把這兩個目標結合在一起,讓自己產生更大動力去達成。

直到現在,這個目標還是沒有改變。想要好好累積經驗,想要相信自己真的有能力勝任這份工作,別忘了,這還只是個開始,而我終於站在這條起跑線上,要繼續朝向下一個目標邁進。

感謝家人、親友們的支持,讓我能夠全心投入學習程式語言。
感謝 Huli、助教、同學們的陪伴與鼓勵,讓我知道在這條轉職路上自己並不孤單,隨時能夠尋求他人協助。
最後也感謝不曾放棄的自己,讓我能夠與自己和平相處,找到未來想要前進的方向。

學生心得:ivymuchacha

背景與轉職動機

過去主要從事行銷相關的工作,不管是實體通路、新品規劃到線上通路、大促活動等等都有經歷過,然而一直都有種不確定自己的價值,也覺得自己的替代性很高,活動籌備的過程很消磨自己的熱誠,即使達到業績目標,甚至超標,成就感的累積還是趕不及倦怠感的直直增加,開始懷疑自己到底是不適合繼續在這樣的產業工作。

因為在電商工作過,有去自學數據分析的軟體,像是 MySQL、Python,雖然會一點皮毛而已,但在工作實務中用到時覺得很新鮮很好玩,會一直嘗試想要撈到自己需要的數據,開始發現自己很喜歡這個從 0 到 1 的過程。

2020 年就開始想要自己學習程式,一開始查了很多資源,也有包含 "Alpha Camp" 或是資策會等等,但因為不確定自己是否適合是否喜歡這樣的工作,所以也不敢輕易嘗試直接給他洗下去,保守的我還是想先自己找找免費的資源試試看,當時也有找到 "程式導師實驗計畫",但那時候是第三期剛結束的時候,還看到老師發文說第四期近期應該不會開吧,難過的直接放棄,繼續找其他資源。最後選擇 The Odin Project 的課程,開始每週訂進度計畫和男友一起學習,希望可以利用 2020 一整年的時間學些新技能。那時候並不是抱著我一定要轉職成功的心情,只是一種想要學學新東西的想法。然而,因為過去對前端完全沒有涉略,所以在訂進度的時候也不是很確定自己這樣的進度對不對,是不是過多或過少,也因為是全英文的課程,在理解方面我也不是很肯定自己是否百分之百的了解課程內容,就這樣模模糊糊的學,每週進度一直 delay 的學了三、四個月。

在五月的時候,忽然發現 “ 哦哦哦!程式導師實驗計畫第四期很像即將要開始招生了耶!”,立馬放下手邊的 The Odin Project,開始動手完成需要的資料、介紹跟作業,交出後如釋重負,等待老師的通知。入取後,簡直開心到不能自己,覺得我的未來很像多了一條又亮又美的路可以前進呢!

殊不知,我就是個虎頭少女,一開始充滿幹勁、希望與動力的女子,然後就蛇尾掉惹嗚嗚。學習程式的這段路經常會自我懷疑,想放飛自我,後繼無力,我在哪裡我是誰 ...

程式導師實驗計畫

首先程式導師實驗計畫我覺得很棒的地方,就是有安排每週的進度,這和我學習 The Odin Project 模模糊糊的感覺很不一樣。我可以清楚知道這週該做什麼,該看哪些課程,重點是什麼,作業有哪些,也因為需要每天寫學習心得,可以很清楚知道大家都跟得上,我應該也沒問題,跟著進度一步步的完成。

另一個很棒的地方就是社群,有老師和助教可以詢問,有改作業的系統,也有不定期的直播與實體聚會,並搭配是在哈囉世界podcast 服用,雖然我很少主動詢問問題,但這個有後路的感覺讓我很放心。作業訂正時也可以看到自己寫不好的地方,或是可以優化的地方,再來調整修正。再來,因為我是和男友一起進行程式導師實驗計畫,相對其他孤軍奮戰的同學來說,已經有個夥伴一起並肩奮戰真的很幸運!再加上同學們每天的學習心得,大家一起努力的感覺真的讓人不孤單,雖然也會有一點怕跟不上進度的不安感,但大家一起進步的感覺更激勵自己。

計畫開始 Ready GO!

開始的第一週,充滿希望與動力的我,馬上進入第一週內容!從交作業的方式,Git 控制、CLI 使用方式等等,這週作業也是我之後最常打開來看的,因為每次交作業的時候都要再打開來確認一下流程哈哈。

其中,最讓我覺得特別的是 HW2 理解放鬆很重要。學習程式的時候,一定會有卡關到不行,或是找不到錯誤,自我懷疑,懷疑人生的時候,身為鑽牛角尖,想跟他戰個你死我活的虎頭少女,怎麼能輕言放棄,但很快的因為一直鬼打牆而消磨掉自己的動力,這時候休息就很重要了,放飛去吃個飯、吃個甜點,睡個午覺都好,交給淺意識去處理,有時候再回過頭來處理,就會發現 “ 欸!我怎麼只是拼錯字!” 或是 “ 啊!我知道可以怎麼寫了!”,這樣的休息很需要也很重要,可以在第一週的時候就有建立這樣的觀念,對未來學習程式的路上也更可以堅持下去。

接下來就是進入 JS 基礎邏輯、HTML、CSS 等等內容,可能因為之前有在 The Odin Project 模模糊糊的學過,所以在一開始的課程,完全沒什麼做筆記,也還算是跟得上,尤其在第六週完成切版餐廳頁面作業時,頓時充滿自信與希望,覺得很像可以耶,發下 “ 我應該會學得很順利!” 如此這般的豪語,殊不知未來的路艱險困難啊~~

呃啊!我不想努力惹~

原先美好的想像,莫名的自信逐漸開始崩壞 ...

因為邊工作邊學習的關係,老實說真的蠻累的,平日上班的時候,就是利用上班前和下班時間開課程學習,週末基本上也是都泡在咖啡廳,趕作業趕進度學習程式。尤其在上班日都在下雨,好不容易週末竟然給我放大太陽的時候,就會開始內心苦命小媳婦劇場,很想出去飛,但我還是把自己抓回來,乖乖認真學習追追追。然而因為課程內容越來越難,作業內容也越來越不容易完成,挫折感節節高升。這時老師會在每週日準時下凡,在隨意聊裡分享大家可能會遇到的懷疑與狀況,並給大家一些建議加油打氣,這樣的隨意聊支撐我每週繼續下去的動力。

好景不常,虎頭少女在工作方面開始遇到各種鳥人鳥事,又要進入充滿各種大促活動的下半年。學習方面,每天安排學習的內容開始來不及完成,跟上大家每週準時交作業越來越辛苦,在電商工作的虎頭少女越來越母湯 ~ 負能量累積越來越多,虎頭少女攔不住內心的小媳婦,大喊我不想努力惹~~ 要身兼學習與工作真的不是件容易的事情,很佩服那些邊工作邊學習的同學,你們真的很棒很不容易!

虎頭少女雖然嘴說不想努力了,但還是很老實的繼續想辦法追上進度完成作業,一方面也在衡量自己的能力狀態與未來的方向,經歷了百般煩惱曲折,虎頭少女決定要離職,好好的學習程式!

回不去惹我八點檔的愛恨情仇

下定決心好好學習後,每週都是想辦法追進度與完成作業。老師一開始就有強調,比起其他學習程式的天使課程,程式導師實驗計畫是越來越困難但卻扎實的魔鬼訓練,會希望培養出有一定基礎與技能的前端工程師,從基礎開始穩紮穩打的漸漸進階,學習一個個觀念、工具、框架,而非程式背景的我,每次學習新技術的時候,我都會大大的自我懷疑一波!

大概看完每週的作業與課程簡介後,我都會給自己一個很大很大的焦慮感,內心的劇場大概是這樣,“ 完蛋惹 ... 這也太太太難了吧 ...”、“不!我可以!我得行!”、“這個作業老師是不是出錯惹 ... 我做不出來耶~ ”、“天啊 ... 我這輩子永遠追不上進度 ... 我來不及完成惹”,如此這般大大小小的聲音會充斥著我的內心,焦慮感爆棚。但這真的沒什麼幫助,我也不會因為這些劇場聲音讓我寫得比較順利,但因為這些聲音發生的太頻繁,每週準時上演也同時消磨自己的動力,大概在課程第十五週左右,我決定終止小劇場的演出,先學習先寫再說,卡關卡住的時候再來播出。

這個小小的改變真的省了我不少力氣,現在回頭來看之前不知道在上演什麼八點檔世間情,那些以為自己跨不去的高牆已經都在身後,而且看起來很像沒有當初那麼高大,那些以為會壓垮我的惡婆婆如今笑得如此慈祥可愛,我都跨過了,我是可以跨過的!如果現在跨不過,就先放著吧,先躺好吧,我就放著 Express 還有部署放了一個月,時候到了再來處理吧!

沒錯!我覺得在學習程式這段路程,就是有很多新的技術、不熟的觀念、鬼打牆的錯誤、部屬不上去的問題會發生,那我們就讓它發生吧,看看會發生什麼事情,好的壞的都會成為自己的一部分!

那些我早知道會更好的事

課程一次看不懂就看兩遍,還是看不懂就看兩遍。如果還是不懂就去找其他資料啊!

以前不曉得在堅持什麼,但是課程看一次跟兩次真的差很多,第二次都會發現 “ 咦!這個我第一次的時候怎麼沒聽到!”

一定要跟著老師實作

看著老師示範的時候,都覺得可以可以,這我 ok ,但是其實自己做的時候,有時候就是不行,這時候出錯的地方就會成為以後的注意事項,減少之後犯錯的失誤!如果沒有跟著實作,作業直接給他寫下去,常常會發生小錯累積過多,導致不知道我到底錯在哪裡,卡關卡到不行的狀況,會浪費更多時間...

有筆記會更好

雖然老師在課程中一直強調不要花太多時間做筆記,但筆記真的看可以幫助在回顧的時候,快速找到需要的資料,在複習跟準備面試的時候可以很快速的閱讀精華!

Final Project 事情不是你想的那樣

完成課程後,最終決定和同學一起完成 Final Project,合作的過程真的可以學到很多!

原先的想像其實以為就像是做作業一樣,只是不用一個人完成全部的功能,並加上前後端都會參與實作,然而事情不是你想的那樣!一群人一起協作完全是另一件事情呢!

文件規格、功能分工、協作工具、程式碼同步、開會討論,各種大大小小的問題需要解決,也因為有負責後端的部分,更了解產出 API 該如何實作。團隊合作上也很謝謝同學很罩,遇到問題大家一起想辦法找資源解決,進度落後也會互相 Cover。也很感謝老師的建議與其他組同學的熱情分享,在實作專案方面真的學習很多,真的是很寶貴的經驗!

感恩組員!讚嘆組員啊!

求職人生

過去我的求職人生一直都不是很順遂,但這次求職過程中,接到面試邀約的數量真的和過去相差很多,職缺機會與邀請真的還蠻多的。

一開始很積極的海投狂灑履歷,想要有機會多去練習面試,而老師整理的 INT101 還有 Line 練習群組真的是幫助很大,面試的技術問題大多都是那些考古題,剩下的就是靠每次面試去練習,如果問到不會的回去再查詢補足。

幸運的是有在面試期間遇到很熱心的主考官,除了給予 Final Project 上的建議,也會在觀念上熱情分享,甚至分享自己的學習求職歷程,是很棒的面試經驗。當然也有不幸運的遇上奇怪的考官,披頭論足般的嘲諷讓人不舒服,或是沒拿到想去的 offer 而感到失望,但也很感謝 Lidemy 這樣的社群,大家的分享與打氣,讓自己可以保持希望,相信自己可以找到理想的工作!

總結

程式導師實驗計畫是個很棒的學習計畫,身為虎頭少女的我竟然可以持續堅持並完成計畫,也成功轉職找到工作。

我覺得讓我持續的動力,一方面是和男友的一起學習,互相監督彼此的進度,有問題也可以一起討論解決,有人分擔分享很重要。再來是很棒的課程安排,清楚的學習架構與每週作業進度安排都還蠻剛好的( Express 那邊有點吃力 ),順著這樣的學習脈絡,相對自己找資源摸索更無痛也更快進入狀況。另一方面就是社群的力量,每日進度分享、老師的每週開示、助教的溫馨 podcast、改作業系統等等,在每一次下沈的時候又把我提起來,讓我更有動力的堅持下去!

即使第四期程式導師實驗計畫已經結束,老師和助教還是很熱心,如果有問題依然願意回答。很喜歡也很希望這樣的社群可以繼續下去,即將進入工作的我,有這樣一個溫馨的 Lidemy 娘家,非常感恩:)


許願池

希望每一週的作業都可以提供解答或是作業講解的影片

剛開始的時候有解答還蠻幫助作答的,但到後期解答變少之後,真的卡到不行,卡到懷疑人生,如果都有解答或作業檢討影片,一方面可以配合老師講解更加理解,另一方面也可以了解是否有其他更有效率的解法!

希望可以增加留功能自己寫的部分

很喜歡課程中老師留功能給我們自己寫(ex. FE302 / React 實戰篇 - 部落格 / 練習:實作單一文章頁面),相比僅將課程看完,更會有跟著課程一起走的感覺,同時也可以確認自己狀況,有沒有在不懂裝懂,在後續寫作業上 Gap 也比較不會那麼大。

希望可以提供課程示範的程式碼

跟著影片寫的時候,常常滑過去滑過來比較難紀錄老師的示範內容,如果一開始有提供程式碼,跟著看後在自己實作,可以減少一些鬼打牆的時間!

加入測試或其他選修課程

在求職的時候發現蠻多職缺有這樣的需求,不一定一定要放在課程必修裡頭,如果有一些選修課程感覺不錯!

學生心得:JAS0NHUANG

Lidemy 程式導師實驗計畫第四期 - 求職尚未成功心得

關於寫心得

關於寫心得的心得就是:心得有夠難寫!

沒有胡立流暢的寫作思路,看看他最近條列式的流水帳「只是想寫一下」都可以寫的引人一口氣看完。 :D

這裡回應一下流水帳裡提到關於**,我想胡立也清楚,我自已覺得**的目的其實不重要,重要的是找到樂趣,就是讓你覺得好玩,不去玩受不了(就像文章裡提到玩 CTF 的狀態),這就是驅使我去做各種**很重要的因素,嗯……好像也是驅使我學程式、學外語、學吉他、學一堆有的沒有的東西的動力。

離題了,總之心得寫了又刪刪了又寫,感覺很浪費時間,所以就一直逃避,也因為工作找不到,覺得自已算是拖累計畫成功率的分母,總有種失敗者想要躲起來的感覺,看到同學寫下「網路心得文有倖存者偏差」,我應該……算是失敗還敢上來寫心得的倖存者吧?

心得總是要寫,寫不寫心得也不影響求職是否成功,自已這大半年來經歷的雜記分享出來就算對別人不一定有幫助,也可以當作一個有趣的失敗小故事看看囉!

為什麼報名程式導師計畫

驅動我人生一直前進的主要動力有兩個,一個是上面提到的樂趣,一個就是壓力(或者說責任?),這兩點大概就是我要參加程式導師計畫的最深層原因,寫程式、解決不一樣的問題、學習新技術、感覺到自己的進步對我來說是很有趣的,但是其它事情也很有趣啊,我也很想花時間去學好樂器,去**,去遊山玩水,去學各種外語……,所以這就是壓力之下的選擇了,因為其它事情比較難轉換成穩定的收入,有點年紀又有妻小,已經不太容許我隨心所欲的做自己想做的事,學程式感覺好像就是一個不錯的平衡點,可以做自己有興趣的事又有機會能找到一個穩定的工作。

主線:程式導師計畫

開始寫這篇心得的日期是 2021 年 2 月 13 日,參加程式導師計畫第 246 日,中離大概 30 天參加 42 游泳池,跳過第 18、19、20、23週,第 24 週用 Redux 寫部落格已完成,但是還沒寫簡答題不敢交作業,虎頭蛇尾沒有確實完成課程。

回顧一下參加課程的經過:

參加之前

過於雜亂的人生歷程就不加贅述,說好聽一點是對這個世界充滿好奇,其實就是什麼都想學,什麼都沒學好。

程式經驗:大學學過一些 HTML/CSS(一個 FLASH 還是主流,奇摩站還沒被 YAHOO 吃掉的年代),大概 10 年前買了個二手筆電後開始自已亂玩 LINUX(我家還有 Ubuntu 當時免費寄送的 10.04 安裝光碟),跟著網路課程學了一些 JavaScript、Python。

剛開始學 JavaScript 的時候就有看過一些胡立的文章,第三期的時候其實也有想要報名計畫,但是因為工作或其它原因就沒有行動(嗯,我就是一個做一件事情要龜毛半天、半年、半輩子的人……),一直都有在跟胡立的消息,看他寫的文章除了學技術也感覺像是在看有趣的散文,剛好遇到 2020 這個神奇的年度,失業的狀態下開始比較認真的想要學好程式,看到第四期應該會開課的資訊,找到 「先別急著寫 leetcode」就開始學了(大推程式新手可以從這個課程入門,這是當時寫的課程心得),抱著試試看的心情準備好報名資訊裡提到的要求就寄出報名信了,寫這篇心得時又去翻出當時的報名信來看,雖然目前還沒有找到工作,但應該可以說是有保持著初衷吧?!

蜜好幾個月期

第 1 週一直到第 16 週(大約從 6 月 12 號計畫開始到 10 月初),大概三個多月的時間,一直都保持蠻好的學習狀態跟慾望,我的學習方式也沒有什麼特別之處,就是看課程影片然後寫作業,遇到有興趣的延伸主題就再去查資料,加上跟很多同學一起學,每天可以看大家的進度、大家的作業,在 Slack 上跟同學討論,感覺真的很充實。

學習的內容雖然有不少東西之前就接觸過,但是有完整的課綱與作業,學習起來很有系統,也比較有效率,也把以往錯過的基本知識補齊,跟自學時東學一點、西學一點,沒有明確目標差別很大,我自已是覺得,如果自已能夠有效的設定目標然後確實去完成的話,跟著程式導師計畫的課綱就可以自學了,但是這個計畫的課綱畫出了架構,最重要的內容還是胡立的教學影片、有老師助教解答問題、還有一個社群讓同學一起學習,這些都是自學沒辦法得到的。

關於這段時間的一些學習心得已經在幾個複習週的心得文章裡寫過:(第五週第十週第十五週)有興趣可以去看看。

三個半月的學習內容大概可以分成幾個部分:

  1. 程式開發工具與環境:基本的 GIT 工作流程、熟悉 command line。
  2. 程式基礎與網路觀念:JavaScript、網路架構、基礎演算法。
  3. 前端技術基礎:HTML/CSS、API 觀念與串接、SPA、JavaScript async 語法。
  4. 前端工具與框架: jQuery、bootstrap、SASS、webpack。
  5. 後端技術基礎:PHP、MySQL、AWS、EC2、LAMP、DOCKER、NGINX、資訊安全。
  6. 進階 JavaScript:JavaScript 的運作原理、原型鍊、閉包、物件導向、promise 與 async/await。

每個部分環環相扣,沒有什麼冷場,我自己是覺得前 16 週的課程算是規劃的很完整。至於一片唉唉叫的部署過程,我自己感覺還蠻享受的?!是太 M 還是應該去走 DevOps?總之自己查資料完成 Docker 部署還是蠻有成就感的。

然後除了課程提供的學習資源,我也蠻享受課程之外的自學過程,像是看 Git 官網文件了解 Git 運作的原理([筆記] Git 運作原理),為了寫挑戰題學了一些 Bash script,串 API 時了解了一下 OAuth,了解背包問題、Dynamic programming、BFS(雖然現在可能忘得差不多了),SASS 模組化寫法,研究 AWS、NGINX、DOCKER、MONGODB……

這三個多月紮實的內容,搭配一些小遊戲(Lidemy HTTP Challenge、異世界網站挑戰、綜合能力測驗),以及一些引導自學的部分,不論是基本觀念上或是實作能力上都打下不錯的基礎(自我感覺),也真的比較敢說自已會寫程式了。

另外,自己記筆記的方式也有轉變,之前都會直接寫成 markdown 檔案放在在架好的部落格裡,但是知道 Obsidian 這個筆記軟體之後,就都直接用 Obsidian 記筆記了,關鍵字連結、搜尋、標籤功能真的很方便,還有漂亮的 Graph view,壞處可能就是筆記都有點碎片化,要整理成文章分享的話比較麻煩。

第 16 週雖然課程也跟完了,但是因為中離所以還沒有去做後來老師補上的練習題,還要再找時間會去練習,不然物件導向跟閉包的概念還是很抽象。

支線:42 游泳比賽

開了一個支線,2020 年 10 月 AFK 一個月左右參加法國 42 學校的游泳比賽,其實這個支線本來應該是主線,是在參加導師計畫之前就報了名,當時報名導師計畫時胡立也建議可以選擇 42 學校,學的會更紮實,為什麼最後會選擇參加導師計畫主要還是時間考量,因為 42 的學程要到能夠找實習可能就要一年半,導師計畫則只要大概五個月,感覺好像比較快。

當時會報名 42 學校也是嘗試的心態,收到 10 月有加開一個游泳池的訊息也猶豫了很久,但是想想這種機會之後可能就沒有了,所以最後還是決定去參加「感覺」很恐怖的游泳池,本來也就想說志在參加,沒上也沒差。

關於 42 游泳池的心得這裡就不多談,收獲真的很多,希望能真的找時間生出一篇參加 42 游泳池的心得。

回歸導師計畫

42 游泳回來,開始學後端 Nodejs、Express、MySQL 架站,不知道是不是 JavaScript 一個月沒碰有點生疏?Nodejs、Express 後端寫法不習慣?還是游泳池太過緊繃,總覺得自已有點鬆懈下來,學習、寫作業的效率也沒有之前好,本來想說 11、12 月應該可以把剩下的課程(17 到 24 週)跟完, 剛好就是差不多八週的時間,但是完全高估了自己的能力,兩個月的時間只完成了大概三週半的課程。

17 週後端的課程花了大概三週的時間,其實寫起來還是很有趣,但是不知道為什麼,就是覺得整個檔案的組織有點混亂,對 Nodejs,Express 檔案之間的一些傳遞方式不太熟悉,我是覺的課程可以再多出一個單元仔細用一個實例講一下專案架構,不然一開始接觸框架又不想要只是無腦引用真的有點不太知道如何下手。怕拖到太多學習 React 的時間,所以就先跳過了 18、19、20 週的作業。

React 又有種進入另一個世界的感覺,寫法與原生 JavaScript 真的很不一樣,當然基本語法都一樣,只是整個檔案的結構、資料與畫面分離的概念,其實就是在學不一樣的東西,這部分也跟學 Node、Express 時的感覺有點類似,就是有些被框架包起來的東西比較抽象,雖然有一個用 jQuery 重現 React 概念的引導過程,但是感覺還是不太夠,真的要寫作業時還是覺得沒什麼頭緒,就跟上面的想法一樣,可以再多出一個單元仔細用實例講一下專案架構,讓同學清楚每一個檔案之間的關聯,仔細的分析整個專案的資料夾結構。

React 的部分我是覺得四周真的太短,從介紹 React 的概念、基本 React 作業、hooks、functional 與 class components,一直到 Redux,其實每一個部分都蠻需要時間消化、練習,如果想要學生自己去查資料的話可能又要算上更多摸索的時間,所以我覺得四周真的不太夠,可能至少六週到八週才是比較合適的長度?或者真的就是我學習 React 還太遲鈍、還沒開竅?

42 學校

「不幸」錄取 42 學校,到底是幸還是不幸?我還真的不知道。

幸運的地方是能夠進到這個小有名氣的學校,跟一群有趣的同學一起學習,對於之後求職應該有很大的幫助,另外就是在求職的過程中發現,法國的求職市場好像比較沒辦法接受沒有任何相關文憑的初階工程師,所以就算沒有報名 42,可能在程式導師計畫結束後還是很難馬上找到工作,還要去報名其它建教合作、產學合作的課程,不然連實習機會都沒有。

這裏想要提一下,其實法國求職中心有提供不少類似建教合作的課程,半年、一年的時間,兩週上班、一週上課之類的,但是我看過課綱都覺得沒有胡立的課程紮實、完整,所以當時才會想說直接報名導師計畫,這個選擇單純站在「學習」的立場上來看完全正確,但是站在「求職」的立場上來看就很難說了,因為法國的這些課程會直接讓學員有實習、工作的機會,課程上完其實就可以說自已有 X 個月的工作經驗,而上完「程式導師計畫」只能說自已完成了一個線上課程?即便它的內容完勝法國這些 bootcamp,但是對於在法國求職的幫助好像真的有限。

考上 42 學校的「不幸」就是,真的完全把時間塞滿,幾乎沒有任何休息的時間!

超級無敵充實,也超級無敵忙碌,因為自已其實不是什麼有天份的人,做什麼事情都需要一些時間去消化,導師計畫前期還跟的上也就只是因為有使用過 Linux 系統的經驗、自已找過不少網路上的課程自學 JavaScript,開課之前還把胡立的「先別急著寫 LeetCode」上完,其實到了後期 React 的部分就有點力不從心了。這裡也要向那些帶著正職跟課的同學致敬一下,到底是怎麼做到的啊??

雖然已經選擇一月開學,也算是跟導師計畫錯開了,但是就因為導師計畫後面幾週的學習過程中遇到了一些障礙,拖了一些進度,才會讓一、二月變成導師計畫課程、42 任務、求職三件事情卡在一起,有點分身乏術,但是頭腦、身體雖然疲憊,求職的過程也不太順利,心理狀態還是不錯的,至少在邁向工程師的路上一直前進著。

期末專案

一直很想要有多人協作的機會,只是因為種種因素(主要是怕自己時間不太夠)沒有加入任何一組,自己想要做的東西也沒有規劃出來,當時看到 John 同學在 Slack 上找組員也沒有特別想說要加入,因為跟妙賢還算熟,知到她加入了 John 這組,在跟 John 聊天時就提到他們期末專案有什麼需要幫忙的地方我可以加減幫點忙,歪打正著就加入了。

大概因為組員們都不是那麼擅長規劃,所以開發的過程有點發散,每一兩週開會討論上週大家的進度,決定下週大家的工作,因為大家都各自有忙碌的事情(求職、跟課、上班、其他個人事務),到寫這篇心得的當下專案都進行要三個月了,第一版都還沒有做完,前端畫面差不多處理好了,但是還有一些基本功能沒有完成(如電子報),後端也還很簡陋(還沒做驗證,沒有安全措施),認識了 42 學校幾個台灣人,其中一個人的男友就是寫 node 後端的,給了他我 Github 帳號,還得到一個專業的程式碼 review ,(Refactor #1 其實像 env 跟 forEach、map 的用法是應該要注意到的,但是寫的時候要嘛偷懶,要嘛沒有考慮到……)。

整個過程還是有很多的收穫,跟別人合作的經驗很特別,溝通的過程也蠻愉快的,常常開會就開到變成聊天,而且在期末專案之外也會有更深入的交流,每天也可以在群組上聊聊近況,實際工作時的團隊大概不一定會這麼歡樂,但是我覺得只要大家保持願意溝通的心態,真的為了改善工作中專案提出意見,不論任何場景之下的合作應該都可以是愉快的吧!

42 的作業完成了兩三個,目前有些緩衝的時間,可能這兩週會多花點時間完善專案的後端,然後至少推出一個基本功能的 DEMO 版本。

求職狀況

到 2 月 24 號為止投了大概三十家左右,沒有得到任何面試邀約,對!就是「零」個面試機會,其實也不是真的很意外,投的數量可能還不夠、作品集沒有整理的很完整、履歷與過去的經歷不太好看、年近 40 的中年大叔轉職難度比較高、法國的求職環境與台灣也不太一樣……種種原因,找工作比較困難也算是預料中的事,但是認清客觀事實是一件事,調整心理的狀態又是另一件事情了。特別是又看到台灣的同學們一個一個都找到不錯的工作,薪資也都有 45K 上下,真的是極度懷疑自已是不是真的能找到工程師的工作,回台灣是真的能像同學們得到比較多面試機會還是真的自己的條件就是差了那麼一點?

已經有一週都只敢在求職網站看職缺不太敢投履歷,好像應該再重新整理一次履歷跟作品集,把放入作品集的 README 寫完整,希望下週能夠整理好再繼續找工作了。因應法國求職市場的狀況,可能也會多往建教合作的工作機會找找看。

龐然壓力,拔山倒樹而來

工作、經濟、學習、家庭、生活、人生……,種種壓力其實很難單獨抽離出來看,就是混在一起的一坨不知道什麼東西,學生時代其實真的過的蠻難受的,常常夜晚躺上床就會開始哭,現在的壓力相較當時可能不只倍增,但是大概年紀也有一點點了,也覺得自已的人生其實非常幸運了,雖然過的還是辛苦、壓力依然龐大,但是也比較看的開一點了。

還有關於學費與參與計畫算不算成功也是感覺到很困擾,本來參加這個計畫心裡就有一種「反正找不到工作也不用交學費」的心態,有種失敗了也不用負責的感覺,但事實上「心理」還是知道應該要負責的。

我自認算是蠻認真在跟課的,可是真的到了找不到工作,真的到了「可能不用交學費」的時候還是覺得非常怪,明明我在這個課程裡面學到了超多東西,胡立的教學也沒有任何問題(唯一的問題可能就是我跟他都不瞭解法國相關產業的求職市場?然後他還讓我參加計畫),甚至能錄取 42 學校跟在程式導師計畫裡偷跑了半年也有一定關連(當然我雞婆的個性可能也佔了很大部分吧?),所以「不好吃免錢」就真的很奇怪,明明就很好吃阿 XD,又因為個性就是很不乾脆,經濟狀況雖不至清貧但仍然有點拮据,真不知道應該怎麼解決,看起來只能等之後找到工作再繳學費了。

其他建議與感想

老師的距離感與助教制度

就像老師的心得裡寫到,因為有助教,所以感覺與老師之間就多了一層隔閡,問問題會覺得先問助教,真的沒有滿意的答案才問老師,也有同學覺得就是希望胡立大神改作業,讓助教改作業一方面效率比較差(有時候交了作業過一、兩週還沒有改……),也怕有因為助教程度不如老師,可能會發生作業裡有錯誤卻沒有找出來的問題,但是沒有什麼「小孩才做選擇」這件事啦,大家都要做選擇的!

功利的一面來說,想要收更多學生勢必要有助教幫忙,從學生的角度來看也更有機會能加入這個計畫(可以收的人變多了嘛!),另外多一些不同觀點、不同程度的人加入運作團隊也可以讓課程更豐富(像是助教們的 PODCAST、助教直播、每個助教不同的改作業風格……等等)。

之後可能也可以導入「助教試用期」的概念(可是好像有點殘酷,被淘汰感覺比當學生被淘汰更沒有面子),但是天知、地知、你知、我知,助教還是有好壞之分的阿,真的工作太忙沒辦法配合的話是不是讓更有餘預的人頂上更好呢?或者每週可以有個同學匿名對助教評分的制度?這種東西到底怎麼拿捏真的很不好說。

其實很多東西都是需要助教才能完成的,整體而言,我對於助教制度的感覺是蠻正面的,也覺得應該繼續保持這個制度,只是在執行的細節上可能要更多去琢磨。

同學之間互動

我覺得導師計畫除了胡立名副其實的紮實教學內容,另一個我最大的收穫就是認識了一些可愛的同學與助教,在之前的心得裡其實也有提到過,我大概每天都會看看同學們的進度,作業也都會點進去看看,然後就會很雞婆的去回答人家的問題,或是去問人家問題,跟其中幾個同學比較熟了之後也會沒事亂哈啦,還有同學開了個幹話群佔用 Slack 留言限額(以後搬到新平台就可以更盡情的蔣幹化了 :D )

與同學之間除了哈啦,也是有切磋一些技術的,像是跟熱愛解題的同學討論 AOC 各種 shit code 解法(這算是切磋技術嗎?),學後端、資安時跟幾個同學互相玩壞對方的網頁(嗯,再次對其它因為作業被玩壞不方便改作業的同學、助教說聲抱歉,沒有三思真的很對不起)。回答一些同學的問題,甚至遠端連線 Debug ,向超強同學討教筆記軟體用法……等等,導師計畫提供的這個社群環境真的大大的增加學習過程中的樂趣與持續學習的動力。

印像中老師也有提到以往會鼓勵同學多多去別的同學作業留言回饋,感覺這一期好像真的比較少人去執行,我覺得下一期可能可以有些半強迫的要求學生交出自己的作業前要找一個同學先看過自己的作業,寫下一些回饋,或者先去看過別人的作業留一些意見之類的,在 42 學習的過程中,同學們互相改作業算是我最享受的部分,遇到程度比自己好的,他可以給出改進的建議,可以看他怎麼測試、怎麼debug 的,遇到程度比自己差的,可以練習解釋自己 code 的能力,並且在講解自己的 code 時可以再次複習,加深印象並且確認自己是不是真的學會了。這個部分在實行上可能有些困難,但是我總覺得一百多個同學,如過都沒有什麼互動真的蠻可惜的,特別是對於比較害羞的同學,半強制的交流我自己覺得不是壞事,畢竟工程師就是一個需要合作的工作,加強學員的溝通能力我想絕對是有好處的。

作業的設計上也可以提供更多協作的可能性,像是一些比較完整的前後端作業,就可以讓同學選擇以合作的方式完成,打算跳過後端課程的同學可以專門做前端,不會被後端伺服器或是部署的部分卡住,打算走後端的同學也可以不再去煩惱切版的問題,可以更深入的去研究後端框架、資料庫、資安、Docker 甚至 K8s 等技術。

課程內容

如果真的學員的程度設定在完全初學者,那麼二十四週塞進這麼多內容真的有點趕,我覺得老師在心得裡提到的一個解決方法不錯,就是把前面幾週獨立成另一個入門課程,想要修進階課程(第 8 週到 24 週內容)的一定要先上完入門課程才能報名。

然後時間可能要再拉長一點點,至少我覺得 React 只花四週要從頭學到 Redux 熟練是不太夠的,當然還是有不少同學做到了,我自已真的沒辦法,多個兩週到四週的時間可以讓同學同學更好的消化學到的知識並且自己去查資料看資料。

其他部分我真的覺得非常好了,特別是打基礎的部分,真的能讓學員有很堅實的底子。

人生有限,好奇心無限

這大概就是我一生的課題吧!真的是覺得什麼東西都很有趣,接觸了就很想要多了解一些,但是人生終究是有限的,時間有限、能力有限(非常有限),不可能什麼都學,什麼都要,但是我就是很難完完全全專注的只做一件事,如果又剛好遇到比較難解的問題就會有一種自己被困住的感覺,所以總是會在幾件不同的事情之間切換。

這種個性大概是不可能改了,那就順其自然吧!現在就是盡量把自己限制在寫程式的範圍裡面,在這個領域裡切換不同的內容,最重要的事情就是繼續精進自己 JavaScript 的能力,前後端各種技術能力,然後把 42 的作業慢慢的做完,以找到網路前端或後端工程師的工作為目標。

心得

廢話很多,混亂的心得,大概讀完這篇心得的人也會有這種感覺吧?我的腦子就是這麼的混亂,什麼都糾纏在一起了,可能從我眼中看出去的世界就是跟萬花筒一樣吧?一團亂但是又這麼的多采多姿呢!:D

導師計畫第四期對我來說其實還沒有結束(還要找工作、還要補上跳過的幾週……),但是心得總算是寫完了,算是交了另一個作業,人生還有好多作業要做。

再次感謝胡立,感謝助教與可愛的同學們,也感謝老婆家人的支持,讓一個老頑童還能學習、還能做自己有興趣的事。

學生心得:simon198

該面對的終究還是要面對,畢竟都畢了業,找到工作也當上助教了,課程開始前就答應要寫的心得總是要發一發吧!

Hello Me

沒錯!這就是要來簡單說說我自己,我是一個學校蠻好的經濟系畢業的學生,對金融業上班沒啥興趣所以當了一個月的業務之後去當了 PM。做了一陣子之後公司看不太到我實質的產出,我也不清楚自己到底在做什麼,所以就跟前公司和平分手了。但是還是很感謝我在當 PM 的時候接觸到了 SQL 這個語法,讓我發現一個我願意每天一頭栽進去的地方!也就這樣我開始了我的工程師之旅!

Why Lidemy

我可以很老實的說,會選擇程式導師實驗計畫大概是出於我對胡立的景仰吧 😂 ,胡立的 medium 是我在準備要離開公司找資料的時候讓我看得最投入的一個 Blog,一點都不艱深,卻又好像都帶有一點學問在裡面!另外會認識程式導師實驗計畫也是因為 medium ,不論是計畫的好與壞都很透明的寫在文章裡面,再加上胡立說沒有成功轉職不收錢的自信,就讓我完全不考慮其他地方的把程式導師實驗計畫當成我的唯一目標。

至於為什麼想當前端工程師嗎?我想是因為胡立是我的偶像,然後他是前端工程師,所以我也要當前端工程師,大概就這麼的膚淺吧 XDD

學習狀態

我大概從 5 月中就離職了,而課程是 6 月中開始,所以前面有一個月的時間我假裝自己有工作的每天出門,那一個月就在網咖跟圖書館中度過了!在圖書館的時候就去 codeCademy 上面看 JavaScript 的課,然後跟著寫一些題目,寫累了就去網咖放鬆,就這樣到了開課。

開課之後我一個禮拜大概花 40 小時在課程上吧!雖然說我真的蠻喜歡寫 code 的,但要我一個禮拜七天都寫 code,我應該是辦不太到!所以我都會期望自己在每個星期五之前完成當周的作業,然後假日的時候就可以比較放飛自我,想學習就學,如果不想的話就算了~也是因為這樣,所以我其實幾乎都沒有寫過挑戰題,作業也沒有拿過讚!但我就是相信自己的步調,三不五時就去看個課綱,回想一下自己已經學了什麼了,之後又要學哪些東西,每次看一看都覺得上完課的我一定會很厲害!就覺得自信心爆棚然後就繼續去學了!

那如果懷疑自己的話怎麼辦?其實我也不知道,因為我好像沒遇過 XD ,可能就算有我也很快的就忘了然後繼續去 debug 了吧!畢竟只有做了才會前進,想這麼多其實也不能就這樣放棄,所以不如就讓他過然後繼續去做事吧!

進度的部分

在前面的 8 週其實一切都還蠻好的,但是就在大家最容易卡關的第 9 週的時候,家裡發生了蠻嚴重的事情,所以我需要暫停將近一個禮拜,所以我就從這個時候開始一直落後其他人一週左右,但其實我知道自己會落後不是因為我爛,所以並沒有因為進度所感到焦慮,就覺得反正後面還有複習週,我一定可以趕得上。所以就抱著這個落後的進度來到了 17 週,這邊是我第一次花超過一個禮拜的時間在一週的課程裡面,畢竟前面幾乎都在碰前端的東西,突然要碰到後端的東西真的蠻需要適應的,到這個時候其實有蠻多人都在思考要不要直接跳過後端進到 React 的部分!而我呢決定回去再看一次課綱,然後相信胡立,想著 code 也的很爛也沒關係,就是要跟著進度往前進,雖然路途艱辛但還是過關了!

最後也是我覺得最難的東西我決定獨立出來講,因為他是我現在吃飯的工具 -- React,身為全世界最多人在用的前端框架,他的學習曲線一點都不平滑(我覺得啦!),就算是已經比較簡單的 Functional component 了我還是硬生生在 21 週卡了三個禮拜,光是五子棋就花了快 2 週才真的寫出來!而當我們來到第 23 週的 redux 的時候,又是另外一個完全不知道在幹嘛的世界了,雖然聽胡立講的好像有道理,但自己打開 VS code 之後除了抄以外好像也不知道能做什麼,真的認真思考了好一陣子才想通整個 state 到底是怎麼流動的!而當時因為卡到了 Final Project 的開發,所以我就這樣的放棄了我的 24 週作業!

Final Project

我跟蠻多同學一樣都是在當初胡立在討論區鼓勵大家組隊的時候找到了我的隊友 -- 阿偉跟阿神,其中前端是我們三個人照著功能進行拆分的,除此之外阿神負責了我們產品的 flow 跟設計,而我跟阿偉則平分了後端的責任!說真的很感謝有他們兩個的存在,不然依照我懶惰的個性,我真的完全不期待自己會做出一個稱得上 final project 的作品來!

我覺得做 Final Project 是我一段實力真的突飛猛進的時刻,因為要負責後端,所以把之前 express 還不太懂的地方補了很多起來,對於 React 跟 redux 的使用上面也越來越熟悉!雖然最後的進度就停在把第一版的 code 寫完,連部署都沒有部署,但是我還是覺得重要的是在這期間實力的增長,有沒有真的變成作品倒是其次,至於不小心變成面試時候的扣分項目就又是另外一個故事了。

該求職啦!

不得不說,我是屬於跨不太出舒適圈的那種人。在做 Final Project 的時候,其中一個組員就也同事在找工作了,但我就覺得沒有 作品集誰要理你啊!所以就這樣一路拖到過年前才開始投履歷,而陸續的投了 30 幾間都沒有半個面試回覆,這才讓我真的開始擔心我是不是真的很爛。但灰心也不是版法啊!所以就趁過年的時候放鬆了一下之後做出了自己的個人網站跟一些作品,準備在過年後繼續找工作。而這次可能因為真的準備比較充足了,所以就陸續的接到面試,最後也拿到了一些 offer,順利轉職成了前端工程師 👍

心得感想

寫到最後好像也輪到心得的一部分了!我覺得在這個時候寫的好處就是真的體驗了當初想像中的日子,可以讓現實跟夢想有所對照的之後給出一個結論!

其實結論就是!這六個月只是一個開始,雖然在其中我們學會了很多,不論是原生的 JS 或是 jQuery、React、後端這些,這些東西在工作的時候其實不一定用得到,更不用說那些應徵到寫 Vue 的同學們了,應該用到的真的很少吧!但是最重要的是我們學會了怎麼學。因為工程師就是一個需要學一輩子的職業,幾乎沒有什麼技術是可以用 10 年的,甚至有可能紅個三五年就死掉了,唯一可以一直用的就是學習的能力!

所以在這邊鼓勵正在看的同學們,如果遇到問題就把問題丟去 google 之後開始試自己查到的解法,真的找不到就去問別人!遇到沒有辦法馬上解決的 bug 是很常有的事情,這個時候如果灰心 bug 也不會自己飛走,不如就慢慢思考怎麼解,累了就休息,總有一天會解出來的!

就這樣啦!在寫太多好像說叫哦!如果有想要跟我聊天的歡迎直接 mattermost 丟我訊息!掰掰~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.