从根本上了解软件开发的生产力

您是一家软件开发人员,希望每天为您的组织提供更多价值吗? 您是软件开发经理,对改善团队的产出感兴趣吗? 您是CIO努力满足组织对软件的需求吗?

已经进行了许多尝试来衡量软件开发人员的生产率。 乍看之下应该很简单。 毕竟,生产力等于产出除以投入。

但是,我们如何衡量软件开发人员或软件开发团队的产出呢? 简单的措施(如对生成的代码行进行计数)是不够的,因为对计数可能有缺陷的行几乎没有用。 已经提出了许多更复杂的方法来评估输出,但是在多种开发中都可以使用的可靠措施已经使软件工程研究界望而却步。

测量输入也不容易量化。 我们应该计算人数吗? 花了多少小时进行编码? 工作总时间?

如果我们不调查测量结果,而是研究开发人员如何看待自己的生产率呢? 开发人员最接近所生产的软件,并且当他们认为自己具有生产能力时,就可能在为他们所从事的软件项目增加价值。 如果我们可以确定哪些因素有助于提高生产力,那么我们可以努力重新创建这些因素,并帮助开发人员更频繁地感觉到生产力。 如果我们能够确定哪些因素会阻碍软件开发人员的生产率,那么我们也可以帮助减少这些因素的发生。 通过这些步骤,我们可以找到通往快乐和高效的软件开发人员的道路。

软件开发人员整天做什么?

您多久完成一天的工作并想知道所有时间都去了哪里? 作为我们对软件开发效率的调查的一部分,我们想知道:软件开发人员整日做什么?

为了更深入地了解这个问题,我们观察了来自三个不同规模的国际软件开发公司的11名专业软件开发人员,每个人四个小时。 通过记录有关使用的每个工具和执行的任务的观察,我们发现这些开发人员花费了大部分时间(33%)来读写源代码。 根据所花费的时间,接下来的两个最常见的活动是非正式会议(13%)和测试(12%)。 所有其他活动均以一位数字表示,例如调试(4%),代码审查(2%)和电子邮件(5%)。

如果您关心生产率,那么这些结果会包括一些好消息,因为与其他活动(例如文档)相比,花费时间编写代码更可能为软件产品增加价值。 但是,开发人员的大部分时间都花在其他活动上。 我们需要询问这些活动对于为组织提供价值是否必不可少,可以简化或优化这些价值,并可能将其消除。

开发人员将其描述为富有成效的一天?

发生的活动不提供有关开发人员何时将自己视为富有成效的任何信息。 为了深入了解有助于软件开发人员感知生产力的因素,我们在调查中要求开发人员完成以下短语:“我……的工作日很丰盛”。

根据379位开发人员的反馈,我们了解到,导致富有成效的一天的两个主要因素是开发人员能够完成任务或目标(53%),何时能够实现“流程”并且没有中断或中断很少或分心。 下图概述了生产一天中提到的前四个原因。

这些结果表明,鼓励目标设定和减少中断的工具和实践可以在为开发人员创造更多机会以提高生产效率方面发挥重要作用,希望还可以提高实际生产率。

是什么使开发人员无法获得丰硕的成果?

对于开发人员而言,似乎每天都不是富有成效的一天。 我们还询问了开发人员,他们调查了哪些活动有成效,哪些活动没有成效。 下面的绿色图形显示了提到的富有成效的前四项活动; 下面的蓝色图形显示了提到的非生产性的前四项活动。

开发人员清楚地将编码视为生产活动(71%)。 开发人员对会议的态度参差不齐:17%的开发人员将会议报告为富有成果的活动,而58%的开发人员将会议报告为无效的。 会议被报告为富有成效的原因包括决策制定,会议具有明确的重点或目标以及会议改善了开发人员之间的关系。

如果您想寻找一个地方开始为自己,您的团队或组织提高生产力,则可能需要考虑提高技能,以选择所需的会议并确保使用最佳实践进行会议。

开发人员将如何评估自己的生产力?

自我量化方法在普通社区中变得越来越普遍。 您认识多少人开始使用个人健身设备或智能手表追踪自己的活动? 与计数步骤如何使个人达到更高的适应水平类似,我们想知道开发人员是否使用过类似的措施,或者是否有兴趣使用这种方法来跟踪他们的生产力。

我们要求接受调查的379位开发人员以1(无益)至5(有帮助)的等级对23种可能的措施进行排名,以评估其自身的生产力。 没有一种或一小套措施可以作为一种或多种措施明确地脱颖而出。 排名最高的衡量标准是“我关闭的工作项(任务,错误)的数量”,然后是“我花在每个工作项上的时间”。 有趣的是,排名第三高的指标是“我花在检查代码上的时间”,这表明开发人员不仅关心他们单独生产的代码行数。

虽然并非所有开发人员都感兴趣,但是有机会通过个人仪表板同时显示有关许多措施的信息。 使开发人员可以看到有关开发人员自己的工作的信息,这有望使开发人员能够反思并寻找提高自身生产力的方法。

从根本上提高开发人员的生产力。

在制造初期,Frederick Taylor进行了时间运动研究,以试图提高制造过程的效率。 毫不奇怪,工人不喜欢被当作机器中的齿轮,并且倾向于以不受惩罚的最慢速度工作。

从开发人员的角度看待生产力,我们正在采取与泰勒相反的方法。 我们相信,认为自己具有生产力的软件开发人员通常会为软件开发项目创造价值。 通过了解哪些因素有助于和阻碍开发人员的工作效率,我们可以找到可行的方法来改善开发人员的工作日,从而提高整体软件开发工作效率。

如果您是一名开发人员,请考虑问问自己,什么成就了生产力的一天,以及您可以采用什么措施来追踪自己的生产力。 如果您是软件开发团队的经理,请考虑询问您的团队有关阻碍生产力的因素,尤其要关注如何查看会议。 如果您是CIO,请考虑进行一项调查,以向您的软件开发人员学习如何将开发人员的工作日重点放在生产活动上。 开发人员的工作效率越高,他们在工作中越快乐,组织的整体生产率就越有可能提高。

了解更多

所描述研究结果的详细信息,请参见:软件开发人员对生产力的看法。 安德烈·迈耶(AndréN. Meyer),托马斯·弗里茨(Thomas Fritz),盖尔·C·墨菲(Gail C.Murphy)和托马斯·齐默尔曼(Thomas Zimmermann)。 出现在2014年ACM SIGSOFT FSE大会上。https://sealuzh.wordpress.com/2014/08/18/a-pre-print-of-software-developers-perceptionsof-productivity-for-fse14-is-available/