软件团队的共担责任

问责制被认为是个人与其社会系统之间的纽带,它创造了一种将个人与其行为和绩效联系起来的身份关系。在入门系列的第一篇文章《超越工具和流程:成功软件开发团队的策略》中,我们介绍了问责制的概念,并提出了以下定义:

期望对自己的行为负责,并需要在未来向他人提供此类行为的解释和理由。

无论集体的性质如何,从二元组到文明,解决其成员之间利益分歧的协调与合作都是必不可少的。问责制通过在社会系统中建立共同的期望来发挥作用。当制定了标准和期望时,人们必须遵守,否则可能会受到惩罚。社会系统的各个层面都会评估对标准的遵守情况,包括个人、二元组、团体、组织和整个社会。

问责制是所有社会(包括组织)的基本推动因素。如果社会体系缺乏问责制,个人行为将不顾他人造成的后果。因此,组织可能发现有效管理其运营具有挑战性。在软件开发中,问责制早在 80 年代的先驱者工作中就得到了承认。在 Barry W. Boehm 关于“软件工程七项基本原则”的论文中,他提出了一项确保对结果负责的原则,即“对结果保持明确的责任制”。

此外,“问责制”在 Scrum 指南中出现了九次。该指南非常强调问责制作为一种控制机制,例如“让彼此 [开发人员和团队成员] 以专业人士的身份承担责任”。那么,问责制如何控制和改善软件团队的成果呢?

图 1 直观地展示了追究责任的过程。它由一个评估过程组成,在这个过程中,个人要对自己的行为和决定负责,并受到特定社会文化背景下的人际、社会和结构因素的指导。受众会评估个人是否符合预先定义的规则、标准、官方和非官方期望以及共同规范,从而给予奖励或处罚。作为回应,个人会发展出各种应对机制,既有主动的,也有被动的,以维护和维持其社会体系中一致的自我形象。其中一些机制可能包括认知策略,例如将行动与受众偏好保持一致,或事后合理化,即个人用理由和借口为过去的行为辩护。虽然传统的问责理论通常将“受众”视为一个单一的实体,但它可以解构为一个由多个参与方组成的网络,个人需要对这些参与方负责。

在我们最近的研究中,我们研究了软件工程中问责制的构成要素,报告称,软件团队成员需要对多个问题承担个人和集体责任。

图 1:社会体系问责制的动态

项目成果,主要是软件质量、软件安全性和满足项目期限。业务分析师与软件团队中的其他角色共同承担这些成果的责任。

业务分析师 (BA) 共同负责软件质量、安全性和项目期限,因为他们的职责涉及定义直接影响这些结果的需求。通过收集业务需求并将其转化为技术规范,BA 可确保软件符合质量标准并按预期运行,这对于最大限度地减少缺陷和安全漏洞至关重要。此外,他们在生成构建软件的需求工件方面的作用会影响时间表,使团队工作与项目期限保持一致。当 BA 无法提供准确及时的需求工件时,就会对时间表产生影响。因此,让他们与开发人员和其他团队成员一起承担责任。

正式问责

组织有意实施策略来推动软件团队成员的责任感。这些制度化的驱动因素包括财务奖励、职业发展和惩罚。这些正式化的策略影响个人对责任感的看法,从而塑造他们对实现团队预期结果的承诺。虽然奖励旨在强化积极的表现,但惩罚旨在起到威慑作用,通过让工程师意识到潜在的负面后果来阻止他们表现不佳。

财务奖励。在上述研究中,我们发现软件团队成员在一定程度上受到财务奖励前景的激励,以满足既定期望。其中一些奖励包括财务激励,特别是与绩效评估挂钩的年度奖金。财务奖励,无论是奖金、加薪还是晋升,都用于坚持责任感并激励个人满足既定期望。

职业发展。在我们的工作中,职业发展也被认为是一种激励责任感的因素。组织会通过职业发展来奖励达到预期结果的期望。我们的研究结果表明,在软件专业职业中获得晋升的动力与表现出强烈的责任感密切相关。

惩罚。组织采用惩罚策略来激励表现不佳的团队成员达到或超过既定的预期结果。惩罚策略包括纠正措施(如绩效改进计划)和失业。惩罚策略表明,在某些情况下,组织致力于通过对未能达到预期结果实施明确的惩罚来推动软件专业人员的责任感。

控制机制是组织制定或嵌入软件开发实践的各种流程、工具和程序,旨在确保个人能够履行职责并遵守既定期望。在问责制的动态和流程中,控制机制属于图 1 中的“评估”。为了控制制度化的正式问责制,绩效评估作为一项问责制定期进行。这些定期评估推动了问责制,因为它们要求对组织就预定义期望的绩效负责,依靠代码中的缺陷计数和同行的反馈等指标,确保工程师始终如一地努力达到或超过组织既定的期望。

共同责任

共享或非正式的责任感源自同事的期望和软件专业人员的内在驱动力。前者促进了一种集体责任感,个人感到有必要回报同事并向同事展示自己的责任感,而后者则是天生的,具有内在基础。当软件专业人员感到内在驱动力以达到某些结果(例如,代码质量或按时完成任务)时,他们会表现出一种自我驱动的责任感。这种自我要求的责任感源于个人渴望超越或达到自我要求的标准,反映了软件专业人员的内在承诺和动机,即坚持和保持其交付成果的质量与他们的职业和个人价值观保持一致。共享责任感主要通过软件工程和开发实践(即测试和代码审查)以及同事的反馈来强化。

这种基于同行的问责制使用软件开发实践中固有的控制机制,例如测试或非正式同行的反馈,而不是既定组织的流程(如绩效评估)。

非正式或共享责任归因于团队的共同规范。然而,回报并不类似于正式的责任制(即财务奖励和职业发展)。在软件开发环境中,软件专业人员对同事的期望感到有责任,希望得到同事的评价,并为集体努力做出贡献。此外,避免团队层面的制裁。相反,我们的研究表明,软件团队更喜欢一种心理上安全的方式来应对表现不佳。

软件专业人员的责任不仅受到制度化机制(例如绩效评估)的影响,还受到同事的期望和内在动机的影响。虽然绩效等传统责任控制机制在软件团队中具有相关性,但它们与同事驱动和内在动机驱动的责任共存。

我们的工作表明,软件专业人员对同事驱动和内在动机驱动的责任有着天然的倾向。因此,在下一篇文章中,我们将深入探讨这种责任如何发生以及如何有助于满足团队成果的期望。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习日记_20241126_聚类方法(谱聚类Spectral Clustering)

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

如何使用Jest测试你的React组件

在本文中,我们将了解如何使用Jest(Facebook 维护的一个测试框架)来测试我们的React组件。我们将首先了解如何在纯 JavaScript 函数上使用 Jest,然后再了解它提供的一些开箱即用的功能,这些功能专门用于使测试 React 应…

硬菜!高精度!BO-Transformer贝叶斯优化编码器多特征分类预测/故障诊断

硬菜!高精度!BO-Transformer贝叶斯优化编码器多特征分类预测/故障诊断 目录 硬菜!高精度!BO-Transformer贝叶斯优化编码器多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BO-Transform…

仿真学习 | Abaqus版本差异详解:哪版更适合你的仿真作业?

​ 引言 在上一篇文章《仿真学习 | Fluent版本迭代一览及选择指南》中,我们深入探讨了Fluent的不同版本以及如何根据自身需求选择最合适的版本。今天,我们将把视线聚焦于Abaqus——另一款在工程仿真领域中备受推崇的软件。 在有限元分析领域,…

NLP论文速读(剑桥大学出品)|分解和利用专家模型中的偏好进行改进视觉模型的可信度

论文速读|Decompose and Leverage Preferences from Expert Models for Improving Trustworthiness of MLLMs 论文信息: 简介: 本文探讨的背景是多模态大型语言模型(MLLMs),这类模型通过结合视觉特征和文本空间来增强语…

IntelliJ IDEA 中,自动导包功能

在 IntelliJ IDEA 中,自动导包功能可以极大地提高开发效率,减少手动导入包所带来的繁琐和错误。以下是如何在 IntelliJ IDEA 中设置和使用自动导包功能的详细步骤: 一、设置自动导包 打开 IntelliJ IDEA: 启动 IntelliJ IDEA 并打…

红外小目标检测

目录 背景概述算法原理演示效果核心逻辑 使用方式基础镜像配置环境直接运行 参考文献 文章声明,非广告,仅个人体验。 背景 红外图像在许多领域中都有所应用。例如军事领域中,经常需要通过红外成像设备对远距离的目标进行侦察和监视&#xff…

hive的存储格式

1) 四种存储格式 hive的存储格式分为两大类:一类纯文本文件,一类是二进制文件存储。 Hive支持的存储数据的格式主要有:TEXTFILE、SEQUENCEFILE、ORC、PARQUET 第一类:纯文本文件存储 textfile: 纯文本文件存储格式…

ReentrantLock(可重入锁) Semaphore(信号量) CountDownLatch

目录 ReentrantLock(可重入锁) &Semaphore(信号量)&CountDownLatchReentrantLock(可重入锁)既然有了synchronized,为啥还要有ReentrantLock?Semaphore(信号量)如何确保线程安全呢?CountDownLatch ReentrantLock(可重入锁) &Semaphore(信号量…

51单片机从入门到精通:理论与实践指南入门篇(二)

续51单片机从入门到精通:理论与实践指南(一)https://blog.csdn.net/speaking_me/article/details/144067372 第一篇总体给大家在(全局)总体上讲解了一下51单片机,那么接下来几天结束详细讲解,从…

STM32C011开发(2)----nBOOT_SEL设置

STM32C011开发----2.nBOOT_SEL设置 概述硬件准备视频教学样品申请源码下载参考程序自举模式BOOT0设置配置 nBOOT_SEL生成STM32CUBEMX串口配置LED配置堆栈设置串口重定向主循环演示 概述 STM32CubeProgrammer (STM32CubeProg) 是一款用于编程STM32产品的全功能多操作系统软件工…

基于 AI 的软件工程: 超级程序员

徐昊 《AI时代的软件工程》-极客时间课程学习总结 帮助你更好地利用 LLM 提高效率,还可以站在一个更全面的立场上,讨论如何将 LLM 引入团队或是组织。 核心观点: AI 辅助业务建模:通过将模型转化为 Mermaid 格式,将我们的模型表达为大语言模型能够理解的形式。通过添加注…

【消息序列】详解(7):剖析回环模式--设备测试的核心利器

目录 一、概述 1.1. 本地回环模式 1.2. 远程环回模式 二、本地回环模式(Local Loopback mode) 2.1. 步骤 1:主机进入本地环回模式 2.2. 本地回环测试 2.2.1. 步骤 2a:主机发送HCI数据包并接收环回数据 2.2.2. 步骤 2b&…

如何使用GCC手动编译stm32程序

如何不使用任何IDE(集成开发环境)编译stm32程序? 集成开发环境将编辑器、编译器、链接器、调试器等开发工具集成在一个统一的软件中,使得开发人员可以更加简单、高效地完成软件开发过程。如果我们不使用KEIL,IAR等集成开发环境,…

计算机网络 第4章 网络层

计算机网络 (第八版)谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2:IP数据报分片与重组题目:计算IP数据报的首部校验和(不正确未改) …

【Git】常用命令汇总

目录 一.安装及配置 1.在 Windows 上安装 2.用户信息 3.差异分析工具 二.基础 1.创建仓库 2.提交与修改 三.分支管理 1.创建分支 2.合并分支 四.远程操作 1.管理 Git 仓库中的远程仓库 2.数据的获取与推送 五.标签 1.创建轻量标签和附注标签 2.查看标签和标签信…

jvm核心组件介绍

1. 类加载器(ClassLoader): • 想象它是一个快递员,负责把Java类(.class文件)这个“包裹”从磁盘这个“发货地”送到JVM内部这个“目的地”。类加载器确保每个类只被加载一次,并维护一个类的层级…

【Docker】常用命令汇总

Docker 是1个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相…

ChatGPT如何辅助academic writing?

今天想和大家分享一篇来自《Nature》杂志的文章《Three ways ChatGPT helps me in my academic writing》,如果您的日常涉及到学术论文的写作(writing)、编辑(editing)或者审稿( peer review)&a…

对比C++,Rust在内存安全上做的努力

简介 近年来,越来越多的组织表示,如果新项目在技术选型时需要使用系统级开发语言,那么不要选择使用C/C这种内存不安全的系统语言,推荐使用内存安全的Rust作为替代。 谷歌也声称,Android 的安全漏洞,从 20…