回顧七個月的程式學習之旅,航向新大陸

2021 / 3 / 8,加入了 ALPHA Camp 學期一的課程,希望探索全新的領域。

2021 / 9 / 25,和組員們完成了 ALPHA Camp 學期三的畢業專案,離畢業只剩最後一哩路。

時間過得很快,總覺得還在和 for 迴圈纏鬥,連 API 是什麼也不知道的自己仍歷歷在目,如今已經可以和別人一起協作完成畢業專案,即將從 ALPHA Camp 畢業了。

所以我想藉由這篇文章,回顧自己在 ALPHA Camp 學習的點點滴滴,看看自己曾經走過的路,細數自己的成長,思索自己的目標是否有了變化。

學習前的準備

自從服完兵役後,我就開始接案翻譯,但總覺得這不是自己喜歡的工作,可能是缺乏成就感吧!所以決定趁自己還年輕時,盡可能把握機會去嘗試沒有接觸過的領域,而軟體工程師可以把學到的技術帶著走,在職場上具有很高的移動力,這一點非常吸引我。

但是,理想很豐滿,現實很骨感。看了滿山滿谷的轉職成功文章,我知道自己不能被倖存者偏差給誤導,也許更多的是在半途放棄卻沒有留下任何痕跡的經歷,所以決定先從免費的 Codecademy 開始探索,並且在過程中盡可能地了解這個業界的任何觀念、專有名詞和職位,讓自己有初步的認知,可以判斷與規劃大致的學習路徑,以及預期的目標。

在 Codecademy 摸索了半個月,完成了基礎的 HTML / CSS / Javascript 章節後,考量到疫情可能隨時會有變數,才決定選擇比較擅長線上教學,並且透過社群學習、助教批改和班級進度制來幫助學生學習網頁開發的 ALPHA Camp。

如何挑選適合你的線上課程平台:Udemy、Coursera、Hahow 比較與推薦

3 分鐘小測驗帶你找到適合自己的程式學習入口

學習的時光

學期一是網頁開發入門的學期,比起立刻教授學生如何撰寫程式,在這裡學到更多的是程式、運算思維、網頁開發和學習心態的基本觀念。我也發現自己每週最期待的就是繳交作業後,等待助教的評語,以及觀摩其他同學有沒有什麼很厲害的寫法,希望可以從中學到更多東西。

此外,這一學期我也學會如何和錯誤訊息相處,讓自己之後寫程式遇到任何 BUG 或錯誤訊息時,不再感到焦慮崩潰,而是能夠冷靜地分析問題,並在想不出解法時知道搜尋那些關鍵字找到解答。

學期二則分為三個階段,算是學習網頁開發的核心學期,難度不僅比學期一高了很多,作業量也大幅增加,可以充分體會到學習的步調變得更緊湊。

在這個學期,學到了 DOM 、AJAX、CSS Flex/ Grid 和 Bootstrap …等技術或觀念,也進到後端的世界,在 Node.js 的環境中使用 Express 框架搭配 Handlebars 樣板引擎,藉由 MongoDB 資料庫製作出具有基本 CRUD 功能的網站,並且部署到 Heroku 上。

也是在這個學期的第三個階段,我發現比起按照設計稿切出一模一樣的精美畫面,並且調整 RWD 設計以應付不同尺寸的桌機螢幕、平板和手機,在後端的世界裡和資料庫互動,思考如何實作出特定功能的邏輯,讓我覺得更有成就感,而且樂在其中。

因此,懷著往轉職後端工程師轉職的決心,邁入了學期三的後端專修課程。

在學期三,跟著課程以 MVC 的全端架構實作了一個餐廳論壇網站,也學會使用第三方套件和 api 去達成特定功能,像是串接 Google 與 Facebook API,再搭配 passport 套件實作出使用者認證和第三方登入的功能;使用 multer 與 imgur API 實作出上傳圖片的功能;使用 faker 套件快速建立假資料。

另外,我也在學期三學到了關聯資料庫 MySQL 和 SQL 語法,並且搭配 ORM Sequelize 在後端伺服器直接操作資料庫, 以及繪製資料表的關聯 ERD 圖、資料庫正規化…等和資料庫有關的觀念。

最後,也以前後分離的開發模式,和三名組員一起完成了畢業專案 Simple Twitter,體驗了用 RESTful API 的風格寫後端 API 站,並在限時內挑戰使用從未學過的新工具,實作出即時聊天室的功能。

了解學期三轉職軟體工程師的最後一哩路

不得不說,是學習壓力和挫折感最沉重的一個學期,卻也是我最享受的一個學期。在這九個星期,我常常和作業纏鬥到三更半夜,遇到不懂的概念或難解的錯誤就會瘋狂搜尋官方文件和各方資料,常常開了十幾個分頁折磨自己的電腦和大腦;此外,也很享受和助教、其他同學交流的時刻,往往可以知道自己的盲點,或是發現原來有這麼簡單的方法就可以解決問題。

回頭想想,之所以能撐過這段期間,大概是因為我很喜歡解決難題後湧現的那股成就感,以及對新技術、觀念的期待吧!每週都很期待下一週會學到什麼新的知識,也很喜歡在有餘力的時候,自行搜索更進一步的使用方式或優化方向。

當然了,在這七個月的學習過程中,有一整天都在偷懶、追劇的時候,但也有在半夜躺在床上快要睡著,卡住的難題忽然來了靈感,馬上爬起來打開電腦嘗試 Debug 的時候,也許還有很多學習的方式和步調可以改善,但我相信自己依然按部就班地邁向當初的目標:轉職後端工程師。

航向新大陸

Photo by Markos Mant on Unsplash

即將從 ALPHA Camp 畢業了,在這裡得到了許多助教、同學和教練們的協助,沒有他們的幫忙,我也許沒辦法走到這裡。

雖然不免覺得感傷,但我知道畢業並不是終點,永遠都得在還沒有做好完全準備的狀態下,啟程前往新的大陸。

但我並沒有被惶恐不安的情緒壓垮,因為在這七個月的旅途中,

我學到的不只是各式各樣的工具和語法,也得到了面對未知難題的勇氣
以及思索問題解方並踏出腳步去實踐的執行力

此外,在前、後端的世界反覆往來、探索一番後,確認了自己的心之所向,期許自己能成為一名稱職的後端工程師,並在這條航道上不斷精進;最後,經過畢業專案的歷練與助教、同學們的指教評點,知曉了獨自學習難以發現的盲點與需要改正的缺點,以及未來可以精進的方向。

雖然即將踏入新的階段,但我並非一無所有。彷彿已經手握著航行圖,它標示著成為後端工程師的航道上,還需要學習的資料結構、演算法概念,以及必須增強的 SQL 語法熟練度;在畢業專案的兩週,常常為了開發功能和修正錯誤與隊友們一起熬夜到凌晨,

我只記得解決問題當下的成就感,以及接觸到新技術的那股興奮,
讓自己確信在未來的航程中無論遇到什麼樣的大風大浪,都擁有堅持下去的毅力。