當前位置:
首頁 > 科技 > 對不起,我用代碼評審毀了程序員的生活

對不起,我用代碼評審毀了程序員的生活

作者 | Philipp Ranzhin

譯者 | 薛命燈

我的團隊里曾經有一個傢伙,實在弱爆了,以至於有被開除的風險。我提交的每一個代碼評審對他來說都是致命一擊。每次在提交代碼評審時,我幾乎都能聽到他的嘆氣聲。他是個好人,我為他感到難過,但這並沒能阻止我把他的代碼撕得稀巴爛。我有權評審他的代碼,因為我比他更好,所以我可以這麼做。沒有人會把壞代碼說成是好的,對吧?最後,他被開除了,而在此之前,他已經連續幾個月沒有拿到獎金了。

我對自己說:「我不需要去做他的工作。他之前只是佔了一個坑,而這個坑應該屬於比他更好的人。我做的一切都沒錯」。直到後來我收到了另一個代碼評審,事情才發生了戲劇性的變化。

乍一看,它似乎和以前一樣。我打開 pr,看看它解決了什麼問題。一如既往,這純粹就是一坨垃圾,離我能想到的解決方案還差得很遠。我照常輸入了一些帶有抱怨語氣的評語,然後繼續看細節。結果是一連串的問題,中間穿插著我的攻擊性評論。

這個一千字的pr中夾雜了 200 條評論,幾乎不給這個人留有一點希望。

我把滑鼠游標移到「提交評審」按鈕上,然後停下來想:我為什麼要這樣做?

我之所以感到憤怒也是有原因的。作為團隊的一員,我對項目的代碼負有全部責任,畢竟我以後要一直陪伴它。如果沒有仔細評審,就會給業務帶來很多問題。代碼無法擴展,無法正常測試,充斥著各種 bug,支持成本變得越來越高,項目不能被開源或者用來吸引新的開發人員。

一個優秀的開發人員應該懂得捍衛公司的利益,確保公司像發條一樣持續運轉。

但我真的是這麼想的嗎?

我之所以生氣,是因為我沒日沒夜地花時間學習 F#,我的女兒都開始誤管別人叫「爸爸」了,而這個傢伙,代碼不好好寫,還跑回家陪孩子去了。所以,我要懲罰他。

因為我做代碼評審只是為了自我認同,我對項目或代碼本身並沒有多少興趣。我只是一個允許傷害別人的瘋子,一個持有殺人執照的精神病患者,一個手裡舉著棍棒的雄性動物。

當我意識到這一點,我為自己感到羞愧。如果你問我我是個怎樣的人,我會回答說,我並不是一個以自我為中心的瘋子,至少在我生活的其他方面是這樣的。那為什麼在工作上我會如此邪惡?

在我學習軟體開發時,論壇是最有價值的信息來源之一。我在論壇上提問,人們就在回復中對我進行凌辱:他們說我問的問題就是垃圾,而我的解決方案更垃圾,我選錯了編程語言,而且我不配成為「好」程序員。

我想要變得更好,但似乎只是為了要把別人甩在身後。就像在體育運動中一樣——我訓練不是為了一個更好的目標,而是為了變得比其他人「更大、更強、更快」。有點像一個菜鳥拳擊手想要努力擊倒電視里的大個子。

這樣很痛苦,但我需要繼續前行。

當我變得更強大時,我把代碼交給更有才華、比我經驗豐富三倍的人去評審。但每一次我都被羞辱得體無完膚,幾乎讓我有了退出這個行業的想法。我是不是太笨了,根本不是這塊料?一個禮拜辛苦的編碼工作在幾分鐘內就土崩瓦解,而我甚至沒有任何爭辯的餘地——每一條評論都是那麼無情。奇怪的是,每當發生這種情況,第二天我就會對自己說,一兩年之後,我會變得比他們更好,到時候就知道誰才是真正的「王者」。

而最後,我卻變成了我最討厭的人:一個無恥的混蛋,把自己掌握的技能當拳頭一樣肆意揮舞。我不做業務代碼評審,我只喜歡對新手雞蛋裡挑骨頭。

當有人拿代碼給我評審,並讓我發現了錯誤,我就會覺得自己很聰明,並陶醉在其中。然後我的腦子裡就會跳出來一個想法,就像一個搞砸了的政治家。我會告訴自己說,我實際上在做正確的事情,我是在為了公司的利益而守護代碼庫。但這種想法並不真實。

我真正的想法是這樣的。一方面,因為一直被取笑,我學會了更好的編碼技能。人們喚醒了我的心中的憤怒,而這種憤怒幫助我取得進步。宇宙賜予我這種特質,這樣我就能喚醒其他年輕程序員心中的憤怒,讓他們成為更好的程序員,然後他們也對別人這樣,如此往複,直到永遠。

我們以犧牲他人為代價來追求成功,這是大自然物競天擇的邏輯。

你開始模仿其他人成功的做法,但他們可能是混蛋,然後你會說「我也可以這樣」。你開始看起來像一個該死的編程天才,如入無人之境。你說話的口氣就好像你很在行,人們也開始相信你。

但我覺得我達到今天的這個位置並這不是因為我有能力,而是因為我是一個自大狂。我認識的所有以自我為中心的人都比那些謙虛的同事更加成功。他們的代碼更好,被用於更好的項目中,他們賺也更多。主管們認為他們更有價值,同事也更尊重他們。

事實證明,你不必成為一名優秀的程序員,你只需要讓別人相信你是一個好程序員。但這種行為會變成一種惡性循環,這種惡性循環不會產生專業的程序員,而是無恥的混蛋。

如果你成功地登上了頂峰,就會如履薄冰,一直擔心腳下踩的這層薄薄的紙片什麼時候會崩塌。這導致了另一個邏輯謬誤:你試圖說服自己和其他人,外在的權力展示就是真正的權力。

作為一名開發人員,你總歸是要與別人爭論一些東西。在團隊里,在經過多次爭論後才能得出解決方案,即使我們稱之為「討論」。然而,比「贏」得爭論更重要的是,你可能只是迷戀「權力」給你帶來的快感。

它讓我想起了我的一次經歷。我曾經認為同性戀者就是不好的。我沒有想太多:很久以前我父親這麼告訴我,我就記住了。有一次,我和一群自由派人士在酒吧里聊天,突然聊到了這個話題。我馬上就表達了我的立場,然後我們開始爭論。我沒有認真思考過這個問題,也沒有任何有力的論點,但我還是死皮賴臉地爭論下去。我的目標只有一個,就是贏得爭論並挽回面子。

在某種程度上,我還是喜歡那樣。對我來說最重要的是贏得爭論,我總是對的,要把每件事都做得完美。誰的想法更好並不重要,重要的是被實現的必須是我的想法。

但這樣真的糟透了,我真的不應該那樣想!

這個評審我並沒有發送出去,相反,我給他一些建議,並禮貌地要求他修復一些東西。代碼寫得不好不是什麼大事情,如果有必要我可以幫他們改,但我無法修補一顆被無情評論摧殘的破碎的心靈。

我現在的這種個性不只是我個人的問題,而是整個行業的頑疾,至少在俄羅斯是這樣的。我們的心態是建立在對權力和優越性的崇拜之上。這就是我們需要解決的問題:不要再這樣了。實際上,要做到這個很容易。

如果我們在年輕時曾經被嘲笑,並不意味著要在以後「回報」給別人。這種惡性循環很容易就可以打破。如果你能夠學會接受爭論失敗的事實,並承認其他人比你優秀,那麼你的生活會變得更輕鬆。

這是一個合氣道式的舉動。我騙過了內心的自大狂,讓它接受自己的弱點,並開始為自己所做的事感到驕傲。不管我在這個過程中打破了什麼禁忌,只要它能讓我感覺更好。

英文原文

https://habr.com/en/post/440736/

Q 言 Q 語時刻

你有什麼關於代碼評審的故事願意跟大家分享的嗎?

你有在代碼評審里被傷害到,或者傷害到別人過嗎?

請在評論區留言告訴我們!

今日薦文


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

高可用、彈性動態的金融級移動架構在螞蟻金服的演進之路 | ArchSummit 分享首發

TAG:InfoQ |