題:
將代碼稱為“垃圾”是否不專業?
Ostati
2017-10-21 01:06:22 UTC
view on stackexchange narkive permalink

簡介:我從事軟件開發工作已超過15年,目前領導著一個由大約10個開發人員組成的團隊,每天與他們進行代碼審查。我的評論通常是直接,誠實和直截了當的。

但是,今天的評論在郵件中有一條評論,幾乎沒有人感到緊張。就像這樣:

如果提高代碼質量得分意味著我們必須像下面那樣引入垃圾,那我們就很麻煩了。

我立刻被帶到一個私人聊天會話中,在那裡我接受了品行教育,並敦促不要使用非專業語言,否則他們會在我的評論中以警告他人的方式譴責非專業行為。

您會怎麼做?為什麼您認為我的語言不專業?

是的,代碼太可怕了,您可以理解我的意思。

更新1:完整代碼審查是詳盡而富有建設性的,並提出了有關如何改進它以及如何避免代碼質量工具中的此類錯誤的建議。

更新2(經過很長時間):有時會遇到相同的問題,但讓我非常清楚:我之前應該提到的“垃圾”一詞是代碼的一部分,並不是開發人員滿懷激情,而是代碼的建議質量工具,由於復制/粘貼而最終出現在我們的代碼庫中。

無論您或我想什麼,*貴公司*的高層管理人員都已經很清楚地*他們*認為這是不專業的。假設您想在那裡繼續工作,我建議您最好接受這一點並相應地調整自己的行為。
我花了很長時間才學會的一件事:人們將您用來形容他們的言語,思想,行為或工作的詞語視為描述*他們*。如果您說“此代碼是垃圾”,那麼代碼的創建者通常會在您稱其為垃圾時意識到這一點。在這種情況下,甚至更糟糕的是,您*認識*編寫該代碼的人能夠聽/讀您稱之為“垃圾”的單詞,並且您還公開發表了該聲明。您是否願意在所有人面前的牛棚中間找到一個開發人員,然後說:“您真是垃圾!”希望沒有。可悲的是,這就是您在這裡所做的。
說明我與@ostati's的最後修改。該網站的很大一部分是為將來的人們提供參考。過度批評OP根本無濟於事,而這樣做是在重複OP完全相同的錯誤。我們都會犯錯。無需對此一一列舉。OP具有遠見卓識,可以在事後徵求外界意見,是否還有其他值得稱讚的地方。
您可能試圖說*“此級別的代碼在您的下面,我知道您可以做得更好!” *,但相反,您可能感覺像是在說*“您很糟糕,您的工作很糟糕,所以您應該感覺不好”*。
@Steve-O,“高層管理人員”對此有何看法都無關緊要。這種言語幾乎可以肯定會侵蝕該OP同事的誠意,從而破壞信任和合作能力。引用老闆可能認為是避免此類行為的唯一原因的任何內容對OP都沒有幫助。有充分的理由避免使用這種語言,而不僅僅是“您可能會被抓住”。
我已經在以下形式中看到了這種模式:管理引入了一些新東西,初級開發人員開始使用它(出於恐懼),無骨氣的高級開發人員嘲笑初級開發人員而不是與管理人員接洽。典型示例:需求管理,系統的測試管理和(作為OP)代碼分析工具。
我認為這是在過去通過將所有人聚集在一個房間並進行討論來完成代碼審查的註釋。我可能會在討論中忙得不可開交,被認為是誇張的,這將促使更多的討論。在今天的在線審閱中,不僅會永久地記錄下來,而且您沒有語音語調或肢體語言來確定其含義。在寫東西的評論中,評論應盡可能地原始,以免被誤解。
除非所討論的編碼是使衛生處理設備過程自動化,否則將很難認為該描述符的不必要使用是侮辱性的。
作為領導者,它超出了專業領域。其真正的侮辱。
到目前為止,所有(優秀)答案都集中在“垃圾”方面-但是,“提高代碼質量得分”的提法到底意味著什麼?這不是對不適當的標准或工具的批評嗎?似乎這個角度已經消失了。
-1
“垃圾”是非建設性的。答案就這麼簡單。
想像您有一個孩子,他畫了一些東西給您。當然,我們都知道孩子們的圖畫是什麼樣子。您能對您兒子說他的畫是垃圾嗎?還是在您的妻子能聽到您的聲音時向他發表評論?我認為不是。為什麼?您為什麼還要對您的同事做同樣的事情?
作為擁有15年經驗並進行每日代碼審查的人,我很驚訝您甚至在問這個問題。我同意@Mike
請,請,請...發布代碼。一定要對其進行混淆,但是請讓我們以所有的榮耀來看看它!
您的嘲諷性評論有害於團隊的士氣和不幸的編寫該代碼的人,沒有人從中受益。您已經使自己看起來像一個自大的惡霸,您的帖子簡介顯示,由於您擁有15年的軟件經驗,因此您有資格這樣做。我認為您應該再仔細檢查一下自己,然後再進行其他損害。
您是否考慮過您侮辱編寫此代碼的人的感受?
這裡最大的問題似乎是有一位無法進行代碼審查的首席開發人員。
十一 答案:
Conor Mancone
2017-10-21 01:19:12 UTC
view on stackexchange narkive permalink

您會怎麼做?您認為我的語言不專業嗎?

是。

您的評論跨越了從糾正(通常依賴於具體和具體的評論)到侮辱(“這是太可怕了,如果我們堅持下去,我們就注定了”)。

有多少經驗都沒關係。代碼是否完整無用無所謂。誠實不是無禮的藉口。這是停止團隊進步和動力的最快方法之一。無論您個人的經驗或生產力如何,如果您在工作場所的態度會阻礙您的同事,都會對您的公司造成整體傷害。

這特別麻煩(原因以及管理層)可能是這樣嚴厲地回應了),因為從長遠來看,它實際上傷害了您的團隊。您應該知道,如果您的目標是提高團隊所生成代碼的真實質量,那麼這將嚴重損害您的目標。之所以這樣,是因為當您因舉止重要而無用而獲得聲譽時,人們不會向您求助(當您嘗試提供幫助時,他們通常也不會聽您的話)。結果,隨著時間的流逝,您的任何經驗都會浪費掉,因為人們會停止聽您的話。

保持禮貌。提供幫助和更正,而不是批評。我個人認為,在這種情況下(向相關人員和團隊道歉)是非常合理的。

編輯以添加當然,這裡也進行了有益的評論當然很好,但是請記住,感知與現實同等重要。在許多情況下,只需使用一個選擇不當的單詞即可撤消代碼審查本身所做的任何實際好處。一個非常有用的代碼審查,其結尾(我理解這不完全是所發生的事情),“總的來說,這是垃圾”仍然會給編碼器留下一個非常不好的印象,並且很有可能它們會停止聽你說的其他話。在整個過程中的每一步都要保持整個過程的專業性。

@Conor Mancone:請根據更新1/2中提供的信息編輯您的評論。
感知對於房間中的其他每個人都是現實。一旦建立了知覺,現實就迷失了。這些人不太可能重新評估情況。
如果這是一次盲目審查,並且包括審閱者在內的團隊中沒有人知道作者以外的其他人,您怎麼看?
@RibaldEddie的觀點(從我的角度來看)是最大的問題之一是對團隊士氣的影響。如果它是公開的(所有人),那麼每個人都可以看到它,並且它改變了每個人的想法和行為方式,即使他們不是代碼編寫者。大多數人會害怕自己得到同樣的反應,這對任何人都是不利的。更不用說它將對撰寫者產生非常實際的影響。他們不知道關鍵人物是誰,這一事實可能會使人們更加緊張,而不是更少。
@ConorMancone,但他們知道不是嗎。在我看來,這將使它與眾不同,因為它不再被視為個人。如果您對這項工作持批評態度,而又不知道是誰做的,而只有做這項工作的人知道,那麼我認為這會使它不太可能被個人接受。OP也沒有說出代碼的作者的想法。管理層可能不喜歡它,但是如果團隊的其他成員不在乎,那麼情況可能也會有所不同。
-1
@Kevin在代碼審查方面,我都沒有遇到過,但是我看到一些大型公司使用了一種雙盲方法來確保盡可能公平地進行審查。
“誠實不是無禮的藉口。”+1您可以誠實,直接地表達自己的意思,而不會受到傷害或貶低。這才是真正的原因。
Old_Lamplighter
2017-10-21 01:53:18 UTC
view on stackexchange narkive permalink

以這種方式嘲笑他人的代碼是信息技術專業知識的最低點,並且超越了嘲弄您的觀點。

  1. 這是公開完成的,這就是為什麼您(實際上)被拉到一旁的原因。
  2. 它破壞了團隊。
  3. 它滋生了怨恨。
  4. 編碼器,就像藝術家們批判非常親自。
  5. 這句話令人非常沮喪。該編碼器的生產力將受到打擊。
  6. 這會使其他人不太願意冒險,以免他們被嘲笑。
  7. ol>

    我必須用最強烈的話說這是壞事。此行為沒有任何藉口。不要重複。

    我有我自己的感受,我們當中的很多人都同意。與那些態度不好的人相比,我可以管理那些編寫了不良代碼的人,壓力減輕很多。我總是可以幫助您改善代碼,但是一個人的態度是我無法控制的,我不會與態度不好的人打交道。

很棒的要點。我<3他們。
回复:4-IME,每個人都對自己的工作提出批評。看到自己的工作反映自己是很常見的。
由於團隊對潛在的嘲笑感到緊張,這也可能導致團隊生產力的下降,因此,他們擔心擔心會受到類似待遇,因此不太願意提交可能真正有用的代碼進行審查。從長遠來看,這可能會導致更多,不必要的時間花費在進行自我審查上,而且還會導致同事之間互相打擾進行同行審查。
我認為您的最後一段可能在這裡有點過頭。OP讀起來更像是一個為自己的利益而太直接的人,或者沒有完全適應批評的社會規範的人。這是一個可解決的問題,與態度不好完全不同。(當然,經理仍然必須處理它,但是您將以不同的方式處理它。)
@Lilienthal我對其進行了稍微的編輯,因為我看到它可能太苛刻了。關鍵是,糾正技能缺陷比糾正不良態度要容易得多。
@GabrielC。不,我說的是我的意思,但是如果一個字令您感到困擾,也許您應該整體閱讀這篇文章。
然後,我將把“非專業主義”改為“專業主義”,因為它完全改變了含義。“專業化的低點”將更有意義。
@GabrielC。好吧,這個答案已經有將近16個月了。我認為會沒事的。這只是說最低價的一種多彩方式。
@GabrielC。Nadir(意思是:“一個人或組織的命運的最低點。”)對我來說似乎是正確的詞。這是所有生產率下降的最低點。它降低了生產率,降低了士氣。
-1
@GabrielC。不,我從您以前的評論中了解了所有這些內容。我只是補充說,我認為它是完全正確的。無論哪種方式,這都是一件難以置信的小事。絕對不值得具有強烈的攻擊性,
Travis Wilson
2017-10-21 02:50:19 UTC
view on stackexchange narkive permalink

對於被此類語言冒犯的人來說,很難解釋自己對未被此類語言冒犯的人的反應。通常有效的經驗法則是:如果關鍵性聲明解決的是超出一個特定事件的一般性,那麼這是令人反感的(因此不專業)。

換句話說,更專業的表達是堅持您的詳細審核,該審核特定於所審核的特定代碼。您可能會解釋,此錯誤代碼將提高代碼質量得分,這意味著我們也需要研究質量指標。人們已經做好準備,可以從一個嚴重的事故中吸取教訓。

但是,當您更改為全局上下文時,您的一條評論(是的,只有一句話!)現在是在批評員工自己或整個公司,並且更具威脅性。

您會在關係文學中發現全局批評和針對特定實例的抱怨之間的區別。 約翰·高特曼(John Gottman)的解釋(請參閱“批評”)是一個受歡迎的例子。

您選擇的單詞固然重要,但上下文更重要。說“垃圾進,垃圾出”是完全可以的(在我所知道的大多數軟件商店中),因為這具有特定的含義,並且您使用該短語來描述為什麼特定的設計不合適。走吧。

第一句話很漂亮,其餘都很好。謝謝。
gazzz0x2z
2017-10-21 01:38:14 UTC
view on stackexchange narkive permalink

直接,誠實和直截了當。

否則的話:苛刻,刻薄,不外交。

要學習的艱辛我們程序員是人類不是機器。他們對赤裸裸的真理不感興趣。人類是社會動物,需要良好的外交才能進行溝通。

甚至有人甚至認為,溝通的真正目的不是傳遞信息,而是增進友誼。我不會走那麼遠,尤其是在專業環境中,但這是您永遠不會忘記的事情:即使在什麼都沒說您的情況下,“直接,誠實和直率”實際上也會使人們對您不滿意。 ,這可能會妨礙您以後的工作關係。理想情況下,您總是希望在讚美之間夾一層批評。

您可以直率,誠實和直率,而不會苛刻,刻薄或不外交。我什至可以說把這些事情稱為苛刻,苛刻和非外交的本身就是苛刻,苛刻和非外交的。
Seth R
2017-10-21 01:23:24 UTC
view on stackexchange narkive permalink

什麼才是發表評論的合適語言,這完全取決於您的公司文化,但是簡單地將某人的代碼稱為“垃圾”(括號內表明您實際上使用了一個不太禮貌的詞)肯定不是很有建設性的。它不會幫助任何人改進。

代碼出了什麼問題?他們如何改善呢?開發人員應該做些什麼?那是您應該包含的唯一信息。如果它太糟糕而無法超出評論的範圍,則應將開發人員擱置一邊並親自討論。

作為團隊負責人和經驗豐富的人,您有責任提供幫助您的團隊會進步。那是你的工作。相信他們在代碼審查註釋中並不能帶來任何好處。

我已完整描述了問題,所以就好像我沒有在那裡進行一次班輪評審。
建設性的反饋意見是審查的一部分。
-1
@cdkMoose:我同意,但不必成為評論的一部分,如果沒有我在這裡所說的全部,那就更好了。被稱為“沒有建設性反饋的代碼審查評論”。
編輯以刪除“無建設性反饋”位。從您的原始帖子尚不清楚。我的其餘答案仍然有效。
akaioi
2017-10-21 03:51:11 UTC
view on stackexchange narkive permalink

您會怎麼做?為什麼您認為我的語言不專業?

所以……這是交易:

  • 您是團隊的負責人;這意味著您應該建立團隊,而不是擊敗他們。

  • 代碼是開發人員的工作;在同齡人面前以書面形式以垃圾方式稱呼垃圾是沉重的打擊。好吧,現在停止閱讀。下一部分...您可能會做些什麼?

    • 保留詳細的建議,這些建議很好

    • 在“總體”部分,說該文件未遵循以下詳細說明的最佳做法

    • 進行分組討論,與男生1-1或與男生進行培訓團隊來學習最佳做法。換句話說,將這個錯誤轉化為機會

    只有我的兩位,喲。

您對OP的領導地位的重視至關重要。我可以想像這樣一種情況,即稱呼對等方的代碼垃圾是適當的(如果進行部署將是一場災難,並且您需要震驚領導層以阻止其部署),但是大概團隊負責人能夠阻止有問題的代碼的部署。
Frank Hopkins
2017-10-21 03:50:27 UTC
view on stackexchange narkive permalink

這非常取決於公司文化。但是,需要考慮一些常規事項。調用代碼垃圾可能被認為是不專業的,主要有兩個原因:

  1. 它確實(本身)沒有提供關於什麼是壞的或如何改善情況的見解,它只是給出了代碼(低)值,雖然通常您只是想看一下它的優缺點,而不是一般認為它是不好的
  2. 它可能對同事(即編寫該代碼的人)感到冒犯
  3. > ol>

    對於1),可以通過提供有關您認為不好的方面以及如何解決它的具體細節來緩解。通常,有一些原因說明事情原樣,而不是有人只想寫垃圾。該代碼可能非常適合編寫該代碼時打算完成的工作,但是上下文發生了變化。

    對於2),如果您引用的代碼是某個特定人員最近提交的,該人可能會感到生氣。特別是如果他有理由客觀地寫一些不好的事情(例如時間限制),而您卻沒有考慮到這一點。通常,對您來說,垃圾是對其他人的完美選擇,稱其為垃圾只會將情緒帶入原本可以進行充分的客觀討論的地方。另一方面,如果您接管了一個舊的大型代碼庫,而當前團隊中尚無人認為“他的代碼”,那麼稱呼那堆可能是費解的代碼垃圾就很不切實際(仍然無法解決1個問題)但是,您最好對其進行備份)。另一個問題是如何交付任何包含詞義的行。越是情緒化的(和指責的)越糟,就越輕鬆,也許諷刺地針對自己,就越容易被接受。

    因此,如果不確定,請不要將任何內容稱為垃圾內容。如果您想測試一下水域,請開始使用這種無價語言來編寫沒人會喜歡的代碼(或您自己的代碼),並為自己提供一些自己不喜歡的細節。

    人們是否僅根據您使用的詞語做出冒犯的反應並認為您(非)專業取決於公司文化。但是,一般來說,人們會根據您的使用方式來判斷您。如果您只是在不爭論自己的觀點的情況下就將東西稱為垃圾,而沒有接受其他開發人員就代碼的原樣進行討論的理由,那麼人們會認為您是不合理和有判斷力的。因此不專業。尤其是如果您明確或隱式地指責您的同事認為您的錯誤代碼。這是正確的,無論您是否使用專有名詞,即說“這段代碼很糟糕”,而沒有任何進一步的評論,也是不專業的,但是,如果您使用的詞在情感上投入的越多(呈現給他們的情感就越多),那麼情況就越糟。 -工人,但是作為一種增加印像或減輕挫敗感的方法,完全可以。我在這樣的環境中工作,即語氣非常直接,好玩且句子經常充滿粗話。但是,通常,任何這樣的術語都是針對某些技術問題,某些框架的行為無法預測甚至是自己的代碼(“看看我在那裡做的垃圾,我寫的東西真是令人難以置信!”)。另一方面,我很少看到團隊如此專業地工作-互相尊重,總是尋找解決問題的方法,而不是如何分配責任。

    TLDR :使用專有名詞來描述代碼本身不一定非專業。但是,在某些文化背景下,任何使用專有名詞都被認為是不專業/令人反感的。在使用它們之前,您必須先弄清楚在您的環境中是否存在這種情況,而不是首先這樣做是不專業的。如果(他人)的代碼絕對有價值,是否使用了粗話,而沒有(a)提供細節,並且(b)在不將批評與他人分開的情況下以及c)在不知道他人可以將對其代碼的批評與對自己的批評分開的情況下,這也不是專業的。在您目前的公司中,人們顯然不習慣任何罵人/罵人的行為,並認為這是不良行為-因此請不要這樣做。

user81330
2019-02-14 19:17:50 UTC
view on stackexchange narkive permalink

您向錯誤的方向發送了該評論

當初讀您的帖子時,我認為這是對您的管理層的評論,而我最初的反應是“嗯,如果他們不喜歡事實,他們應該停止強迫您的團隊使用這種愚蠢的指標。”

這是否是實際情況(評論在鏈中沿上移 )-可以了。可能有些 unprofessional ,但實際上,這是警告管理層他們正在使您的團隊陷入困境的最直接的方法。


但是,似乎這不是在哪裡評論發表了。與其代表團隊反對管理—刪除團隊同意的愚蠢指標導致寫入垃圾,您做相反的做法,而是將團隊置於“該死的,該死的,該死的”。

代碼質量的指標,我懷疑是由您的團隊創建的。他們可能已經感覺到它們是白痴,被迫跳過。

告訴他們他們正在編寫的代碼是“垃圾”;因為他們無法控制他們的系統-只是表示您沒有他們的支持,也不想打架。


不專業,問題出在哪裡源自,不是不是只是評論的措辭。您會以這種方式來欺騙您的團隊,這是一種感覺。他們的回應實際上是“為此怪罪我們,我們將非常清楚地表明這種情況是您的錯。”

您使用的語言可能給了他們更多與您抗爭的理由繼續-但這絕對不是您受到壓力的主要原因。

BestGuess
2019-02-14 19:41:12 UTC
view on stackexchange narkive permalink

除了令人反感的語言外,您的評論還包含有關代碼實際錯誤之處的內容,並包含與您的團隊目標相反的潛台詞。

> 如果提高代碼質量得分

因此,總體目標是提高代碼質量。為什麼不說“我們要提高代碼質量”呢?為什麼要將此代碼段作為 not 不能提高代碼質量的參數。

對於我(作為一個經驗不足的開發人員,對您而言),這聽起來像是一個習慣於舊方式並且不歡迎更改(即使其被稱為“代碼質量”)的人的評論。 / p>

我們必須像下面那樣引入垃圾

您可能已經收集到,稱其他人寫“垃圾”的東西不是獲得批准的好方法,您絕對不會提供任何有關為何“以下垃圾”可能出問題的信息,除了它會以錯誤的方式摩擦您。

具有15年經驗的 Leading 開發人員應該能夠提供比稱為“垃圾”的更多信息。

那麼我們就遇到了大麻煩。

為什麼?為什麼?為什麼?用您的經驗來查明問題,而不是簡單地指出問題所在。而且,如果您真的很擅長工作,請指向更好的解決方案,以便您的團隊知道前進的方向。

抱歉,但是您的評論(摘錄)確實是垃圾。根據其定義,可以將其扔到垃圾箱中。

關於更新1 :如果您的完整評論很詳細並提供了所有上述信息。為什麼要在開發者之上侮辱開發者(並質疑您的團隊目標)?

Dan
2019-02-15 23:47:52 UTC
view on stackexchange narkive permalink

如果提高代碼質量得分意味著我們必須像下面那樣引入垃圾,那麼我們就陷入了嚴重的麻煩。

在某些情況下,代碼可以稱為“垃圾”。例如內存分配或無法訪問的代碼。但是,我認為您不是用這種方式來表示它。

但是,我認為您在指代某些編程樣式時應使用適當的術語。我主要看到的是競爭條件,循環條件檢查會在不改變循環的情況下重新計算每個循環的數組,等等。我將專門評論錯誤之處,或者是否可以使用替代函數將其記下來。

我喜歡這個答案。垃圾實際上意味著編碼!
Karl Bielefeldt
2019-02-16 00:23:46 UTC
view on stackexchange narkive permalink

大多數其他答案是在您對自動工具建議的代碼進行編輯之前,因此,讓我具體解決該部分。

您認為此代碼對於更嚴厲的批評是公平的,因為它來自工具而非人,但您沒有考慮:

  • 一個或多個人決定讓此工具在評估代碼質量中起重要作用。
  • 一個人決定複製/粘貼該工具的建議,而不是以一種更具可讀性的方式解決質量問題,要么是因為他們沒有想到可以做得更好,要么是他們不知道如何做來做得更好。

換句話說,循環中仍然存在人為的決定,而這些決定正陷入困境。我會更像您這樣表示反對:

在這種特殊情況下,我認為質量工具的建議不是很有幫助,這讓我感到沮喪,因為該工具經常會像這樣令人誤解。這不是很明顯,但是可以通過以下方式以更易理解的方式解決潛在問題:...

這可以清楚地表明您對質量工具而不是代碼作者的不滿,並提出了批評。通過提供解決問題的方法來建設性。

說得好。某人親自擁有或參與了公司的所有事務。即使是公司外部規定的某些合規性要求的修補程序/過程/工具,在公司中仍然會有人,即使他們對此感到不滿,也被迫使其他所有人也要遵守它。因此,即使在最好的條件下,您也要強調某人工作的可悲部分。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...