從 Alpha Camp 線上 web dev 課程跌跌撞撞走來的半年以及更早之前的事

驀然回首,我在 Alpha Camp(下稱 AC)的第一堂課,竟已是去年五月下旬。以學期三課程結束的二月底來算,也距離九個月了。
實際的課程長度會更短一些,我為了學習不要太匆忙,在課程之間會空一個班次的時間讓自己有時間消化和休息。

而從什麼都只了解到一點邊,到現在終於摸到求職門檻的程度,中間跨度更不止這九個月時間。

現在是時候為自己回顧過往,整理這段時間以來都學到什麼,又是從什麼狀態成長到現在的樣子的。

零、緣起

- 從設計到程式設計,從程式設計到網站開發


 十幾年前用別人寫的範例文本改的桌寵小軟體

從以前我就或多或少地有在摸索程式設計的領域,但過去我更熱衷其他領域,只把寫 code 當作興趣,那時光靠著修改人家的範例文件做出自己想要的功能就很開心,只是就僅止於此,沒有更加深入過。
我也曾經想靠著自學學會程式設計,但自己摸索出的資料零零散散,按著教學課程學習,到最後好像也只學會了基本的 if 和迴圈語法,一被問起其他相關概念就一問三不知。只是學會了基礎常見的程式邏輯,距離真的學會一個語言卻差了好長一大截,即使想補全也不知道該補全哪些。

在這個時候我剛好看到 AC 的程式設計入門課程,雖然看課綱好像都是網路上自己找得到的 HTML、CSS 教學,JavaScript 一定又要重新學一遍 if、for、while 的概念,但三個禮拜 3000 我覺得很划算,但我抱持著想把以前自己亂亂學時漏掉的概念都補起來的態度,決定加入 AC 的課程。

一、學期 1:程式設計入門

不負我的預想,的確練習的部分都是我上面說的基本內容XDD
但也不負我的預想,我補上了不少基本觀念,像是運算思維、User story、完整的單頁網頁設計流程等。

促使我往學期二繼續學的動機是……我終於可以學要怎麼用 JavaScript 讓網頁變化了耶!還有那個老鳥優惠

想當初學期一那個偷跑努力研究半天,最後交了一個有用 JavaScript 操作 DOM 的網頁就覺得好棒棒的自己……欸?才不到一年前欸?

二、學期 2-1:JavaScript 前端開發

這階段的主題是簡單切版和 DOM 操作,現在回頭看來,當時苦讀許久的內容,現在大多都豁然開朗了(除了標上【進階】的 Bubbling & Capturing 因為幾乎沒使用所以很不熟悉)。

CSS 的部分因為還沒經歷前端分支課程切版磨練,現在自己寫全端 Side Project 吃到苦頭了。

三、學期 2-2:軟體開發實務入門

作為實務入門,這階段的課程內容包含了串接 API 的課程,以及完整的微專案課程。
在這裡第一次接觸到了 sync 和 async 的概念,當時也是努力查了一堆資料、看了一堆範例,實際操作了幾次,卻始終無法理解。
是直到 2-3 的課程終於明白 promise 的使用方式。

而這學期的主題在於小而完整的產品,為之後較大的專案奠定了專案完整流程的基礎。

四、學期 2-3:後端開發實務

在開始 2-3 的課程時,必須在前後端中擇一作為主修,自修課程可以閱覽,但不會有助教的作業批改等。

我選擇了後端的課程。
出於覺得自己平面設計的品味其實沒有很好,對前端需要具備的能力相對比較沒自信,再加上當時一直很想學習資料庫的相關概念。

2-3 開始學習使用 Node.js 和 Express 架設全端伺服器,以及學習操作資料的 CRUD。
在這裡學習的資料庫是 MongoDB 和 Mongoose,我想有可能是因為關聯式資料庫的規則會更複雜,所以初學 CRUD 時,教材才會選用非關聯式資料庫教授。
而基礎打好後,要學習不同的東西,概念相同的部分就能很快理解。

在 2-3 剛開始時,一切都是嶄新的東西,操作起來依然是手忙腳亂,查資料查到手斷。
現在回頭看來,雖然比當初熟悉許多,但仍不敢說自己真的懂 Node.js 和 Express 的使用。

這樣一串回顧下來這才發現,每個階段的課程安排似乎有一半都會直接複習到上個階段的內容,或許也是因為這樣的課程安排,才能夠學得更加紮實。

五、學期 3:軟體工程師養成 - 後端課程

學期 3 是學期 2 每個階段課程的兩倍時長,但困難度是兩個禮拜濃縮成一週的感覺XDD

上一階段的課程中,學會了建立完整並帶有資料庫的網站,到這學期,就要學習現代必定會用上的認證系統,連帶著也會帶入一些資安的教育。
而因為絕大部分的工具都是非同步的,所以在這學期也特地安排了一週課程專門說明非同步處理,也是到了這裡,我才真正覺得自己開始瞭解 promise function。

在這之後是 SQL 的課程,我終於學到我心心念念的資料庫設計觀念。
在這一週一口氣要學會 SQL 的基礎,再將先前 MongoDB 的成品改裝成 MySQL 的版本。
……不過 SQL 的查詢功能那些我花了三四天還是沒完全弄清資料庫的查詢方式。
也許需要更多更多更多更多的練習才能摸清吧。

在倒數的三、四週,我們練習了不同關聯方式的資料表如何設定和查詢,以及後端如何設計 API,這些都是為了在學期的最後兩週,和畢業考等同重要的活動——同學間將會組成小組進行團隊開發專案。

關於該專案的心得在日後也會發表出來。


在學期 3 中,比較可惜的部分是因為剛好撞上年前家裡忙碌以及委託工作時程,再加上課程困難度上升許多,有不少我進度落後或是快速看過的地方,交作業也無法像學期 2 那樣恣意揮灑時間加上各種讓自己更快樂的功能改良,幾乎只有滿足基本作業要求就交出了。

在結業之後有種馬拉松結束的感覺,接著開始大爆忙目前的接案工作(委託案件總是在你最忙的時候大暴增)
目前在手頭工作、履歷準備、面試準備、Side Project 作品以及身心健康家庭和睦之間找到人生的平衡。

希望自己能跨過這一步,也謝謝一路上給予幫助的大家,還有一直都在努力的自己🙏