← 返回信息流
AI 资讯Hacker News·2 小时前

软件质量笔记

原标题:Notes on Software Quality

速览

本文探讨了软件质量的关键要素,包括代码可维护性、测试覆盖率和性能优化。通过实际案例分析了常见质量问题的根源,并提出了系统性的改进策略。适合开发团队参考以提升交付质量。

AI 深度解读

背景

这篇题为《Notes on Software Quality》的文章来自 Hacker News,作者围绕“软件质量”这一主题进行了深入的个人思考。文章并非学术论文或方法论指南,而是作者基于多年从业经验总结出的对质量的定义、信号、收益以及一些想要证伪的常见信念。作者试图阐明:质量从根本上讲是“没有麻烦”,它与组织文化、规模和权衡密切相关,并且在不同规模下质量会面临不同的挑战。

核心内容

作者如何理解质量

质量即“没有麻烦”(The absence of problems)。这是作者能想到的最佳定义。衡量质量最实际的方法是让大量不同的人测试,并请众多专家审视。如果彻底测试和100位专家都找不到问题,那东西大概就是完美的。

质量是一个从低到高直至“完美”的光谱。完美是不可能的。即使业界公认设计最好的软件也存在明显问题。但越接近完美越好,不过越接近完美,难度越大——这就是任何质量相关领域都会遇到的“边际收益递减”效应。

质量依赖于组织。领导力和文化既定义也决定了质量的上限,即使他们自己不这么认为。质量是能力与意愿的结果:组织是否拥有能产出高质量的人(能力)?组织是否允许质量得以实现(意愿)?作者观察到,几乎所有做出高质量软件的组织,都是因为领导者想要质量。如果领导者不想要质量,那会非常困难。但别忘了,无论你做什么工作,个人都能在一定程度上实现质量。即使在最死板的设计系统控制的界面中,你仍然可以做出更高质量或更低质量的选择。

组织可以设定客观的质量衡量标准(如报告的 bug 数量)。希望这些客观标准不会让组织忽视主观衡量标准(如“专家认为这东西质量高吗?”)。

质量随着规模变大而更难。组织或软件越大,质量越难。超过一定规模后,高质量是不可能的。一些组织根本做不出高质量软件。重要的是,这是规模的天然结果,不是抱怨或待解决的问题。它无法解决,是权衡——就像软件中几乎所有其他事情一样。

质量不是必需的,但却是理想状态。作者希望每个组织都关心质量,但显然很多组织不关心也不需要关心。许多商业上成功的组织并不把质量放在首位。但质量是理想的:每个人都想生活在更高质量的世界里。创造质量让人感觉良好。质量更高的东西使用寿命更长。长期来看,如果人们意识到你的品牌不代表质量,商业成功会更难。

质量的普遍信号

这些信号适用于所有事物——人和人造物。

  • 外观:简单来说,东西越美,我们越认为它质量高。作者假设这是因为美需要付出努力,而质量通常也需要努力。任何显示我们投入了心血的证据,都是进一步投入心血的证据。
  • 关联:我们通过事物与什么相关联来判断它是否高质量。常见的方式是社会认同——某人或某物与其他某人或某物关联。我们通过其所属的圈子来判断一个东西。
  • 成本:如果某人或某物成本更高,我们可能会认为它更值钱。但“成本”不一定是“金钱”。例如,如果某件事耗时更长,我们可能认为它质量更高。
  • 性能:性能可以是定量的(如“最高速度”),也可以是定性的(如“它让我感觉如何”)。它可以是结果导向的(如“它帮我完成任务了吗”)。简单说,如果外观是“看起来如何”,性能就是“做起来如何”。

软件质量的六大信号

  • 可靠性:软件是否始终按预期技术运行?这意味着无 bug、无宕机、无错误等。
  • 速度:软件是否几乎瞬间响应用户输入?对于必须花更长时间的任务,是否尽可能快?
  • 清晰性:使用软件的人是否理解一切?
  • 有效性:用户能否用软件完成他们需要做的事?
  • 效率:用户能否尽可能容易地完成他们需要做的事?
  • 美观性:软件在美学上是否尽可能令人愉悦?

软件质量的好处

有些人可能会争辩说质量是明显的好事,质量重要的理由自然会被所有人理解。但我们仍然有很多垃圾软件,所以 🤷。

  • 吸引员工:人们愿意为关心质量的公司工作。
  • 创造者满意:每个参与其中的人都会感觉更好。
  • 减少救火:更高质量意味着事后需要修复的问题更少——更少的 bug、更少的可靠性问题等。
  • 对抗软件熵:所有软件在成长过程中都会退化,变得臃肿、难用、难看。对质量的承诺可以对抗熵。
  • 降低员工流失:关心软件通常意味着关心制造它的人。它鼓励技能成长。
  • 更容易销售:如果质量是公司身份的一部分,产品更容易卖。口碑会为你做部分营销。
  • 吸引用户:质量吸引人。他们更可能使用你的软件。
  • 用户变成粉丝:可用、有效、令人满意的软件把用户变成粉丝。粉丝愿意支持公司,更容易原谅错误,并乐于帮助公司改进。
  • 竞争护城河:质量很难做,你的竞争对手很可能不会投入精力。
  • 赚更多钱:人们普遍愿意为质量付更多钱。
  • 美改善社会:美丽的人造物普遍改善我们的生活方式。
  • 激励他人:其他人和公司会受到你工作的启发。
  • 留下遗产:没有产品能永远存在,但人们会谈论好的软件几十年。

作者想要证伪的关于质量的信念

作者说,他在整个职业生涯中一直在思考软件界面质量,以下是他相信为真但他宁愿它们不真的东西。

  • 当一个人能把整个界面记在脑子里时,质量最容易实现。
  • 越多的人参与某个软件,高质量就越难。
  • 生活中高质量的东西越多,生活就越好。
  • 产品质量越低,抛弃它的人就越多。
  • 如果质量高,会有更多人谈论你的产品。
  • 质量取决于组织中权力最大的人的许可。
  • 质量不能是自下而上的、仅由做事的人推动的努力。
  • 高质量总是需要牺牲某些东西,如范围、金钱、增长或时间。
  • 高质量总是需要某个人对它有强烈的个人兴趣/痴迷。
  • 关注质量意味着牺牲增长。
  • 对于经常使用的软件,质量既更难也更重要。
  • 质量是一种竞争护城河,因为很少有组织专注于它。
  • 如果你想获得高质量,理想情况下应该招聘优秀的人。
  • 如果你招不到优秀的人,你应该愿意做大量的迭代。
  • 你需要比预期多得多的迭代才能获得高质量。
  • 有些组织文化根本无法产出高质量。
  • 组织越大,质量越难。在某个规模之上,高质量是不可能的。
  • 软件越大,质量越难。在某个规模之上,高质量是不可能的。
  • 如果某个软件中有什么东西质量低劣,这通常是一个可靠的信号,表明其他东西……

(注:原文在此处截断,未完成最后一点。)

关键要点

  • 质量的核心定义是“没有麻烦”,而非“符合规范”或“用户满意度”。衡量质量靠大量测试和专家评审。
  • 质量受组织和文化强烈影响,领导者对质量的意愿是关键。自下而上的质量努力极其困难。
  • 规模是质量的敌人:超过一定规模的软件或组织,高质量在本质上不可能。这不是问题,而是需要接受的权衡。
  • 质量的六大信号:可靠性、速度、清晰性、有效性、效率、美观性。这些是软件特有的质量维度。
  • 质量的好处远超技术层面:包括吸引人才、减少后期救火、降低熵、形成竞争护城河、让用户变成粉丝、增加收入甚至改善社会。
  • 作者想证伪的信念涉及规模、组织权力、牺牲、增长、个人痴迷等——这些被普遍认为正确的观点,作者认为它们阻碍了质量,但现实是它们往往是真的。
  • 质量需要持续投入:即便在优秀组织中,高质量也需要牺牲(范围、时间、金钱)和强烈的个人兴趣。

意义与影响

这篇文章的意义在于从实践者的角度揭示了软件质量背后的组织动力学和现实的权衡。它没有给出简单的解决方案,而是承认高质量的困难,并鼓励从业者在了解这些限制的前提下,尽可能在个人能力范围内做出更好的选择。

对于软件团队领导者,文章强调了领导层对质量的态度直接决定了软件质量的天花板。对个人开发者,文章提醒即使在最受限制的环境中,仍然有提升质量的空间。对行业而言,文章指出了“规模”这一常被忽视的天然瓶颈,帮助避免不切实际的质量目标。

此外,作者提出的“质量信号”框架(外观、关联、成本、性能以及软件特有的六大信号)为评估及改善质量提供了可操作的思考维度。

查看原文 →anthonyhobday.com