效能人因
无论人们如何精确或精细地度量生产力,实现生产力提高的最终瓶颈是行为的改变。如果理想中的生产力依赖于开发人员对自身生产力的洞察来识别个人改变的机会,那么为什么不首先关注开发人员,然后与其合作,识别提高生产力的机会(无论团队和组织的目标是什么?这将比试图准确、全面、大规模地度量生产力要经济得多。同时还可以进一步甄别最终负责实现生产力的人和专业技能。专注于开发人员对生产力的感受,也为生产力所有难以观察的间接因素留出了解释空间,包括开发人员的动机、参与度、幸福感、信任和对工作的态度等因素。这些因素可能比任何其他因素都更重要,可以使开发人员在单位时间内达到最高的工作效率。
满意度
工程师满意度是一个要从多方面考虑的概念,因而难以理解、预测或度量。这个维度反映了生产力的人为因素并有几个可能的子项,包括生理因素(如疲劳)、团队舒适度(如心理安全)以及个人的流动/专注、自主性或幸福感。持续学习或技能发展可能会对长期的质量、开发人员的保留或开发速度产生积极的影响,这也能表现为满意度的提高。对开发人员而言,满意度可能受到个人或团队工作中实际或可感知的效能所影响。
工作幸福感
最后,Palvalin还补充说知识工作者的幸福感在工作中既是工作效率的驱动因素,也是工作效率的结果。一个高生产力的知识工作者具有以下典型特征:对自己的工作有兴趣,有热情,能够从工作中找到意义和目标,没有持续的压力,受认可度高,工作与生活平衡,工作氛围好,能迅速解决与同事之间的冲突。以上迹象表明,著名的每周工作80小时的开发人员并不是一个高效的开发人员。
生产力驱动因素
· 软件开发人员是一种特殊的知识工作者。知识工作者的生产力已经在不同的背景下进行了研究,这些研究可以用来理解软件开发人员。
· 度量知识工作者生产力的主要方法有四种:面向结果、面向过程、面向人和面向多个方面的生产力度量方法。
· 针对知识工作者的研究表明,影响生产力的驱动因素有五类:物理环境、虚拟环境、社会环境、个人工作实践和工作幸福感。
幸福感与生产力
幸福感是一个个人问题,每个开发人员都要自己负责。按照这个思路,软件公司应该专注于从每个开发人员那里获得最大化的产出。但是,要获得人们的生产性产出,我们首先要进行投资。软件开发人员的生产力取决于他们各自拥具有的各种技能与知识,但要获得这些技能与知识,我们需要创造各种有利条件来激发他们的潜力。如第5章所述,开发人员的满意度对生产力很重要,低满意度可能会导致未来的成本上升,因此,公司应该关注软件开发人员的整体舒适度。此外,我们认为还应该努力创建更好的工作环境、团队、流程以及产品。
幸福感影响效能的科学依据
虽然直觉认为幸福感对生产力和舒适度有促进作用,但这一观点仍然需要得到科学研究的支持。我们以前的研究表明,快乐的开发人员可以更好地解决问题,这意味着个人情感与开发人员对个人生产力的自我评价有关,软件开发人员也正在呼吁对此领域进行研究。我们还提出了一种情感如何影响编程效率的理论:程序员的事件触发情感。这些情感可能会在开发人员的认知系统中有重要性和优先级,因此我们将称之为情感因素。情感因素与情感一起可能干扰程序员的注意力,从而影响他们的表现。从更大范围来看,我们的研究表明,情感是软件开发团队和组织绩效的重要组成部分。情感与团队认同感(即团队归属感)相关联,影响着凝聚力和社交氛围,反过来又作为一个关键因素影响团队绩效和团队成员的去留。
幸福感与软件工程师生产力有何关系
最后,问卷参与者直接提到不快乐如何阻碍他们的生产力提升。我们将所有与绩效和生产力损失相关的反馈做了分组,范围从简单明了(“生产力下降”和“ [负面经历]无疑使我工作变慢”)到更加明确(“ [不快乐]使提出解决方案或好的解决方案变得更加困难或不可能”)。不快乐还会导致流程活动延期:“在两种情况下(负面经历),都会导致项目延期。”当然,参与者反馈快乐会导致高生产力:“当我有这种[快乐]感觉时,可以写几个小时的代码”“我觉得自己在快乐的时候生产力变高了”以及“我的心情越好,效率就越高”。下面是一位参与者的详细信息:“我变得富有成效,专注并享受我的工作,而不会在代码中四处寻找来了解相关信息而造成时间上的浪费。”一个有趣的情况是,当开发人员感到快乐时,往往会执行额外的任务:“我认为,当自己处于这种快乐状态时,更有生产力,越快乐,就越有可能完成我一直在逃避的任务。”另一方面,不快乐的开发人员可能有很多无效工作,甚至是造成破坏性影响。我们发现一些问卷参与者破坏了任务相关的代码库(“由于我有点生气,所以删除了正在写的代码”),甚至删除了整个项目(“我删除了整个项目,重新写似乎没有错误的代码”)。另一个有趣的方面是关于快乐的长期考虑:“我发现当我感到[快乐]时,我在下一个任务上实际上会更有效率,并且我通常会为长期维护代码而做出更好的选择。[……]我更有可能清晰地注释代码。”
幸福感对其他结果的潜在影响
幸福感不仅影响生产力,还影响很多事情,其中大多数仍然与开发人员的绩效有关。这里列出其中的三个。
不满会导致沟通不足和流程的混乱:“沟通不畅和流程混乱会导致很难按时完成任务。”但是,快乐的开发人员也可能意味着更多参与协作的团队成员,从而增加了需要协同的工作。通常,我们会反复出现一种愿意分享知识的模式(“我很好奇,我喜欢把自己会的东西教给别人”),并愿意为解决问题而共同努力(“我们在一起解决棘手的问题或计划新功能上从来都不遗余力”),即使与当前的任务或当前职责无关(“我更愿意为他们解决工作中遇到的问题”)。
幸福感不仅会影响写代码的效率,而且还会影响代码的质量。参与者报告说:“最终(由于负面经验)不能保证代码质量。这会使我的代码混乱,出现更多的错误。”但也提到写代码的效率降低,或者是“结果,我写代码变得更草率。”有时,不开心导致疏于执行质量实践(“……所以我不能遵循标准的设计模式”)来应对负面体验。但是,快乐可以提高代码质量。一位参与者讲述了他们工作中发生的小故事:“我正在构建一个接口使两个应用程序通信。这是一个激动人心的挑战,我的快乐和积极的心情使我超越了一切,不仅功能正常运行,而且用户体验也变得不错。”在感到快乐时,开发人员一般更少出错,更容易找到解决方案,并进行新的方法提高代码质量。一位参与者告诉我们:“当我心情愉快且积极时,我写的代码看起来非常整洁。我的意思是,我可以写代码并快速分析问题,而没有或很少有不必要的错误。”这样做的结果是代码更简洁,可读性更高,注释和测试更好,并且错误和异常更少。
我们要报告的最后一个非常重要的因素主要与不快乐有关,就是精神不安和精神障碍。我们创建了此类别来收集那些威胁精神健康的结果。参与者报告说,开发软件时不快乐是造成焦虑的原因(“这种情况使我感到惊慌”)、压力(“ [我]失败的唯一原因[是]由于[劳累过度]”)、自我怀疑(“如果在某项任务上感到特别失落,我有时可能会开始怀疑自己能不能成为一名优秀的程序员”)以及悲伤和沮丧(“……感觉像有一团沮丧的浓雾笼罩着自己和项目”)此外,我们还发现,也有人提到觉得自己被评判、沮丧和对自己的能力缺乏信心。
幸福感与心率
最近的研究已开始了解并实验性地操纵这些“挥之不去”的思想游荡。我们发现,当人们认为自己有些想法总是挥之不去时,他们的工作表现自那一刻之前起就开始变差,且工作的持续时间也更不稳定。另外一个研究让人们应用配备的智能手机测量多日之内的想法,研究结果表明这种思虑会干扰正在进行的活动,并且需要更多努力去抑制。进一步的研究表明,相比之下,反刍的思维伴随着较低的心率变化。通常,较大的心率变化与幸福感相关,降低心率变异化是不好的。这意味着心率变化可能是生物特征监测的潜在目标,尤其是市面上出现了越来越多的低成本心率追踪器之后,例如集成在智能手表中的。
活在当下
当你鼓起勇气去休息,可以缩小视野,更好地安排工作的优先级, 并且能够与内心的善良以及同事建立更深层的联系。得到富有成效的正念休息,重要的是用心感知当下发生的事情,而不是完全让自己远离。正念的态度不仅包括对它的善意关注,还包括好奇心。你可以觉察到自己对当前情况的直觉反应,或者可以觉察自己的意图。还要意识到短暂的正念休息并不总是会让人感觉到平静和幸福。关键是要活在当下,坦然面对眼前发生的一切。
揉摘自《工程效能十日谈》