Simple Twitter專案協作經驗

Team members: Wen, Billy, Isis, Winnie
Front-end repo: simple twitter front-end (Billy, Winnie)
Back-end repo: simple twitter back-end (Wen, Isis)
Deploy app: simple twitter

image

前言

在撰寫code的時候不論是任何專案,其最重要的便是你的專案是否有跟人合作過。在個人專案中,也許自己寫的很順手,或是別人看你的code感覺你使用的技術特別的厲害,然而在合作專案中,即便寫得再酷再炫的技巧,要是別人看不懂或是讓專案出現了重大的bug需要進行修正,那也是一陣枉然。一個好的application需要的是各項功能執行的流暢,彼此功能的呼叫、Database的執行或是效能的差異都會影響到這個applicaton的使用者體驗。

再者,協作的過程中,彼此間的溝通是否有順暢,遇到狀況的排除以及互相的幫忙,這都是個人的 project中體驗不到的。而且,企業講求的是團隊合作,這一份專案可能會牽涉到好幾個人的考績,要是合作溝通困難的話,即便自己的技術在高深也是徒然的。

專案前期

在開發之前,最重要的是所需要的東西統一出來,例如Acceptance criteria(AC), Deification of done (DOD), back-end API 以及需送出的data structure. 此外,還有每個人的都coding style 以及其他的環境建置,例如passport 使用的authentication 機制為何,密碼採用hash的複雜度係數。這些都是需要去透過彼此間溝通後做定案。因此在第一次的meeting,所耗費的時間可以說是長達快一個晚上。尤其是為了訂出每一個細項的AC以及對於DOD所要達成的共識(即何謂所謂的這項工作是真正的Done)

image

image

image

專案進行過程

在開始撰寫整個application的過程中,先行建立Task list來了解專案本身有多少個功能要進行,以本人的後端Task list為例,除了本身環境的建置外,還需要進行的有驗證機制,model 以及relationship的關聯性與建立,部署設定以及相關的controllers要撰寫。因此後段變兩人各自分配需要進行的任務。此外,為了考量到程式碼的conflict問題,對於user, admin以及tweet等controllers的邏輯撰寫上,由一個人負責一個,避免同時撰寫同一個後,controller後,造成要git push前一直在解衝突的問題。而損耗時間。
撰寫的過程也考量到,若是一方的被問題點卡住的情況下,則可以由另一方來做幫忙,例如,工作量較重的user-controller (由API可知需撰寫較多邏輯)又負責登入驗證機制以及線上部署的話,則另一個人分配到較多controller的撰寫,一但寫完後,便可進行支援。

image

image

專案後期

當後端的API撰寫完畢後,並測試完成無問題產生,則會開始與前端的部分進行串接,然而串接的過程上雖然解決了同源政策的問題,但是串接的資料格式上面卻產生了些許的落差,可能前端想要的資料內容在該頁要有account , name, avatar,但是後端給予的資料內容卻少了一個。因此必須要立即的處理並部署後,才可以讓前端繼續進行串接。然而本成員中有一位位於溫哥華,與其他三人的時間不同,因此在半夜上有時候緊急的話則需要立即在睡夢中起來處理,不過本團隊後端都能配合早上與該前端人員進行溝通,後續的資料格式修正或是需增加的API都可以得到迅速的改善。

開發過程中的反思

在這過程中,有個重大的問題在於,前端一個人因進度較快,另一個人的學習進度較慢,因此在這專案開始時,已經由此人建置完大部分的頁面,只剩下後台的部分給予另一個人建置。雖然看似進度很快,但是卻在後期串接的過程中發生嚴重的問題,致使讓另一位前端的人員幫不上忙,原因是這部分的code使用上只有他自己看得懂,反而讓另一個前端的人看不懂他的code而造成若是產生的bug必須由他來進行修補,而後端想要支援也無法支援,因這部分的難度牽涉到code的耦合性,這是一個其中的問題。

另一方面,在專案進行的初期並未明確建立組長或是PM角色,雖然本人有擔任過PM的經驗,但是為了讓大家都能學習PM的角色,讓其他組員接手這項任務,而本人給予從旁協助。然而,由於先前的問題,導致前端人員一個人負責大部分的debug, 而另一個前端人員則是建置進度較緩慢,因此原先擔任PM角色的前端人員便無暇去顧及文件的審查與更新,便由本人來接續這個角色的工作,並也開始隨時審查前端的作業進度,每當一功能完成時,便立即進行測試,立即核對AC以及DOD來確保可驗收。在全部的功能完成後,便可以針對先前審查完後的缺失,一並進行改善。

結語

在專案的最後,也如期的提交並驗收通過。這過程的學習經驗成果卻是豐碩的,在一個團隊下,每個人的角色都有其功能,但是最不能缺少的便是領頭的角色,例如PM或是組長。在缺少的情形下變的決策無法下定,一些事情會變得窒礙難行。雖然在專案開始的前期已經耗費較多時間的討論,然而若是沒有個決策者,則討論的再多終究會變成無結果論, 如此當碰到突發狀況的時候,便會變得手足無措。而前期的溝通甚為重要,因此對於之後的專案,如有其合作的夥伴,則會在溝通更多,讓彼此知道自身的需求與規格為何。