技术使人膨胀?! 在过往的 coding 的生活中,你是否有过被技术前辈 diss 得找不着北的经历?又或者,你曾经因为自己的“优秀”而去肆意否决别人的代码? 今天场主想和大家分享 Philipp Ranzhin的《I ruin developers’ lives with my code reviews and I'm sorry》,在代码评审中,他所经历的以及所感受的……
以下为译文:
以前,我们组里有个非常弱的人,弱到就快要被辞退了(开发也有要被辞退的?!)。而我在代码评审中的每条注释都成了他棺材上的一颗钉子。
每次我点“提交评审”的时候似乎都能听到锤子落下的声音。他为人很好,我甚至感觉他有点可怜,但我也不能因此而放过他的代码。我有权批评他的代码,不是吗?我比他优秀,所以我做的没错。没有人会把很差的代码说成很好,不是吗?
最终他被辞退了,而在这之前他已经好几个月没有拿到奖金了。
我告诉自己说:“我不会像他那样。应该有更好的开发者来代替他的位置。我的所作所为都是正确的。”但当我接到另一个拉取请求的审核时,事情却发生了戏剧性的变化。
刚开始时一切一如既往。我打开 pr,查看了它想要解决的问题,设想了一下我可能会采用的解决方案,然后开始阅读代码。与以前一样,这些代码纯粹是垃圾。与我设想的解决方案差远了。于是,我写了一些抱怨的评语后,又开始阅读细节。我写下了一条又一条的问题和“疑似”问题,其中还夹杂着我攻击性的评论。
技术上,我比这个人更强。所以 1000 行的 pr 中夹杂了我给出的 200 多条评论,似乎这个人毫无生还的希望。
当我把鼠标移到“提交评审”上时我突然想:我为什么要这样?我对这些代码如此愤怒也是有原因的。作为团队的一员,我需要对这个项目的代码负起全部责任,毕竟以后我要照看这些代码。这些代码是所有业务问题的根源。这些代码不具备可扩展性,无法正常地通过测试,充满了各种 bug。支持这些成本会越来越高,而且不能开源,也无法吸引新的开发者。
这不就是批评人时我们常用的解释吗?好的开发者应该时刻考虑业务利益,要保证公司像齿轮那样运转下去。
但我似乎并不是这么想。这并不是我的判断标准。
我愤怒是因为每天晚上我都在学习 F#,甚至我女儿都开始误管别人叫爹了。而这个人并没有努力工作,而是回家陪孩子了。所以我想惩罚他。
我做代码评审是为了自我认同。我对项目或代码本身没什么兴趣。我只是一个能够伤害别人的疯子,一个无法为自己行为承担后果的精神病患者,一个拿着棍棒的雄性动物而已。
当我意识到这一点时,我感到非常羞愧。如果你问我是怎样的人,我肯定会说我并不是那种以自我为中心的疯子。至少在我生活的其他方面如此。但为什么我会在工作上如此邪恶呢?
在我学习软件开发时,对我最有价值的信息源之一就是论坛。那时我问了问题,也遭遇了很多凌辱:他们说我的问题是垃圾,解决方案更垃圾,还说我选错了语言,甚至不配成为“好”的程序员。
我想要变得更好,似乎只是为了把他们甩在身后。就像在体育运动中一样,我训练并不是为了某个神圣的目标,只是为了变得“更大、更强、更快”。就像菜鸟拳击手想要努力击倒电视里的大个子一样。
这样很痛苦,但我一直在努力。
当我变得越来越好之后,我把我的代码交给真正的牛人去评审。他们有比我多三倍的开发经验。每次我都被羞辱得体无完肤,有时我甚至都想退出这个行业了。我太笨了,根本不胜任这个行业。我一个星期的努力几分钟就被摧毁了,我甚至都没有任何争辩的余地——每条评论都那么明显那么正确。
很奇怪的是,每次发生这种事情,第二天我都能说服自己说用不了1-2年我就能比他们做得更好,让他们看看谁才是真正的王者。
最后,我变成了我曾经痛恨的样子:拿着自己的本事当拳头到处惹事的人。我做代码评审并不是为了业务,而只是想贬低新手。我的技术终于开始给我回报了。
如果别人给我的代码中有错误,我就会觉得自己很聪明,从而感受到莫名的喜悦。然后条件反射地给自己找一个合理的解释,就像那些道德败坏的政治家一样。我会告诉自己我的所作所为都很正确,我是为了公司而守护代码库。但这种借口并不意味着就是实情。
如果你告诉我你从未有过这种感觉,那你一定是在撒谎。如果你告诉我你有更崇高的目标,例如训练新手以及其他云云,那么我敢确定你也有这种感觉。如果你告诉我你已经学会控制这种感觉(然而这种感觉还是会出现),那么一定是很稀有的那个。
但这就是我的想法。一方面,我在别人的取笑中学会了准确的编程。人们唤醒了我的愤怒,而这种愤怒帮助我提升自己。上苍通过这种方式成全了我,所以我也可以唤醒其他年轻和没有经验的程序员的愤怒,这样他们才能成为更好的程序员,然后再对其他人做同样的事情,以此类推。
我们对成功的渴望以牺牲他人为代价,但这只是物竞天择的一种简单的手段。而且我会欣然接受这种方式,因为这不是重大的问题。
当你开始复制其他人的成功做法,却发现他们也很平庸时,你可以说“我也可以这样做。”从此你开始成为真正的编程天才,一切都开始走上正轨。你可以用一切了然于胸的口气讲话,他们就会相信你。
我自以为是,不是因为我有能力,而是因为我是一个自大狂。我认识的所有自我为中心的人都比其他谦虚的人更加成功。他们的代码写得更好,他们参加了更好的项目,他们赚的钱也更多。经理和总监认为他们更有价值,同事更尊重他们。
事实证明,你不必成为一名优秀的程序员,而只需要说服别人你是一个好的程序员。这种行为会造成一种恶性循环,不利于培养专业人员,而是有害的问题。
如果你想爬得更高,那么你会无时无刻不担心这种伪装会被识穿。所以这导致了另一个逻辑谬论:你设法说服自己和他人外在的权力展示是权力的真正含义。
作为开发人员,你总是避免不了争论。作为一个团队,只有经过反复的争论才能得出解决方案,尽管我们称之为“讨论”。然而,在争论中“获胜”更为重要,因为这样你会感到自己很强大并更有自信。
这让我想起一段往事。我曾经相信同性恋者是坏人。我没有想太多,我记得很久以前我父亲是这样告诉我的。有一次我和一群自由主义者在酒吧里,大家突然谈论起了这个话题。我立即宣布了我在这个问题上的立场,而他们则觉得“你胡说八道些什么?”于是,我们开始争论。我没有认真考虑过这个问题,也没有任何正当的论点,但是我仍然没有停止争论。我只是想赢得争论并挽回面子。至今我也不知道为什么。
从某种程度上来说,我喜欢这种争论。赢得争论、永远坚持正确、完美地完成所有事情,对我来说这些非常重要。谁的想法更好并不重要,重要的是最后实现的必须是我的想法。
感觉有点大事不妙。我从未想过这些!
本文开头提到的那次评审?最后我没提交。相反,我给了那个家伙一些评论并礼貌地要求他改正一些问题。其实没什么大不了,如果他的代码写不好,必要时我可以自己改。但是如果那个家伙的心理因为几十个严厉的评论而受伤,我就无法弥补了。
我现在的性情不是我自己的病,而是整个行业的一种疾病,至少在俄罗斯是如此。我们的心态基于对权力和优越性的崇拜。这就是我们需要解决的问题:我们必须停止这种做法。实际上,这做起来也很容易。
即便我们在年轻时被嘲笑,那并不意味着日后你必须以牙还牙。恶性循环很容易被打破。如果你能够承认另一个开发人员比你更有才华,那么可能你会输掉争论,但你的生活也会更加幸福。
这有点像日本合气道的做法。我说服自己内心的狂妄,告诉自己接受自己的弱点很伟大,然后开始为自己的所作所为感到骄傲。如果能让我自我感觉良好,那么在这个过程中打破禁忌也没关系。
原文:https://habr.com/en/post/440736/
作者 | Philipp Ranzhin
译者 | 弯月
责编 | 屠敏
出品 | CSDN