Simple Twitter:14天前後端合作之旅

Anstice Lin
May 23, 2022

--

從進Alpha Camp學習網頁前端技術以來,「Simple Twitter」一直都是個令我憧憬但又害怕的名詞。「我能順利取得參賽資格嗎?」、「會有人願意跟我組隊嗎?」、「我能和組員一起,在14天內從零開始打造出類似Twitter的社交網站嗎?」,我就這樣帶著懷疑與恐懼,不知不覺和組員一起完成了團隊專案。今天希望在這裡,記錄下我在這段期間的成長與反思。

成長一:從單打獨鬥到並肩作戰

參加完Simple Twitter之後,最大的成長之一大概就是團隊合作能力了。由於我是個比較習慣單打獨鬥的人,一開始並不是很習慣表達自己的想法,或是和組員討論,有時甚至覺得有點浪費時間。但隨著時間過去,我發現自己漸漸習慣這樣的做事方式,也更明白為什麼在團隊合作中,大量的事前討論比快速開始寫code更重要。

和前端組員Zoe討論出的元件架構表(製圖:Zoe)

以我和前端組員Zoe的合作為例,在正式寫code前,我們除了針對元件架構取得共識,也依據彼此的強項與意願做了詳細的分工與時程安排,例如開始切版前由我負責初始化專案、設定路由,Zoe 負責設定共用樣式;在X日前XXX必須完成哪個共用元件的切版等。

因為完善的事前規劃,在製作過程中,我們沒怎麼出現工作重複或是等待對方的情形。在共用的部分(如:路由、共用樣式等),也因有彼此互相cover,產生了 1+1 > 2的效果。即使在後期為了要減少拉資料、畫面空白的時間而重新調整元件結構,也因彼此對於元件架構的認知相同,沒有額外花太多時間討論。

充分的事前討論也對於前後端合作有相當大的幫助。由於前、後端處理的code與面對的環境很不同,若單靠想像,很難理解彼此的需求以及難處。但因為有事先將設計稿的規格、功能一起討論過一次,並將前端需要的資料條列出來,因此除去一開始因CORS、操作不熟悉而造成的API撞牆期外,前後端在串接API的過程比預想中還要順利。

成長二:從用git記錄版本到團隊協作

除了團隊合作,另一大成長就是使用git的能力。以往都只是單純用git來替程式碼做紀錄,因此一開始對於git merge、git rebase、PR感到十分陌生,每一次操作時總是心驚膽戰的,只求能不造成conflict、不覆蓋掉組員的內容就好。

大約到了專案開始後的第五天,為了更進一步確認組員的code是否能正常運作,於是靠著網路上的資訊抓了PR,後續又用了reset等不熟悉的指令想刪除PR,結果就引發了第一次的conflict。

現在仍能稍微回想起當時的驚慌與無助,但也因為有那一次的慌亂,我才又花了一點時間去研究git的指令,並去思考指令的意義與改變操作指令的方法。雖然現在仍說不上是git的操作專家,但在使用起來比一開始順暢了許多。

其實相較於能力上的成長,這次團隊專案帶給我更多的是對於自己的能力、態度上的反思。

反思一:精準寫code的能力

在和夥伴Zoe合作、互看PR的過程中,我深深感受到自己在寫code上的不足。以設定錯誤提示為例,當我用無數個if-else條件式來篩選後端回傳的error訊息時,他卻使用`${}`來插入變數,只用剪短的幾行code就解決了。

在和他討論code的過程中,也可以發現對他來說,完成功能並不是最終的目的,他一直在思考如何讓code變得更精簡,或是讓網站運行得更順暢。這也讓我開始思考,自己在面對程式的方面,是否有點太功能、目的導向,而沒有花足夠時間持續精進。

反思二:對語法的掌握程度

此外,在合作過程中,我也發現和Zoe比起來,我對於語法的掌握仍有很大的進步空間。以調整樣式為例,我通常都是以畫面為基準,只要最後呈現出來的是想要的畫面就好,有時並不會深刻去思考語法之間的關聯以及作用,因此每當有樣式需要修改時,我常常會不知所措。

但Zoe不同,可以感受到他相當清楚自己寫每一個code的意義,以及code彼此之間的關聯。因此當有地方需要修改時,他能快速反應,並知道怎麼樣修改才不會對其他地方造成影響。

反思三:排版的彈性

接著是在排版方面的彈性。為了想還原設計稿的模樣,我在排版時會習慣直接使用設計稿上的margin、padding、height、width的值來定義元素的樣式,而沒有事先設想在不同的情境下,畫面該如何調整。

以回覆modal為例,由於我參考設計稿的數值,直接將推文部分的高固定在特定的高度,而不是依據推文的內容調整,因此當推文變長時,便導致破版。回覆modal只是其中一個例子,也因為這樣的壞習慣,最後驗收時又多花了一點時間重新調整。

反思四:危機處理能力

最後是面對問題的方式。我發現我在面對bug時,往往會因為過於急躁而無法妥善處理,甚至錯失了進步的機會。

以在專案繳交截止當天突然出現的破版為例,雖然我掌握到英文字母過長可能是導致破版的原因,但卻沒有深入去研究word-wrap等相關語法背後的意義與限制,結果導致修了問題A,卻跑出問題B的窘況,最後還是靠Zoe才讓整件事順利落幕。

在這14天裡,我成長了,卻也發現在許多地方,我並不如先前所想像的熟練。雖然仍難免會因自己的不足感到沮喪或自卑,但我想,學習面對自己的不足並試圖解決,也是這次專案的目的吧!畢竟要先看到自己的不足,才能找到向前進的方法。

Simple Twitter結束了,但我的轉職之路才正要開始。希望我能靠著從這次專案中學習到的事物,以及補足自己的缺點,朝前端工程師更進一步!

--

--

Anstice Lin

英文、新聞、網頁前端⋯⋯,連結這些看似完全不同領域的,對我來說,就是「故事」。雖然現在看似朝著網頁前端努力,但誰知道呢?也許哪一天又會飄到別的地方去!這就是個記錄「我的故事」的地方,沒什麼特定的主題,只有一些我覺得有趣的事!