簡易Twitter -專案心得

Casper
Oct 5, 2021

前言

Simple Twiiter是Alpha Camp的課程內最重要的指標作業, 目的是讓大多數程式底子幾乎從零開始的學生,經過半年左右的訓練後, 能夠與其他同學一同協作完成的簡易社群網站。

分組

本來一直在猶豫要不要參加這項指標性作業,因為對於自己在學期三的學習狀況並不是很滿意。

但是就到快要截止的時候,Ken找我組隊,並且詢問有沒有其他人選。
當時是沒想太多,所以當Ken說要找Sonya的時候,我也很快就同意了。

使用工具

  1. trello:類似線上公佈欄的app。
  2. jistmi:由於想要給彼此一點空間和較少進度壓力 因此原則上開會的頻率是兩天一次,從晚上十點開始,時程約一小時 討論目前的進度狀況以及遇到的問題,並且將無法解決的問題彙整給助教。
  3. google試算表:工作分配,以及記錄完成度。

工作分配

前期(第一個禮拜9/10~17)

由於一開始只有我已經做完A22的設計API作業,因此自告奮勇,接下了組長和 Model 和 Seeder 的建構責任,並且以我的A22作業作為路由名稱的命名依據。

另外兩位組員則分別設計前台首頁、後台的相關事項。

後期(第二個禮拜9/18~24)

此時前後台已經有大概的雛型,可以正常瀏覽種子資料的使用者與推文。Followship 和 Like 的功能當時仍未開始實作,所以先認領了這兩項功能。
開始之後卻因為不熟悉 SQL 的操作,導致進度緩慢。

還好Sonya在21號完成了後台的部分,並表示可以幫我完成追蹤和喜歡貼文的功能。因此我才能夠轉移目標,專心解決編輯個人資料和上傳Heroku的問題。

  1. 編輯個人資料:因為重構API在接近課程尾聲才正式接觸到, 也讓人不得不複習有關 CSS 的內容與 Modal 的渲染,所以算是我花最多時間的部分。
  2. 後來發現樣板雖然做好了,有很多重複的地方卻沒有切成 partials, 路由也沒有依照原先說好的方式命名,因此花了不少時間重構。

遇到的問題細節

  1. 討論與分工不夠仔細:
    第一次開會是看著AC試算表,依照類別來簡易分配工作。
    而我負責Model和Seeder、Ken負責貼文留言、Sonya負責後台, 但是後來發現在資料還沒建立好的情況下,能做的事情其實只有設計路由和切版。
    因此 Model 和 Seeder 的資料結構設計應該是最優先事項, 尤其在專案剛開始的時候充分討論並一起解決困難,才是更有效率的做法。
  2. 前期幾乎沒有跑過測試檔:
    我一開始對測試檔的概念是:「等到至少完成一半的項目再測試,會比較能夠了解方向」
    但這其實是不對的!
    因為就算畫面上並沒有錯誤,但是如果沒有照著指定規格去完成整個架構,對於後續的開發與維護會造成很大的不便。
    例如我是照著 Sequelize 6.x 版本的Model.init做資料設計,測試檔卻得用 Sequelize 5.x 版本的 sequelize.define才能夠通過。
    在成功產生資料卻沒辦法通過測試的情況下,苦思並掙扎了幾天, 最後才透過觀摩其他組別的作業發現並重構整個架構,解決這個問題。
    老實說還蠻耽誤時間的,因為這應該在專案開始的三天內就做好,卻拖到20號才通過測試 而這也是導致進度緩慢的主因之一。
  3. 很少做 code review:
    因為每隔兩天才做一次大概一小時的討論,討論的過程也感覺大家對於整體架構不是很清楚, 所以大多時候會直接 Approve 後立刻 Merge 新的程式碼,如果有發生問題的話再到 Slack 上討論問題。
    這讓整體而言的效率造成一定的阻礙,因為我們大多時候只是為了方便而Approve他人的程式碼,卻很少在PR的頁面內留下Comment,或多或少增加了溝通的成本,也會不清楚其他人到底做了什麼更動。

能重來一次的話,有哪些事情可以做得更好?

  1. 善用線上工具,並及早提出問題癥結點,不僅能幫助自己,也幫助他人
  2. 專案開始前需要充分討論如何達到規格要求,否則只是徒增開發的困難

結語與心得

藉由這次與同學們的合作經驗,讓我體會到溝通的重要性。
專案未能準時交出,也不能算是一個很成功的經驗,
卻讓我理解到自己在團隊中的樣貌以及優缺點,就這點而言非常寶貴。

經過將近七個月的學習,從幾乎沒碰過程式, 到能和同學一起完成AlphaCamp 的指標性作業-簡易版推特, 實在是非常不容易的一件事。
再次感謝Ken、Sonya的互相協助以及助教Amber的有力支援。

--

--

Casper

嘗試藉由寫程式重獲新生的非本科轉職者;熱愛電玩、貓與純音樂後搖