兩個禮拜的開發過程一下就過了。期間經歷了團隊合作、自動化測試 Debug、尋找技術文件、協作開發遇到的各種 git 問題等,讓人成長許多。凡走過必留下痕跡,這篇文章便是希望能寫下一些開發時遇到的插曲,留給以後的自己回味外,或許在之後遇到問題後也能回首來尋找答案。

專案介紹

ALPHA Camp 的畢業專案是復刻一個 Twitter 功能的 Web Application。協作能以全端或前後端分離來進行,全端是在 Node.js 上以 JavaScript 為主要語言、Handlebars 為前端模板來進行,採用 MySQL 作為資料庫,使用 Sequelize 操作資料庫。專案完成後部署至 Heroku;前後端分離則是後端製作 API,前端以 Vue.js 做開發。我們這一組選擇全端開發。

開發流程

專案開始後,組長先在 trello 上建立功能看板,組員則自己選擇樣板來開發。不過,主要的模板,例如資料庫、model 建立、登入登出等專案基礎架構由組長先完成。

負責項目

我主要負責種子資料的設計、使用者相關功能如更改個人資訊、個人 Twitter 的頁面等的路由及前端頁面。

開發紀錄

種子資料

專案有設定好必須要有的種子資料,像是用戶有分為一般使用者與管理者,在設計時為了簡化程式,使用了條件(三元)運算子來取代 if…else,除了更簡潔之外,也佔用較少的行數而讓閱讀更容易。

使用者功能

主要實作諸如取得使用者頁面、使用者回覆紀錄、使用者按讚紀錄、使用者資訊修改等功能與頁面。其中遇到比較大的問題是,題目規定使用者的關注清單,排序依照追蹤紀錄成立的時間,愈新的在愈前面,一開始以 sequelize 的 order 來做,試了好幾次都無法成功,最後參考此篇文章中以 Array 的 sort() 方法成功解決。

results.Followers.sort((a, b) => b.Followship.createdAt - a.Followship.createdAt)

團隊協作

三個人開發與一個人開發的過程截然不同。這也顯現了溝通的重要性。畢竟有些容易重疊的功能,或者是相互依賴的功能(沒有你就沒有我),這時候就會出現「如果隊友沒有完成某一功能,我這邊也無法測試」的狀況。又或者是發 PR 後出現 conflict,就要討論如何保留取捨。同時,我也深刻理解到 git commit message 的重要性,如何讓人看到 commit 就一目了然這是實作什麼功能在開發時間有限的專案中非常關鍵,畢竟一分一秒都彌足珍貴。幸好隊友都非常給力,組長也幾乎是有問必答,整體算是順利。

收穫與學習

最大的收穫就是理解到自己不論是在技術層面或是溝通上都還有許多可以學習的地方。在開發過程中我們遇到許多自動化測試未過,但本地功能卻正常的問題,一直到尾聲我們才驚覺根本是自己沒看清楚自動化測試中定義好的規格,深刻體會到細節就藏在魔鬼中這句話的真理。同時,也在團隊協作中意識到如何更能引導隊友、更激勵團隊士氣的方法,我想在往後的職涯是非常有幫助的。寫 code 中最難能可貴的,與其說是專研與通透各項技術,我倒認為是一群志同道合、互助學習的好夥伴。