Simple Twitter 開發心得總結

2020 年年末一個小里程碑,和三位小夥伴經過比較密集的兩週 coding 完成簡易版 twitter,成果不敢說有多精美,但終歸是合作出來的心血。整體感受自己在心境上的改變相較技術性成長感受較為觸動,並非說技術能力的成長不帶來成就感,而是這陣子自己的茫然、自我否定這塊,在培養下班後學習的習慣和自我充實這塊,又更能讓自己感動。

開始前先讓成果 show 一波:後端 githubSimple Twitter

閱讀前提醒,本篇日誌與技術性無關,主要是對這段時間 simple twitter 小專案推進的紀錄和心得。

負責項目與專案開發中的合作溝通

本次專案我們採前後分離開發方式,各有兩位負責前端後端,我負責後端。在確定好組員和專案需求後,就立即提出希望和組員溝通大概的合作模式和分工,整體開發流程不外乎要注重的就是 gitflow、工作切分和溝通的即時性,其實當時也確實比較擔心大家之前沒有合作過、同時大多數人沒有開發經驗,面對面的共同開發能夠讓合作難度下降,同時又能提升大家的凝聚力且擁有具有即時溝通的效力。

專案的基礎功能開發中,我負責 API 撰寫並將之維護在 SwaggerHub、後端驗證共用模組、admin 相關功能、tweet 相關功能和佈署 heroku 進行版本控管。另外也因為之前有一些開發經驗,在初始大家不熟悉 gitflow 時提供指導,請大家使用 trello 控管專案進度,自己可能也算是擔任部份 (?) 比較偏 PM 的角色,例如畫甘特圖,定時群組問進度,並確定時辰是否要提前或延後。

因為小組中只有我還在職,無法全程像大學時期那樣約一個地點衝刺 coding,免不了部分合作模式還是需要遠端協作,因此溝通的即時性是很重要的。主要體現在各組的協作上,像是和 Kelly 在初期的溝通會包含:發了 PR 後 review code 覺得有問題的部分、branch 要怎麼開、branch 要推到哪裡等等,都是會發生的事情。但很高興我們兩個的工作模式比較相像,都是目的導向,在討論問題時我們會更在乎是不是能達到想要的目標,很理性地提出想法並進行討論,並且對於錯誤的發生都很坦率地承認而不會推諉。

老實說是一個很棒的合作體驗。

同時也很高興組員們都是配合度很高,對於專案完成的具有一定的責任心和執著度,因此以目標性取向來說,一開始我是不太擔心的。

過程中還是遇到稍微要磨合的地方,自己平日工作習慣是若有一些即時狀況,我會在群組上立即提問,有想法會馬上拋出來,可是每個人需要的緩衝時間其是不同的,連續提問和拋東西出去可能會給別人帶來壓力,其實在這次的合作中學習到這是我往後工作上需要調整的地方。

大概個人小心得是:工作步調每個人都不同,溝通上保有彈性的緩衝時間。

專案的推進過程當中,後端組其實在第一週就完成所有基礎功能,因此第二週花時間進行 survey,真的是大力讚賞組員凱莉,在進度超英趕美的情況下,完全沒想要放鬆,猛猛的,直接先研究 socket,並以全端方式初步完成連線,真的是無敵上進。在和前端串接資料或需要進行改版時,溝通很順暢地進行,當遇到狀況需要對方配合時,會清楚說明情況是什麼,看到後端 API 是什麼,為什麼要補哪些東西。

黑客松衝刺

專案最後兩天的衝刺其實真的挺好玩的,基於之前凱莉給的 socket 連線框架,我這邊後續主要負責前端邏輯和後端邏輯,而凱莉協助去刻前端的頁面。在基礎版功能釋出時,其實已經先給出公開聊天室的規格,而黑客松開始時,會再給出私人聊天室的規格,最難的挑戰三則是要有訂閱功能和通知。

對我而言,最大的節點在於需要根據新的需求將溝通流程進行重構,因為公開聊天室和私人聊天室會有一部分的邏輯是能相通的,例如:都需要將聊天室初始化、都需要獲取過去聊天紀錄,我希望重構後的邏輯框架在切換這兩個需求時是有清晰脈絡的。當然在細節仍存在差異,例如私人聊天室前端需要維護該使用者目前正在和誰聊天的資訊。

因為周五傍晚六點黑客松才釋出,因此週五晚間到周六晚間我基本上都在串前後端邏輯的部分,完成的內容包含公開聊天室 (線上使用者可以即時聊天、即時更新上線者的資訊、保存歷史訊息、不在公開聊天室會收到未讀通知並告知有幾條未讀訊息)、私人聊天室 (點選聊天室和他人通訊、可在私人聊天室看到一對一歷史訊息、保存歷史訊息、收到未讀通知小紅點)。公開聊天室的前兩個項目是 depend on 凱莉的版本做點微調而已。

而週日主要將凱莉刻的畫面串聯到資料邏輯的部分,有些地方就要修修改改,最後就是測試看有沒有 bug。

最近也收到評語了,滿大的問題在於整個架構太過依賴 socket,像是頁面要進行初始化時可能會拿大量的歷史資料,但這時候若換成 https request 則會好一些,讓 socket 盡可能就當個拋磚引玉的引子。

整體來說整個黑客松,還是會有些小累的地方,但又好像挺習慣的 (大學研究所趕專案壓 deadline 直接看日出XD),所以該怎麼說呢?有點累但又很懷念的感覺,為了某個東西要產出時的付出,其實是很迷人的,尤其還有跟你合作的夥伴也在嘗試要將自己的部分完成,好合併成成品,其實心態上真的會互相影響,當看到別人在努力時,也會想著我也該完成到什麼地步才行啊的想法。

最後雖然無法在時限內嘗試前後分離版本的聊天室,但很高興全端版本的聊天室至少給出一個尚可用的成品。

反思

自己覺得最可惜的還是在於前後端分離在黑客松時沒辦法一起進行。在掌控前端組進度時,切版時都挺順暢,但串資料流時所有頁面大概花了五天的時間,雕細節又多花了一天,或許在發現初期串資料流有點卡的時候,就要讓兩位前端增加交流度,應該說東西卡住不熟這件事的止損點不能拉得太寬裕。至於後端成果而言,以基礎功能來說我覺得我們已經做得很不錯了,完成進度後會回頭再做一些優化,但聊天室功能方面,則在使用 socket 的觀念上還是要提升一些。

Simple Twitter 專案整體給我的感受還是挺著重在培養自我時間控管和自我充實這塊,其實前半年自己的心態還滿崩壞的,很壓抑、負面充斥自我否定,但很高興半年以前的自己決定參加網頁開發課程,重新鞏固一些知識、學習網頁工程師的相關技能,學習的過程還是很純粹的,這種純粹能夠化解不少負面心態,當然也可能是太忙了沒時間在那邊亂想又不敢踏出換工作這步哈哈。

當週二晚上助教們宣布課程結束時,還是挺不捨的,多少這意味著接下來的路要自己往下走,學習路上遇到的小夥伴們其實都是戰友,但不代表著永遠,每個人的階段性目標在這個時期有了交會,接下來就是各自如何衝破這個時期往前邁進了。期許自己在接下來的時間,無論是轉職前轉職後,都能維持著持續學習的習慣和良好的心態,從學習中獲得快樂,從知識裡鞏固並提升自我。