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