iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
自我挑戰組

綠洲計畫:當團隊開始看見自己系列 第 17

Day 17 第十七章:第一次真正的代碼審查

  • 分享至 

  • xImage
  •  

第十七章:第一次真正的代碼審查

應用理論:對話式組織發展 (Dialogic OD)

對「未竟之事」的共同覺察,讓團隊卸下了一個沉重的心理包袱。他們決定,在下一個行動研究Sprint中,不再開發新的業務功能,而是將全部精力,投入到為那場巨大的資料庫重構進行「前期準備」上。他們的第一個任務,是選擇一個小而關鍵的核心模組,先進行一次「樣板式」的重構,並建立起一套全新的、健康的協作規範。

這次,艾佛勒將焦點放在了一個軟體開發中最日常,也最容易引發衝突的環節上 代碼審查 (Code Review)

在過去,「星雲科技」的Code Review充滿了火藥味。它常常演變成一場尋找對方錯誤、彰顯自己高明的「權力遊戲」。資深工程師的評論充滿了命令和評判,而資淺工程師則因為害怕被批評,傾向於提交一些無關痛癢的修改,或者對收到的評論進行被動的、不加思考的「應付式修改」。這個環節非但沒有提升代碼質量,反而加劇了團隊的不信任。

艾佛勒決心要將這個環節,從一個傳統的、權威式的「審查」過程,轉變為一個基於對話式組織發展 (Dialogic OD) 理念的「共同學習」過程。

對話式組織發展的核心信念是:意義是在對話中共同生成的。改變不是來自於專家的診斷和方案,而是來自於系統成員之間,透過高質量的對話,產生了新的認知、新的關係和新的可能性。Code Review,正是實踐這種對話的絕佳場域。

艾佛勒為這次的樣板重構,設計了一套全新的Code Review流程,並在一場特別會議上進行了宣講。這個新流程的核心,被他稱為「探索式代碼審查」(Exploratory Code Review)。

其核心原則包括:

  1. 審查者的首要任務是「理解」,而非「評判」: 你的第一反應不應是「這裡寫錯了」,而應是「我很好奇,你為什麼會選擇用這種方式來實現?」

  2. 多用「提問」,少用「陳述」: 將命令式的「把這個變數名改掉」,轉換成探索式的「關於這個變數的命名,我們有沒有可能找到一個更能反映其業務含義的詞?」

  3. 關注「意圖」,而非僅僅是「實現」: 嘗試去理解代碼背後的設計思想和權衡。例如可以問:「我看到你在這裡用了一個遞迴,是為了處理樹狀結構的資料嗎?有沒有考慮過深度過大的邊界情況?」

  4. 代碼提交者是「主人」,而非「罪犯」: 提交者需要清晰地在描述中闡述自己的設計思路、所做的權衡,以及希望審查者特別關注的地方。他/她對最終的修改有決定權,審查者的意見是「建議」,而非「指令」。

  5. 面對面或同步討論優先: 對於複雜的、可能引發爭議的修改,放棄非同步的評論區拉鋸戰,直接進行一次短暫的、面對面的「配對審查」(Paired Review)。

這個新流程剛提出時,團隊成員們都將信將疑。他們太習慣過去那種對抗式的模式了。

真正的考驗,在幾天後到來了。一位名叫小傑的、入職不到一年的後端工程師,鼓起勇氣,承擔了那個樣板模組重構的核心部分,並提交了第一次Code Review請求。他的請求,直接發送給了團隊的兩位權威 大衛和老趙。

辦公室裡,所有人都下意識地關注著這件事,氣氛有些緊張。大家都在看,新的遊戲規則,到底是不是真的。

小傑在提交描述裡,有些笨拙但認真地遵循了艾佛勒的指導,他寫道:「我嘗試用『策略模式』來重構這個模組,主要是為了應對未來可能增加的幾種計費規則。我不太確定的是併發情況下的線程安全性,希望大衛哥和趙老師能幫忙看看這一塊。謝謝!」

大衛收到了通知。他打開代碼,習慣性地皺起了眉頭。以他過去的風格,他會在五分鐘內找出十個問題,然後用不容置疑的語氣在評論區一一列出。但這一次,他看到了貼在自己顯示器邊緣的、那張寫著新流程原則的便利貼。他猶豫了。

他想起了艾佛勒在會上說的話:「每一次Code Review,都是一次鞏固或打破舊有權力模式的機會。」

他深吸一口氣,壓下了寫下「你這裡的顆粒度太大了」的衝動。他強迫自己,用「提問」來代替「評判」。他在評論區裡,敲下了他職業生涯中第一條「探索式」的評論:

「@小傑,感謝你的努力。我看到你在這裡使用了 synchronized 關鍵字來保證線程安全,這個想法很好。我很好奇,你當時有沒有考慮過使用 ReentrantReadWriteLock?它或許能在讀多寫少的場景下,提供更好的性能。我們可以一起探討一下這個場景的讀寫比例。」

這條評論發出後,小傑看到了,他愣住了。他預想中的狂風暴雨沒有到來,取而代之的,是一次平等的、富有建設性的技術探討邀請。他感到一陣暖流湧上心頭,立刻充滿能量地去研究大衛提出的新方案,並在下面回覆了他的思考。

而另一邊,資深架構師老趙,也給出了一條典型的「智者」式評論,但這一次,是以一種賦能的方式:「這個模組的職責邊界劃分得很清晰,這是很好的第一步。從更長遠的角度看,我們可以思考一下,它未來有沒有可能被拆分成一個獨立的微服務。這不在此次修改的範圍內,只是一個供未來參考的思路。」

這條評論,既肯定了小傑當下的工作,又為他打開了一扇通往更高架構視野的窗戶。

這次Code Review,成了「綠洲計畫」中一個里程碑式的事件。它沒有任何火藥味,反而像一次由資深專家帶領的、高質量的技術研討會。小傑不僅高質量地完成了重構,更從中學到了寶貴的併發編程知識和架構思想。

更重要的是,團隊成員們親眼見證了,當對話的質量改變時,人與人之間的關係,以及工作的成果,會發生怎樣奇妙的化學反應。他們開始相信,Code Review可以不是一個令人恐懼的審判,而是一個可以共同學習、共同成長的、寶貴的團隊儀式。

那個下午,辦公室裡敲擊鍵盤的聲音,似乎都變得比以往輕快了許多。


上一篇
Day 16 第十六章:未完成的重構
系列文
綠洲計畫:當團隊開始看見自己17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言