Skip to main content

Art or Science? Measuring Software Development

本文作者Marc Masri, DTCC执行董事,Enterprise DevSecOps | 4分钟阅读| 2023年7月25日

软件开发是一门艺术还是一门科学? According to the world of academia, 答案是科学,因为我的文凭上清楚地写着“理学学士”.” Respectfully, however, I disagree; in my opinion, 精心设计和实用的软件是通过艺术和科学的结合来实现的.

相关:“对速度的需求”如何帮助我们重新构想DevSecOps

When developing software systems, sure, 有一些规则是必须遵守的——语法, patterns, 架构和工具(这是ChatGPT承诺非常擅长的东西). But on the other side, 提出一个问题,并利用我们对世界积累的知识来建立一个解决这个问题的系统,这是非常人性化的因素.

因此,应用程序开发是一个创造性的过程,需要技巧和独创性. 如果它是一个流程,那么也许它可以被分解成子流程. 如果每个子流程都有定义和限定,那么就可以对其进行度量.

“很多事情都是可以衡量的,但应该衡量的很少."

我最近读到一句话:“很多事情都可以衡量,但应该衡量的却很少。.” In general, 我们依赖度量标准,因为它们提供了一个反馈循环,我们可以用它来表达和衡量进展.

度量开发过程的概念, or developer productivity, has been around for a while. vns6060威尼斯城官网这个话题有很多文章和学术论文,甚至是书籍. 甚至有公司以提高生产力为目标来开发vnsr威尼斯城官网登入, a noble cause to be certain.

挑战在于你如何衡量一部分是艺术,一部分是科学的东西? 在所有我们可以测量的事物中,我们应该测量什么? 事实是,这里没有普遍的真理. 答案取决于你想要的结果.

对于DevOps行业的大多数人来说,有一些衡量标准 DevOps Research and Assessment (DORA), agree are worth paying attention to:

  • 部署频率度量将代码增量部署到暂存的频率, testing and production;
  • 平均恢复时间(Mean Time to Restore, MTTR)表示生产中发生故障后恢复业务所需的时间. MTTR是系统事件管理的重要组成部分;
  • 变更前置时间(Lead Time to Change)是指代码从提交到在生产环境中成功运行所花费的时间. This is effectively a measure which provides visibility into the cycle time from development through to release; and
  • 变更失败率标识了未能进入生产环境的部署的百分比,以及这给开发带来的总体风险.

重要的是要记住,即使所有的研究都导致了这四个指标, 它们并不是衡量成功的最终标准. 这些被称为滞后指标, or output measurements, such as speed, throughput, quality and stability. 没有哪个指标比其他指标更重要. 它们共同创造了一种平衡,以确保对速度和吞吐量的强烈关注不会以牺牲稳定性和质量为代价. Lagging metrics are the end; they do not measure the means to that end.

同样重要的是要记住,如果没有领先的措施加以补充,落后的措施很难得到改善. 领先指标是一种输入——它们着眼于未来,试图预测未来的结果. One example of a leading/lagging pair might be code coverage for Quality; another might be pull request turnaround time for speed. 这里的关键结论是,领先指标帮助我们影响滞后指标(结果)。.

相关:DevSecOps中的可能性艺术

For the time being, 软件是由人类设计和设计的, 任何提高效率的努力都应该在改善开发人员体验方面投入大量资金. 理解并改进慢开发的痛点不仅会提高生产力, 但它将吸引并留住最优秀、最聪明的人才.

Software development is a craft, 每一位热爱自己手艺的工匠都需要最好的工具来完善自己的作品. 虽然在开发工作的过程端进行度量是必要的, 衡量人性的一面也同样重要. 在设定目标或得出结论时深思熟虑,可以导致理想的结果,并使开发团队快乐地实现其全部潜力.

最好的方法是通过持续的分析过程来收集和审查数据, identify opportunities, implement structural improvements, rinse and repeat. DevSecOps工具和流程是实现这些目标的宝贵vns6060威尼斯城官网. 它们通常提供必要的钩子来收集重要的数据点,这些数据点提供给领先/滞后指标.

软件开发艺术或科学也是如此? I say both.

Marc Masri - Image Profile
Marc Masri

DTCC执行董事,企业开发安全运营

post
DTCC Connection
May 02, 2023 Accelerating Solution Delivery Through...
post
DTCC Connection
Jun 29, 2023 适合目的:现有的原则...
post
DTCC Connection
Jul 17, 2023 DTCC’s Cloud Minute: Cost Optimization
Back to DTCC Connection
dtccdotcom