iT邦幫忙

2025 iThome 鐵人賽

DAY 3
1

禮拜三晚上八點,阿偉傳訊息給我:

「老黃又來了,我的PR被reject了,comment就一行『這個設計違反了 SOLID 原則,請重寫。』就這樣,沒了。」

「我真的快受不了了。」後面還補了三個翻白眼的emoji。

老黃是他們team裡資深的工程師,雖然技術是很強,但說話總是像機器人一樣冰冷。阿偉花了整個週末,好不容易趕出會員資料分頁功能,結果就換來這幾個字。

連一句解釋都沒有,沒有建議怎麼改善,連「這個設計」到底是在指哪個設計都沒寫。


隔天午休,咖啡廳裡。

阿偉一屁股坐下來,點了杯冰美式,開始抱怨:「你知道我為了趕這個功能,週末兩天都在家寫code嗎?我當然知道那樣寫不太好,但老闆要明天上線欸!難道我為了什麼SOLID原則,就要讓專案開天窗嗎?」

他越說越激動,聲音都快蓋過咖啡機的聲音了。

「那老黃平常怎麼樣?」我問。

「就...很安靜啊。平常開會都不太講話,但是Code Review的時候就會變成那種技術潔癖魔人。」阿偉用吸管戳著冰塊,「每次的comment都是『這裡違反DRY』、『這邊耦合太高』,從來不會說『但我理解你的考量』或是『有沒有其他方法』之類的。」

我默默點頭。唉,這種場景在科技業恐怕每天都在不同團隊上演吧。

看起來是技術問題的溝通問題

「你覺得老黃為什麼要這樣回你?」我問。

「因為他覺得我寫code很爛?」阿偉毫不猶豫地回答。

我思考道:「會不會是他因為沒時間解釋,或者有其他原因?畢竟他每次code review都很徹底,不是隨便看過就算了。」

阿偉愣了一下。

「你想想看,老黃每次review都很仔細對不對?而且他指出的問題確實都是問題。這代表什麼?」

「代表...他其實在認真幫我?」

「對啊。問題可能不是出在他願不願意幫你,而是你們各自在乎的東西不一樣。」

我在餐巾紙上畫了沒有交集的兩個圈:「你在乎的是專案能不能準時上線,老黃在乎的是code品質會不會影響後續維護。你們都沒錯,但沒有互相理解對方的考量。」

阿偉若有所思地看著那兩個圈。

「那我要怎麼辦?一直被他嫌嗎?」

主動出擊,別等著別人理解你

「記得上次我們說的嗎?拿回主導權。」我指著餐巾紙上的圈,「與其被動地等著老黃理解你的處境,不如主動讓他知道你的考量。」

「蛤,怎麼做?」

「如果又遇到了因為時程壓力需要在實作細節上妥協的時候,可以試試先找老黃討論看看,並把你的想法和擔憂也一起寫出來。」

我撈出剛在隔壁書局新買的筆記本,快速翻到空白頁:「你可以這樣寫...」

老黃,這次的會員分頁功能比較趕,想請你幫忙review一下。

背景:因為老闆希望明天能上線,所以我選擇了比較直接的實作方式。我知道這個寫法在幾個地方可能不夠優雅:

 - Service層的邏輯有點混雜,違反了單一職責原則
 - 沒有抽取共用介面,未來會有重複的code

我的考量:在時程壓力下,我優先選擇了可靠性和速度,但我也擔心這樣會累積技術債。

想請教:在現在的時程下,你覺得有沒有什麼方法可以在保持開發速度的同時,讓架構更乾淨一點?或者這個版本先這樣,下次iteration再重構會比較好?

阿偉看著我寫的範例,眼睛亮了起來。

「這樣寫起來...感覺有人味多了耶。」

「對啊,這樣就可以把那種很僵的氣氛,轉變成向他請益、一起思考解決方案的和平氛圍啦。」我繼續說,「而且你把自己的難處講清楚了,老黃就不會老是以為你程度很差了,而是有其他考量的關係。」

可以面對面打招呼更好

「其實如果你能鼓起勇氣的話」我喝了口咖啡,「直接走過去跟他聊,效果更好喔!」

「蛤?」阿偉有點緊張,「我們平常又沒什麼交集,突然過去不會很奇怪嗎?」

「哎呀別擔心啦~我們可以先禮貌地問老黃有沒有空檔時間,然後再依約去找他就行了」

「比如這次的例子來講,我們可以這樣說:『老黃,我看到你的comment了,我想了解一下你的想法。我知道那個寫法不太好,但因為時程的關係我選擇了比較簡單的方式。你覺得有沒有什麼折衷的辦法?』」

阿偉在心裡默念了一遍。

「然後呢?」

「然後你就會發現,老黃其實也是人,他也會理解時程壓力。可能他會告訴你一個你沒想到的簡單解法,也可能他會說『那這次先這樣,下次我們一起想想怎麼改善』。」

咖啡廳裡的音樂換了一首比較輕快的歌,阿偉的表情也跟著放鬆了一些。

「我一直以為code review就是...單方面被指正的過程。」

「嗯…我們也可以把 code review 看成是一個協作討論的機制。所以不是老師在單方面批改學生的作業,而是開發者跟把關的人一起努力讓code變得更好才對。」

如果今天Reviewer的角色調換呢?

「啊,對了。」我靈機一動,「那如果立場換過來,是你在review別人的code呢?你會怎麼做?」

「呃…」

「這樣回想起來,我當reviewer的時候好像也不是多客氣耶…」阿偉不好意思地搔搔頭。

「我想...我可能要先肯定他們做得好的部分,然後再提出需要改進的地方。」阿偉慢慢地說,「而且我應該要具體說明為什麼需要改,最好再提供一些改進的建議或範例。」

「對!這就屬於有建設性的回饋了」我點頭,「而且這樣一來,也會比單純說『請重寫』更有幫助,對吧?」

阿偉若有所思地說,「我好像也能理解老黃了...可能他也只是沒想過,怎麼表達得更友善而已。」

溝通就跟其他技能一樣是可以練的

阿偉把餐巾紙摺好放進口袋。

「我發現我好像一直把『溝通』當成是某種天賦,以為有些人天生就會,有些人就不會。」他說,「但其實它也是一種技能,對不對?就像學程式語言一樣,多練習就會進步。」

「沒錯。而且你想想看,你學一個新的框架或語言的時候,會害怕看文件、試錯嗎?」

「不會啊,寫錯了就除錯,看不懂查資料就好了嘛。」

「其實溝通也是一樣的,剛開始可能會覺得很尷尬、很不自然,但多試幾次也能慢慢抓到舒服的節奏的。」

阿偉點點頭,拿出手機開始打字。

「我現在就去跟老黃說。」

我看著他認真思考每個字句的樣子,想起上次我們聊天時,那個因為不知道該怎麼處理而顯得無助的阿偉。短短幾天,他已經開始主動想辦法解決問題了。

十分鐘後,阿偉的手機響了。

老黃回訊息了:「好啊,我現在有空,你過來一下。」

阿偉看了看我,深吸一口氣,起身往公司的方向走去。


上一篇
Day 2:PM又說「你先做看看」?鬼知道他要什麼
下一篇
Day 4:欸不是,我怎麼變成救火隊和工具人了?
系列文
《工程師的辦公室修行日誌》:寫給那個專注寫 Code、卻忘了寫人生的你5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言