Dino Su
May 25, 2022

團隊的知識與生產力

鐵匠的材料、工具與技能

如果程式碼是一種產出物,那在這生產過程中的材料會是什麼 ? 迷因會告訴你是咖啡,但我更傾向 The Pragmatic Programmer 作者提出的說法「知識」。

卓越的工程師固然是要有天份,但能透過持續學習累積而來的知識才是他們能與眾不同的地方,所以我想聊一下作為一個團隊的管理者,如何營造一個能夠共同學習的場域來促進知識的交流,並促進整體的生產力。

1. Code Review

它最主要的目的並非是讓同儕相互學習,但在過程中知識的交換是會自然而然發生的。

也許你已經有多次從其他人的 PR 裡看到新的 Code Idioms 或是語言內各種的奇技淫巧的經驗了,這些來自實務上的組合技是不會寫在官方文件裡的。另外就是那些經年累月堆積而來的 Domain Knowledge,是團隊內擁有最高價值的資產。

2. Sharing

鼓勵成員進行主題式的分享,分享是一種對既有知識重新咀嚼與連結的過程,並會在最終形成一番屬於自己的體悟,那些唯有能分享給別人的部分才是真正吸收到的知識。

分享的行為也有利於塑造團隊分享與互助的文化,更能保持團隊持續學習的動能。要注意例行性的分享會降低分享的品質,所以避開輪班制吧,不要讓分享活動變成像是在播報每日新聞一樣。

3. Study Group

相較於 Sharing 是個人的知識分享,讀書會則是透過群體共同學習的方式來獲得更多即時的討論與回饋。如果團隊正在嘗試導入一個不確定性高的技術時,先建立一個讀書會來看看其成熟度與團隊的接受度。

舉辦讀書會時要注意群體的參與度,避免個體或少數陷入唱獨角戲的狀態,如果有人對讀書會主題沒有參與感的話,讓他們保持自由參加會讓讀書會的品質更好。

4. Conference

對開發團隊來說與 Tech Stack 直接相關的 Conference 是最佳的知識獲取管道。除了新技術外也可以從中瞭解趨勢發展的方向。以 KKBOX App 開發團隊來說,每年的重頭戲自然就是 WWDC, Google I/O 與 Android Dev Summit

近年在武漢肺炎 (COVID-19) 的影響下,這些開發者大會也轉型為線上的虛擬活動,這樣的轉變促成了團隊能有更高的參與機會而不需受限於的經費的限制。所以為你的團隊保留幾天的時間讓他們能盡情參與吧。

同時這也是一個絕佳的時間點來重新檢視團隊的 Tech Roadmap,計畫性的更新技術與汰換工具能讓團隊有更好的生產力,也能降低長期的維護成本。

5. Cross Platform Sharing

同溫層的形成往往是不自覺的,要突破同溫層就要刻意的打造一個能夠跨平台分享知識與經驗的場子,否則知識的交換就會受限在單一技術平台上,也喪失了看到他山之石的機會。

KKBOX App 在開發上會透過的 Cross Functional Team 進行,我們內部將他稱為 Squad。在依照功能切割的 Squad 裡,Android、iOS 與 Web Developer 會跨領域的討論產品需求來討論系統的設計與實作規劃,避免單一觀點形成的技術盲點。

另外我們還會以開發中心為單位來定期舉辦所謂的 Demo Day,在這個約 30 人的 App 開發中心裡,不同技術背景與業務範疇的成員可以自由的分享他們近期的成果或學習,這樣的場合讓同領域但不同做法的知識更易於交換與交互碰撞。

6. Newcomer’s Orientation

上述這些促進知識交流的活動會反映在團隊的新人訓練成效上,一個完整有系統的新人訓練能提升新成員的生產力,更是團隊知識能否有效傳遞與複製的關鍵行為。

但要避開邊做邊學的訓練模式,它會讓知識以片斷的方式傳遞或是僅有口耳相傳的管道才能獲取。如果團隊人數已經有一定的規模了,著手建構團隊的新人訓練系統吧,新加入的成員與未來的你都會感謝自己的。

寫在最後,文件與測試是軟體開發者普遍認為重要但又經常被遺忘的事。團隊的管理者要經常性的調整團隊視野與配置必要資源,避免團隊因為隧道效應而讓長遠的目標陷入了停滯。