在我剛加入 Crypto.com 時,團隊成員在一次Retrospec裡面提到,不希望某些功能只有單一個工程師知道,希望我們可做更多的知識分享,所以我們後來在每一週的禮拜二加入了 Pair Programming Day,兩個兩個一組,嘗試完成功能。
一開始其實蠻排斥的,因為在我的職涯前期一直都沒有一個可以真正跟我討論的資深工程師同事,所以對於軟體開發如何真正做到協作,或者想法上面的交換,其實都不太熟悉。但這是一個學習的機會,不妨就試試看!
就這樣,每個星期二的 Pair Programming Day 開始了!
基本上在碰鍵盤之前,都會用一小段時間來確認兩個人看到需求單的時候,都知道需求單上面敘述的東西有沒有清楚,並且討論如何實作。如果兩人意見不一致的話,就會有另外一個討論,來看看哪一個實作方法比較好,在討論結束之後,才會拿起鍵盤開始。
我發現我自己有一個很奇怪的現象,在別人有鍵盤的時候,就會很心急的一直要求別人改東改西,有時候又覺得他的動作太慢了,恨不得自己有鍵盤;但輪到我之後,我卻變成了那個慢的人,很常卡住又常常找不到檔案在哪裡,或者快捷鍵是什麼都一直忘。一開始的 Pair Programming 往往大家都呲牙裂嘴,認為自己工作的方法才是對的。
25分鐘到了之後大家就會休息五分鐘,也讓怒氣比較不容易累積,在這五分鐘也可以稍微想一下剛剛的 Pair Programming 是否真的有達到原本預想的成果。隨著時間的累積,大家也漸漸地抓到如何協作完成功能,如何表達自己的想法,以及兩人有分歧的時候如何解決。
個人認爲這是一個很好的練習,尤其是工程師通常都覺得自己的程式碼才是對的(其他人都只會寫爛 Code (X)),經由協作,可以學習不同的工作方式,不同的實作思維,久而久之也可以內化成自己的工作習慣。
其實不是真的番茄做成時鐘,而是一個叫做番茄鐘的工作方法,將工作時間分散成四個小段的時間(通常為25分鐘),然後一個小時段的休息(通常為五分鐘),經歷四個循環之後,會有一個大的休息(通常為二十分鐘)。這樣子可以保持每一段的工作時間自己的腦子都是fresh,而不會積累太多的壓力,而且在休息時間也可以完全放鬆自己的腦袋,讓下一段的工作時間保持清新。