28

对不起,我的代码评审毁了一个程序员!

 5 years ago
source link: http://www.cocoachina.com/programmer/20190225/26414.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者 |  Philipp Ranzhin

译者 |  弯月

责编 |  屠敏

出品 |  CSDN(ID:CSDNNews)

以下为译文:

以前,我们组里有个非常弱的人,弱到就快要被辞退了(开发也有要被辞退的?!)。而我在代码评审中的每条注释都成了他棺材上的一颗钉子。每次我点“提交评审”的时候似乎都能听到锤子落下的声音。他为人很好,我甚至感觉他有点可怜,但我也不能因此而放过他的代码。我有权批评他的代码,不是吗?我比他优秀,所以我做的没错。没有人会把很差的代码说成很好,不是吗?最终他被辞退了,而在这之前他已经好几个月没有拿到奖金了。


VZVJniV.png!web

我告诉自己说:“我不会像他那样。应该有更好的开发者来代替他的位置。我的所作所为都是正确的。”但当我接到另一个拉取请求的审核时,事情却发生了戏剧性的变化。

刚开始时一切一如既往。我打开 pr,查看了它想要解决的问题,设想了一下我可能会采用的解决方案,然后开始阅读代码。与以前一样,这些代码纯粹是垃圾。与我设想的解决方案差远了。于是,我写了一些抱怨的评语后,又开始阅读细节。我写下了一条又一条的问题和“疑似”问题,其中还夹杂着我攻击性的评论。

技术上,我比这个人更强。所以 1000 行的 pr 中夹杂了我给出的 200 多条评论,似乎这个人毫无生还的希望。

当我把鼠标移到“提交评审”上时我突然想:我为什么要这样?我对这些代码如此愤怒也是有原因的。作为团队的一员,我需要对这个项目的代码负起全部责任,毕竟以后我要照看这些代码。这些代码是所有业务问题的根源。这些代码不具备可扩展性,无法正常地通过测试,充满了各种 bug。支持这些成本会越来越高,而且不能开源,也无法吸引新的开发者。

这不就是批评人时我们常用的解释吗?好的开发者应该时刻考虑业务利益,要保证公司像齿轮那样运转下去。

但我似乎并不是这么想。这并不是我的判断标准。

我愤怒是因为每天晚上我都在学习 F#,甚至我女儿都开始误管别人叫爹了。而这个人并没有努力工作,而是回家陪孩子了。所以我想惩罚他。

我做代码评审是为了自我认同。我对项目或代码本身没什么兴趣。我只是一个能够伤害别人的疯子,一个无法为自己行为承担后果的精神病患者,一个拿着棍棒的雄性动物而已。

当我意识到这一点时,我感到非常羞愧。如果你问我是怎样的人,我肯定会说我并不是那种以自我为中心的疯子。至少在我生活的其他方面如此。但为什么我会在工作上如此邪恶呢?

qMbmI3q.png!web

在我学习软件开发时,对我最有价值的信息源之一就是论坛。那时我问了问题,也遭遇了很多凌辱:他们说我的问题是垃圾,解决方案更垃圾,还说我选错了语言,甚至不配成为“好”的程序员。

我想要变得更好,似乎只是为了把他们甩在身后。就像在体育运动中一样,我训练并不是为了某个神圣的目标,只是为了变得“更大、更强、更快”。就像菜鸟拳击手想要努力击倒电视里的大个子一样。

这样很痛苦,但我一直在努力。

当我变得越来越好之后,我把我的代码交给真正的牛人去评审。他们有比我多三倍的开发经验。每次我都被羞辱得体无完肤,有时我甚至都想退出这个行业了。我太笨了,根本不胜任这个行业。我一个星期的努力几分钟就被摧毁了,我甚至都没有任何争辩的余地——每条评论都那么明显那么正确。很奇怪的是,每次发生这种事情,第二天我都能说服自己说用不了1-2年我就能比他们做得更好,让他们看看谁才是真正的王者。

最后,我变成了我曾经痛恨的样子:拿着自己的本事当拳头到处惹事的人。我做代码评审并不是为了业务,而只是想贬低新手。我的技术终于开始给我回报了。

如果别人给我的代码中有错误,我就会觉得自己很聪明,从而感受到莫名的喜悦。然后条件反射地给自己找一个合理的解释,就像那些道德败坏的政治家一样。我会告诉自己我的所作所为都很正确,我是为了公司而守护代码库。但这种借口并不意味着就是实情。

如果你告诉我你从未有过这种感觉,那你一定是在撒谎。如果你告诉我你有更崇高的目标,例如训练新手以及其他云云,那么我敢确定你也有这种感觉。如果你告诉我你已经学会控制这种感觉(然而这种感觉还是会出现),那么我一定是很稀有的那个。

但这就是我的想法。一方面,我在别人的取笑中学会了准确地编程。人们唤醒了我的愤怒,而这种愤怒帮助我提升自己。上苍通过这种方式成全了我,所以我也可以唤醒其他年轻和没有经验的程序员的愤怒,这样他们才能成为更好的程序员,然后再对其他人做同样的事情,以此类推。

我们对成功的渴望以牺牲他人为代价,但这只是物竞天择的一种简单的手段。而且我会欣然接受这种方式,因为这不是重大的问题。

a2amqe6.png!web

当你开始复制其他人的成功做法,却发现他们也很平庸时,你可以说“我也可以这样做。”从此你开始成为真正的编程天才,一切都开始走上正轨。你可以用一切了然于胸的口气讲话,他们就会相信你。

我自以为是,不是因为我有能力,而是因为我是一个自大狂。我认识的所有自我为中心的人都比其他谦虚的人更加成功。他们的代码写得更好,他们参加了更好的项目,他们赚的钱也更多。经理和总监认为他们更有价值,同事更尊重他们。

事实证明,你不必成为一名优秀的程序员,而只需要说服别人你是一个好的程序员。这种行为会造成一种恶性循环,不利于培养专业人员,而是有害的问题。

如果你想爬得更高,那么你会无时无刻不担心这种伪装会被识穿。所以这导致了另一个逻辑谬论:你设法说服自己和他人外在的权力展示是权力的真正含义。

作为开发人员,你总是避免不了争论。作为一个团队,只有经过反复的争论才能得出解决方案,尽管我们称之为“讨论”。然而,在争论中“获胜”更为重要,因为这样你会感到自己很强大并更有自信。

这让我想起一段往事。我曾经相信同性恋者是坏人。我没有想太多,我记得很久以前我父亲是这样告诉我的。有一次我和一群自由主义者在酒吧里,大家突然谈论起了这个话题。我立即宣布了我在这个问题上的立场,而他们则觉得“你胡说八道些什么?”于是,我们开始争论。我没有认真考虑过这个问题,也没有任何正当的论点,但是我仍然没有停止争论。我只是想赢得争论并挽回面子。至今我也不知道为什么。

从某种程度上来说,我喜欢这种争论。赢得争论、永远坚持正确、完美地完成所有事情,对我来说这些非常重要。谁的想法更好并不重要,重要的是最后实现的必须是我的想法。

感觉有点大事不妙。我从未想过这些!

YzueYfZ.png!web

本文开头提到的那次评审?最后我没提交。相反,我给了那个家伙一些评论并礼貌地要求他改正一些问题。其实没什么大不了,如果他的代码写不好,必要时我可以自己改。但是如果那个家伙的心理因为几十个严厉的评论而受伤,我就无法弥补了。

我现在的性情不是我自己的病,而是整个行业的一种疾病,至少在俄罗斯是如此。我们的心态基于对权力和优越性的崇拜。这就是我们需要解决的问题:我们必须停止这种做法。实际上,这做起来也很容易。

即便我们在年轻时被嘲笑,那并不意味着日后你必须以牙还牙。恶性循环很容易被打破。如果你能够承认另一个开发人员比你更有才华,那么可能你会输掉争论,但你的生活也会更加幸福。

这有点像日本合气道的做法。我说服自己内心的狂妄,告诉自己接受自己的弱点很伟大,然后开始为自己的所作所为感到骄傲。如果能让我自我感觉良好,那么在这个过程中打破禁忌也没关系。

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

本文为 CSDN 翻译,如需转载,请注明来源出处。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK