对代码的愤怒:程序员和消极情绪

对代码的愤怒:程序员和消极情绪

我正在看一段代码。 这可能是我见过的最糟糕的代码。 要仅更新数据库中的一条记录,它会检索集合中的所有记录,然后向数据库中的每条记录(甚至是那些不需要更新的记录)发送更新请求。 有一个映射函数,它只返回传递给它的值。 对于具有明显相同值的变量进行条件测试,只是以不同的样式命名(firstName и first_name)。 对于每个 UPDATE,代码都会向不同的队列发送一条消息,该队列由不同的无服务器函数处理,但它会为同一数据库中的不同集合完成所有工作。 我有没有提到这个无服务器功能来自于基于云的“面向服务的架构”,包含环境中的 100 多个功能?

怎么可能做到这一点? 我捂住脸,笑声中明显抽泣着。 同事问发生了什么事,我用颜色复述了一遍 BulkDataImporter.js 2018 年最热门点击。 每个人都同情地点点头并同意:他们怎么能这样对我们?

消极情绪:程序员文化中的情感工具

消极情绪在编程中起着重要作用。 它根植于我们的文化中,用于分享我们所学到的东西(“你不 你会相信的,那个代码是什么样的!”),通过挫折表达同情(“上帝,为什么这样做?”),炫耀自己(“我永远不会 所以 没有这样做”),将责任归咎于其他人(“我们失败是因为他的代码,这是不可能维护的”),或者,按照最“有毒”组织的惯例,通过羞耻感(“你到底在想什么?”?正确”)。

对代码的愤怒:程序员和消极情绪

消极情绪对程序员来说非常重要,因为它是传达价值的一种非常有效的方式。 我曾经参加过一个编程训练营,向学生灌输工业文化的标准做法是慷慨地提供表情包、故事和视频,其中最受欢迎的是 程序员面对人们的误解时的挫败感。 能够使用情感工具来识别好、坏、丑、不要那样做、绝对不做,这很好。 新员工有必要做好心理准备,因为他们可能会被远离 IT 的同事误解。 他们的朋友将开始向他们出售价值数百万美元的应用创意。 他们将不得不在无尽的过时代码迷宫中徘徊,而一群牛头怪就在拐角处。

当我们第一次学习编程时,我们对“编程体验”深度的理解是基于观察他人的情绪反应。 这一点从帖子中可以清楚地看出 sabe程序员幽默,很多新手程序员常去的地方。 许多幽默的幽默都或多或少地带有不同程度的消极色彩:失望、悲观、愤慨、居高临下等等。 如果这对您来说还不够,请阅读评论。

对代码的愤怒:程序员和消极情绪

我注意到,随着程序员获得经验,他们变得越来越消极。 初学者没有意识到等待着他们的困难,一开始就充满热情并愿意相信这些困难的原因只是缺乏经验和知识; 最终他们将面对事物的现实。

随着时间的推移,他们获得了经验并能够区分好代码和坏代码。 当那一刻到来时,年轻的程序员会因为使用明显糟糕的代码而感到沮丧。 如果他们在团队中工作(远程或亲自),他们通常会采用更有经验的同事的情感习惯。 这通常会导致消极情绪的增加,因为年轻人现在可以深思熟虑地谈论代码并将其分为好坏,从而表明他们“了解情况”。 这进一步强化了负面的一面:出于失望,很容易与同事相处融洽,成为团队的一员;批评 Bad Code 会增加你在别人眼中的地位和专业度: 表达负面意见的人通常被认为更聪明、更有能力.

消极情绪的增加并不一定是坏事。 除其他事项外,对编程的讨论非常关注所编写代码的质量。 代码的含义完全定义了它要实现的功能(硬件、网络等除外),因此能够表达您对该代码的看法非常重要。 几乎所有的讨论都归结为代码是否足够好,以及谴责不良代码的表现,其情感内涵表征了代码的质量:

  • “这个模块存在很多逻辑不一致的地方,它是进行重大性能优化的一个很好的候选者。”
  • “这个模块很糟糕,我们需要重构它。”
  • “这个模块没有意义,需要重写。”
  • “这个模块很糟糕,需要修补。”
  • “这是一块内存,不是模块,根本不需要写,作者到底在想什么。”

顺便说一句,正是这种“情感释放”让开发人员称代码“性感”,这很少是公平的 - 除非你在 PornHub 工作。

问题在于,人是奇怪的、焦躁的、情绪化的生物,任何情绪的感知和表达都会改变我们:一开始是微妙的,但随着时间的推移,会发生巨大的改变。

消极情绪的困境

几年前,我是一名非正式团队负责人,采访了一位开发人员。 我们真的很喜欢他:他很聪明,提出了很好的问题,精通技术,并且非常适合我们的文化。 他的积极性和进取心给我留下了特别深刻的印象。 我雇用了他。

当时我在公司工作了几年,感觉我们的文化不太有效。 在我到达之前,我们尝试推出该产品两次、三次甚至多次,这导致了大量的返工费用,在此期间,除了漫长的夜晚、紧迫的期限和有效的产品之外,我们没有什么可展示的。 尽管我仍在努力工作,但我对管理层分配给我们的最后期限表示怀疑。 而且他在和同事讨论代码的某些方面时,随口骂了一句。

因此,几周后,同一个新开发人员说了与我相同的负面言论(包括咒骂),这并不奇怪(尽管我很惊讶)。 我意识到他在不同的公司、不同的文化中会有不同的行为。 他只是适应了我创造的文化。 我心里充满了愧疚感。 由于我的主观经历,我向一个我认为完全不同的新人灌输了悲观主义。 即使他真的不是那样的人,只是装出一副可以融入的样子,我还是把自己卑鄙的态度强加给了他。 所说的一切,即使是开玩笑或顺便说的话,都有一种不好的方式变成人们所相信的东西。

对代码的愤怒:程序员和消极情绪

消极的方式

让我们回到我们以前的新手程序员身上,他们获得了一点智慧和经验:他们对编程行业更加熟悉,并且明白糟糕的代码无处不在,无法避免。 即使在最注重质量的最先进的公司中,这种情况也会发生(让我指出:显然,现代性并不能防止不良代码)。

好剧本。 随着时间的推移,开发人员开始接受糟糕的代码是软件的现实,他们的工作就是改进它。 如果糟糕的代码无法避免,那么就没有必要大惊小怪。 他们走禅宗之路,专注于解决他们面临的问题或任务。 他们学习如何准确地衡量软件质量并向企业主传达软件质量,根据多年的经验编写有根据的估计,并最终因其对企业的令人难以置信的持续价值而获得丰厚的回报。 他们的工作做得非常出色,因此获得了 10 万美元的奖金,并退休后可以在余生中做自己想做的事情(请不要认为这是理所当然的)。

对代码的愤怒:程序员和消极情绪

另一种情况是黑暗之路。 开发人员并没有将糟糕的代码视为不可避免的事情,而是主动指出编程世界中的所有不好的事情,以便他们能够克服它。 他们拒绝改进现有的糟糕代码有很多充分的理由:“人们应该了解更多,而不是那么愚蠢”; “这令人不愉快”; “这对生意不利”; “这证明了我有多聪明”; “如果我不告诉你这是多么糟糕的代码,整个公司都会掉进大海”等等。

这些人肯定无法实施他们想要的更改,因为不幸的是业务必须继续发展,而不能花时间担心代码的质量,这些人获得了抱怨者的名声。 他们因其高能力而被保留,但被推到了公司的边缘,他们不会惹恼很多人,但仍会支持关键系统的运行。 如果无法获得新的发展机会,他们就会失去技能并无法满足行业需求。 他们的消极情绪变成了苦涩,结果他们通过与二十岁的学生争论他们最喜欢的旧技术的历程以及为什么它仍然如此热门来满足他们的自负。 他们最终退休了,靠骂鸟来度过晚年。

现实可能介于这两个极端之间。

一些公司在创造极其消极、孤立、意志坚强的文化方面取得了巨大成功(比如之前的微软) 失去的十年) - 通常这些公司的产品完全适合市场并且需要尽快增长; 或者是具有命令和控制等级制度的公司(乔布斯最好时期的苹果公司),每个人都按照命令行事。 然而,现代商业研究(和常识)表明,最大限度的创造力需要较低的压力来支持持续的创造性和有条理的思维,这会带来公司的创新性和个人的高生产力。 如果您不断担心同事对您的每一行代码的看法,那么就很难进行创造性的、基于讨论的工作。

消极情绪正在影响流行文化

如今,工程师的态度比以往任何时候都受到更多关注。 在工程组织中,规则“没有喇叭”。 推特上出现了越来越多的轶事和故事,讲述那些因为无法(不会)继续忍受对外来者的敌意和恶意而离开这个行业的人。 甚至莱纳斯·托瓦尔兹 最近道歉了 多年来对其他 Linux 开发人员的敌意和批评——这引发了关于这种方法有效性的争论。

有些人仍然捍卫莱纳斯的批评权利——那些人应该了解“有毒消极性”的优点和缺点。 是的,文明极其重要(甚至是根本),但如果我们总结一下我们中的许多人允许负面意见的表达变成“毒性”的原因,这些原因似乎是家长式的或青春期的:“他们活该,因为他们是白痴” ”,“他必须确保他们不会再这样做,”“如果他们没有这样做,他就不必对他们大喊大叫,”等等。 领导者的情绪反应对编程社区影响的一个例子是 Ruby 社区的缩写 MINASWAN - “Matz 很好,所以我们也很好”。

我注意到许多“杀死傻瓜”方法的热心支持者通常非常关心代码的质量和正确性,以他们的工作来证明自己。 不幸的是,他们常常将硬度与刚性混为一谈。 这个职位的缺点源于人类简单但无成效的渴望感觉自己比别人优越。 陷入这种欲望的人就会陷入黑暗的道路。

对代码的愤怒:程序员和消极情绪

编程世界正在迅速发展,并且正在突破其容器——非编程世界的界限(或者说编程世界是非编程世界的容器?好问题)。

随着我们的行业不断发展,编程变得越来越容易,“技术人员”和“普通人”之间的距离正在迅速缩小。 编程世界越来越多地暴露在早期科技繁荣时期孤立的书呆子文化中长大的人们的人际互动中,而正是他们将塑造新的编程世界。 无论社会或代际争论如何,资本主义名义下的效率都会体现在公司文化和招聘实践中:最好的公司根本不会雇用任何不能与他人中立互动的人,更不用说拥有良好的关系了。

我学到的关于消极情绪的知识

如果你让太多的消极情绪控制你的思想和与人的互动,变成毒性,那么这对产品团队来说是危险的,对业务来说也是昂贵的。 我见过(也听说过)无数的项目分崩离析,并以巨大的代价完全重建,因为一个值得信赖的开发人员对技术、另一个开发人员,甚至是选择代表整个代码库质量的单个文件怀有怨恨。

消极情绪也会使士气低落并破坏人际关系。 我永远不会忘记一位同事因为我把 CSS 放在错误的文件中而责骂我,这让我心烦意乱,让我好几天都无法整理思绪。 将来,我不太可能允许这样的人靠近我的团队之一(但谁知道呢,人都会变的)。

最后是负面的 确实会损害你的健康.

对代码的愤怒:程序员和消极情绪
我认为这就是微笑大师班应该有的样子。

当然,这并不是支持笑容满面,在每个拉取请求中插入一百亿个表情符号,或者去参加微笑大师班(不,好吧,如果这就是你想要的,那就没问题)。 消极性是编程(和人类生活)中极其重要的一部分,它标志着质量,允许人们表达情感并与人类同胞表示同情。 消极表明洞察力和谨慎,以及问题的深度。 我经常注意到,当开发人员开始对他之前胆怯和不确定的事情表示怀疑时,他就达到了一个新的水平。 人们用自己的观点表现出合理性和信心。 你不能忽视消极的表达,那是奥威尔式的。

然而,消极情绪需要与其他重要的人类品质相平衡:同理心、耐心、理解和幽默。 你总是可以告诉一个人他搞砸了,而不必大喊大叫或咒骂。 不要低估这种方法:如果有人毫无感情地告诉你你已经严重搞砸了,那真的很可怕。

几年前的那一次,首席执行官与我交谈。 我们讨论了项目的现状,然后他问我感觉如何。 我回答说一切都很好,项目正在进行中,我们工作进展缓慢,也许我错过了一些事情,需要重新考虑。 他说他听到我与办公室的同事分享了更多悲观的想法,其他人也注意到了这一点。 他解释说,如果我有疑问,我可以向管理层充分表达,但不能“把它们记下来”。 作为首席工程师,我必须注意我的言论如何影响他人,因为即使我没有意识到,我也有很大的影响力。 他非常友善地告诉我这一切,最后说,如果我真的有这样的感觉,那么我可能需要考虑一下我自己和我的职业生涯想要什么。 这是一次令人难以置信的温和、要么不做,要么离开座位的谈话。 我感谢他提供了关于我在六个月内改变的态度如何影响其他人但我没有注意到的信息。

这是卓越、有效管理和软方法力量的一个例子。 我意识到,我似乎只是对公司及其实现目标的能力充满信心,但实际上我以完全不同的方式与他人交谈和沟通。 我还意识到,即使我对我正在从事的项目感到怀疑,我也不应该向同事表达我的感受,并像传染病一样传播悲观情绪,从而减少我们成功的机会。 相反,我可以积极地将真实情况传达给我的管理层。 如果我觉得他们没有听我的话,我可以通过离开公司来表达我的不同意见。

当我担任人事考核主管时,我得到了一个新的机会。 作为一名前首席工程师,我在表达对我们(不断改进的)遗留代码的意见时非常谨慎。 要批准一项改变,你需要想象当前的情况,但如果你沉迷于抱怨、攻击等,你将一事无成。 最终,我来这里是为了完成一项任务,不应该为了理解它、评估它或修复它而抱怨代码。

事实上,我越能控制自己对代码的情绪反应,我就越能理解它可能会变成什么样子,我感到的困惑也就越少。 当我克制地表达自己时(“这里一定还有进一步改进的空间”),我是在让自己和他人开心,而不是把情况看得太严重。 我意识到我可以通过完全(令人烦恼的?)合理来激发和减少其他人的消极情绪(“你是对的,这段代码非常糟糕,但我们会改进它”)。 我很高兴看到自己能在禅宗道路上走多远。

从本质上讲,我不断地学习和重新学习一个重要的教训:生命太短,不能不断地生气和痛苦。

对代码的愤怒:程序员和消极情绪

来源: habr.com

添加评论