六角 Node.js 後端工程師養成直播班心得

課程封面圖

最近上了六角的Node.js 後端工程師養成直播班課程;在上週日的專題報告後,課程算是正式結束了。這篇是完課的心得文,大綱參考六角提供的架構。

當初為什麼報名這堂課?

從我開始學習前端技術以來,我就對後端充滿了好奇,覺得不會後端的前端是不完整的。之前有上過其他的後端課程,像是六角的Node.js 前後端開發實戰,或是FreeCodeCamp的課程。

不過前者是用 EJS 的 Server Side Render,而我想要學前後端分離的後端寫法;FreeCodeCamp 有教開 API 的方式,但沒有教一些後端開發常用的功能,例如權限驗證、錯誤處理。雖然我從兩門課程都有學到很多東西,但卻還不是我心中最想要的:適合前後端分離的後端課程。

就在我剛學完 FreeCodeCamp 的課程沒多久,正在尋覓其他 Node.js 的線上課程時,剛好看到六角學院的校長廖洧杰在六角學院的臉書社團發貼文,說準備開一門後端的直播班課程。

看了課程大綱後,覺得裡面有內容是我需要的,於是就拿出魔法小卡報名了。

第一週~第八週的學習過程

在六角的這們課程,有多種作業類型:主線任務、小組任務、每日任務。我基本上是以完成所有八週的主線任務的目的在上課的。小組任務是支線任務,參加的話期末會有一個專題報告,洧杰老師會邀請廠商來聽。每日任務的話我因為時間分配的考量,以及大多數課程內容我都吸收良好,所以每日任務我選擇都沒參加。

前四週的課程,內容大概是如何建立 http server、引入 MongoDB、引入 mongoose、引入 Express、以及資料庫設計。因為之前有上過後端課程的經驗,基本上前四周的課程對我來說沒有壓力、前幾週的小組作業難度也低。學習過程大概就是

  1. 週五晚上上課,開聊天室講幹話(XD)、邊開 Notion 筆記簡單記一下
  2. 週末,把主線任務做一做、開小組會議
  3. 週間,自己找補充資料,呼應課程內容

在第五週開始,因為有比較不熟內容像是錯誤處理、JWT 身分驗證,加上小組作業開始難度提高、加上我是小組長需要花時間 Code Review,所以主線任務開始懶得做,心力先放在小組任務上。學習過程大概是

  • 週五晚上上課,邊開聊天室講幹話邊筆記
  • 週末,開小組會議、複習週五的課程、Code Review 小組作業
  • 週間,複習週五的課程、Code Review 小組作業

在第七週上課時,老師提到如果提早完成全部作業的話,會有加碼獎品,所以我在第八週時就把第五六七週的作業迅速完成了 XD。同時我也猜測第八週的作業內容並提前完成,等到第八週上課公布作業內容時,我稍微修改一下 Code 就可以交作業了。(所以我是第一個交全部作業的,因為我在第八週線上直播過不到半小時,我就交作業了 XD)

完成任務時間截圖

最大的收獲是?

以課程內容來說的話,有幾個內容是我決定上課時,會想學到的知識點:資料庫設計、錯誤處理、以及權限管理。而這些內容確實在課程中也有提到,覺得還不錯。

最喜歡直播班的哪些活動?

跟其他工程師一起協作小組專題,應該是我最喜歡的活動了吧。而我恰好被選為組長,同時體驗到後端工程師、技術組長、PM 的角色觀點。多種痛苦一次滿足

啊,當然還有老師加碼的各種活動,真希望主委可以多加碼一點

如果時光能倒流,會希望自己再次注意哪些細節?

個人作業的專案,我會每週作業開一個分支來實作;我在第二週時才想到這件事情。現在我的個人作業有兩個 REPO,看了有點啊雜 XD

小組協作的共筆,可能會想一開始就用 Notion,而不是 HackMD 跟 Google Sheet 搭配使用。課程中的預設推薦是使用 HackMD、且確實不錯用,但它的表格功能實在不太好用,導致我中期還需要開 Google Sheet 去管理專案進度。

在小組開發的部分,身為組長,可能要更清楚介入修改程式碼的時機點,像是不要過早的介入。在第一週的作業中,要求只有用 http server 寫一個 todolist 的後端,但我卻引入了 ES module 跟 routes/controller/model 分層的觀念,讓第一週小組作業的複雜度變得有點高(雖然我覺得這樣比較漂亮)。

除了不要過早介入修改外,有時候也要限制組員的寫法,例如我應該第一週就要求每個組員都安裝 ESLint;沒有限制的結果,導致專案中有各式各樣的 coding style,風格不統一。

API 文件的部分,本來建立基礎建設時,由一個後端用 swagger.json 管理,但最後後續開發的其他後端就沒有更新 swagger 了。或許 swagger 設定寫進路由 JS 檔案裡面再自動產生文件的作法,對於多人協作會比較好。

對課程的建議或鼓勵?

建議的話,我就用列點的方式好了,比較多是課程網站的資訊設計

  1. 課程頁面(程式勇者村)的資訊有點混亂。像是左邊導覽列有些資訊只用到一次就不需要了,或許可以整合起來,像是開學典禮與小組任務,這個只有在第一週會用到的資訊,卻佔了兩行內容。
  2. 不曉得為什麼,主線任務的網址,被放在講義與主線任務 HackMD 的頁面裡面。例如想看第三週的主線任務,我需要點第三週講義與主線,接下來才有辦法點擊到主線任務的網址,查看到主線任務資訊。
  3. 講義與主線的 HackMD 是內嵌,而小組任務的 HackMD 是新頁,覺得統一比較好。看是全部都用內嵌,或是可以用個 HackMD 的 book 模式統一管理,這樣找起來比較方便。

鼓勵的話

  1. 感謝老師的用心教學,教到有一週嗓子都啞掉了
  2. 當有一組學員報告品質出狀況,老師馬上加碼補貼麥克風、以及高鐵票,這點真的大手筆
  3. 感謝 Ray 助教的每週直播解說,雖然因為時間關係我都沒有跟直播
  4. 感謝助教群的每週主線任務修改
  5. 錯誤處理跟權限驗證有符合我修課前的預期,我覺得滿意 XD

身為學長姐,分享些想入坑的新同學一些勉勵的話

如果跟我一樣是靠六角學前端出身、正在尋求後端入門的話,這門課程我還滿推薦的。畢竟師資、教法都是熟悉的味道(?),同時老師也懂你在前端的程度,可以設身處地回覆你的疑惑,這樣學起來可以事半功倍。

如果是新接觸到六角的前端,或是後端想來學 Node.js 的話,也可以考慮看看。這次 2022 年的 Node.js 直播班是第一屆,裡面也有一些是第一次接觸六角的學員。就我這個學員的側面看法,感覺他們也適應良好。尤其某一組很多組員都是後端出身,他們在做期末專題的第一週就幾乎把需要的後端 API 都做完了,怕.jpg。

如果有參與小組作業、專題的話,協作的經驗也是滿有趣的,而且如果不幸有幸當上組長的話,還可以唆使其他組員去寫 Code,算是個有趣的體驗 XD

小結

想對第五組的組員一些話 XD

前端部分

  • 泡沫:前端扛霸子(無誤)。感謝引入 Next.js、StoryBook 以及 TypeScript,而且我們還有線下見面過 XD
  • Emi:雖然說對 Next.js 不熟,但我感覺妳和泡沫搭配得很好 ~

後端部分

  • Hazel:其實我把妳當副組長在看待 XD。感謝快速出 PR 跟時常幫忙出點子
  • 灰塵貓:感謝你常在第一時間就接下許多 loading,以及花很多時間研究 WebSocket
  • Sihyun:我還是不會唸你的名字 XD。感謝你很穩定地產出程式碼
  • Nap:每次私訊在討論協作的事情時,覺得你討論的語氣很有趣哈哈
  • AmberCYT:感謝你後來很忙,但還是被我拉下水負責一小部分
  • Zion:感謝在專題中期跟上課程進度後,主動說想加進來幫忙

雖然後面幾週有點累,但整體來說,這堂課滿有趣、也吸收了不少資訊 ~

(本來想放上專題報告時聊天室的有趣截圖,但發現我忘記儲存了⋯洧杰老師有沒有聊天室存檔 QQ)