You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
在剛開始挑選語言時,先 google 到處查找學習資源,看看大家推薦學習什麼,結果搜尋到了一篇文章「從教學者的角度看無經驗轉職以及課程選擇」,身為一位不懂程式的轉職者,看不懂申奧的技術能力分享,但是這篇文章當中,作者用了一般人能夠聽得懂的講法,利用故事搭配情境模擬,告訴我們他推薦的學習路線。由於比起其他教學資源,這位作者的表達方式更加平易近人,是我這個外行人能聽得懂的,所以愚人我直接挑選了唯一能聽得懂的課程來學習,就開始找這位作者 Huli 開的課程來學習。
再來就是,實戰演練的時候,我很喜歡老師用 live coding 的方式來演示開發時會遇到的狀況。
但是有時候太過於真實的範例,會不易於沒有基礎的同學學習,可能功能做到一半,就突然把某幾行程式碼獨立出來建立一個新的 function,會瞬間打亂掉原本建立起來的思緒。也因為銀幕高度有限,在示範時會需要滾上滾下來找程式碼,也可能在撰寫時,會一下寫上面,一下寫下面,或偶爾把某一個 function 刪掉之後改寫,或者突然發現剛剛想到的方法不太行,讓大家先忘記剛剛寫過的東西。
這些實際開發時很正常的情況,對於沒基礎的同學而言,會很難跟上這樣跳耀性的思考方式,導致看不懂的情況產生。
我想建議老師,在剛開始介紹到比較有規模的實戰演練時(像有留言系統、會員系統、後台系統),先不要直接寫程式,可以利用 [ALG101] 先別急著寫 leetcode 裡面教學的方式,先把功能的架構利用類似 pseudo code 的模式寫在白板上,直接將會用到的 function 先列出來,先讓大家知道每個 function 的功用及使用的時機是什麼,整個專案的程式架構會是什麼樣子。等到大家知道待會要示範的內容,就是建立在這個概念跟架構上頭,再開始 live coding 把每個 function 的內容填上去。
我想建議老師,在剛開始介紹到比較有規模的實戰演練時(像有留言系統、會員系統、後台系統),先不要直接寫程式,可以利用 [ALG101] 先別急著寫 leetcode 裡面教學的方式,先把功能的架構利用類似 pseudo code 的模式寫在白板上,直接將會用到的 function 先列出來,先讓大家知道每個 function 的功用及使用的時機是什麼,整個專案的程式架構會是什麼樣子。等到大家知道待會要示範的內容,就是建立在這個概念跟架構上頭,再開始 live coding 把每個 function 的內容填上去。
沒意外的話第五期會改成這樣,或是乾脆兩種都有,可能第一種是 live coding 那種形式,第二種是事先規劃好的形式,不過如果兩個都有不確定會不會太多就是了,但如果硬要選一種的話,第二種事先規劃好的對教學來說應該會更有幫助一點
報名契機
時間回推到 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] 求職入門 系列影片,它幫助我們增強了很大的信心。
其實求職這件事情真的沒有準備好的一天,唯有踏出第一步,才知道自己還差多少。
要記得,學習上遇到越多困難,面試時就越多東西可以分享!
比起一個事事順利,沒有遇過困難的求職者,面試官更喜歡一位遇到過問題,嘗試過解決困難的求職者。
所以不要忘記自己在學習的時候面臨的各種困難,讓它們在對的時候,發揮出最大的價值。
求職的方法很多種,每個人都不相同。
我自己求職的方法,是跟著與我一起製作專案的組員們合作,大家分享彼此複習的筆記,分享各自面試的心得,所以每一位面試過的夥伴,會幫助其他所有夥伴一起進步!我今天面試遇到了什麼問題,回去跟夥伴討論,大家一起找出最好的方式回應,下一次任何人再遇到相同的問題,大家都可以輕鬆應對。
我們組員之間也會進行模擬面試,大家互相考對方技術題、上機考、白板題、問答題,協助彼此找出不熟悉的環節,在出去面試以前,把問題都解決掉。
有組員今天要出去面試,其他人會給他祝福,時刻關心彼此的近況,也讓求職的過程,有更多的溫暖。
我很感謝這些組員,我有很多的面試技巧,是靠他們的幫助才提升起來的,這種正面的能量,值得不斷傳遞下去。
我在這堂課獲得最大的收穫
我覺得我在程式導師實驗計畫,獲得最大的收穫,就是在計畫中認識的優秀同學,以及老師跟助教們。
大家因為這個計畫而凝聚在一起,我們一同踏進了前端的這扇大門,未來大家會一起面對各式各樣的挑戰,而且不是孤軍奮鬥。
這是一堂魔鬼訓練班,同組的同學一起結業,我們有革命情感。大家出來求職,每個人都相當優秀,我們彼此是求職時的競爭對手,但是也是未來一同成長的好夥伴。
這一期的助教跟老師,是我們的貴人,幫助我們學習,認真的解決我們遇到的問題。而同一期的同學,是最好的戰友。
除了一起朝著相同目標邁進,更在彼此低潮時給予鼓勵。我與一同製作專案的夥伴們約定,進入了職場,我們會繼續分享自己工作上用到的技術、分享解決難題的經過,大家建立一個共享學習資源的筆記資料庫。
結語
程式導師實驗計畫雖然結束,但是導師依然是我們永遠的導師。
這趟旅程很精彩,如果問我會不會想再報名一次,我會回答:「會」
不過我希望報名的是,成為下一期的助教,從一個受到幫助的學生,轉變成一位能給予幫助的助教。
我認為這是一個很棒的學習計畫,它值得持續傳遞下去。讓更多想轉職的朋友,也能參與這份美好。
我是程式導師計畫第四期的學生,現在的我,是一位轉職成功的「前端工程師」。
The text was updated successfully, but these errors were encountered: