跳到主要内容

艺术还是科学? 衡量软件开发

By 马克·马斯里, 存 Executive Director, Enterprise DevSecOps | 4 minute read | July 25, 2023

Is software development considered an art or science? 根据学术界的说法, the answer is science since my diploma clearly states “Bachelor of Science.“尊重, 然而, I disagree; in my opinion, well-engineered and useful software is realized through a combination of art and science.

Related: How the "need for speed" helps us reimagine DevSecOps

开发软件系统时, 确定, there are certain rules one must follow – syntax, 模式, architecture and tools (this is the stuff that ChatGPT has promised to be quite good at). 但在另一边, there is the very human element of framing a problem and using our accumulated knowledge of the world to build a system that solves that problem.

So application development is a creative process that requires skill and ingenuity. If it is a process, then perhaps it can be broken into subprocesses. If each subprocess is defined and bounded, then it can be mea确定d.

"Many things can be mea确定d, but very few should be."

I recently came across a quote which read: “Many things can be mea确定d, but very few should be.“总的来说, we lean on metrics because they provide a feedback loop which we can use to express and mea确定 progress.

The concept of measuring the development process, 或者开发人员的生产力, 已经有一段时间了吗. There are lots of articles and academic papers – even books – on the topic. There are even companies that build products with a goal of increasing productivity, 一个值得肯定的崇高事业.

The challenge is how do you mea确定 something that is part art and part science? Of all the things we can mea确定, which should we mea确定? The truth is there is no universal truth here. The answer really depends on your desired outcome.

There are a handful of mea确定s that most folks in the DevOps industry, aka DevOps研究与评估(DORA),同意是值得关注的:

  • Deployment Frequency mea确定s the frequency with which increments of code are deployed to staging, 测试和生产;
  • Mean Time to Restore (MTTR) mea确定s the time it takes to restore service after a failure in production. MTTR is an important component for systematic incident management;
  • Lead Time to Change mea确定s the time code takes to go from committed to successfully running in production. This is effectively a mea确定 which provides visibility into the cycle time from development through to release; and
  • Change Failure Rate identifies the percentage of deployments that fail to enter production and the overall risk that this poses to development.

The important thing to keep in mind is that even with all the research that led to these four metrics, they are not the end-all-be-all for measuring success. 这些被称为滞后指标, 或者输出测量, 比如速度, 吞吐量, 质量与稳定性. No single metric is inherently more important than the rest. Together they create a balance to en确定 that intense focus on speed and 吞吐量 does not come at the expense of stability and quality. Lagging metrics are the end; they do not mea确定 the means to that end.

It is also important to keep in mind that lagging mea确定s are hard to improve without leading mea确定s to complement them. Leading metrics are inputs - they look ahead to try and predict future outcomes. One example of a leading/lagging pair might be code coverage for Quality; another might be pull request turnaround time for speed. The key takeaway here is that leading indicators help us influence lagging metrics (outcomes).

Related: The art of possible in DevSecOps

暂时地, software is designed and engineered by humans, and any efforts toward efficiency should also invest heavily in improving the developer experience. Understanding and improving the pain points that slow development will not only enhance productivity, but it will attract and retain the best and brightest talent.

软件开发是一门手艺, and every artisan with a love of their craft needs the best tools to perfect their work. While it is essential to take mea确定ments on the process side of development work, it is equally important to mea确定 the human side. Being thoughtful and deliberate in setting targets or drawing conclusions can lead to optimal desired outcomes and happy development teams that realize their fullest potential.

The best approach is to collect and review data through a process of continuous analytics, 识别机会, 实施结构改进, 清洗并重复. DevSecOps tools and processes are invaluable resources in achieving these goals. They often provide the hooks necessary to collect important data points that feed in to leading/lagging metrics.

软件开发艺术或科学也是如此? 我说两者都有.

马克·马斯里-形象配置文件
马克·马斯里

存 Executive Director, Enterprise DevSecOps

帖子
存管连接
2023年5月2日 加速解决方案交付...
帖子
存管连接
2023年6月29日 适合目的:现有的原则...
帖子
存管连接
2023年7月17日 存的云分钟:成本优化
回到存连接
dtccdotcom