软件质量笔记
摘要
一篇关于软件质量的博客文章,探讨其定义、通用信号、益处及常见误解,认为质量是一个光谱,并且随着规模扩大而变得更加困难。
暂无内容
查看缓存全文
缓存时间: 2026/07/07 20:14
# 软件质量笔记
来源:https://anthonyhobday.com/blog/20260410
跳转至:
- 我对质量的理解方式 (https://anthonyhobday.com/blog/20260410#how-i-think-about-quality)
- 质量的通用信号 (https://anthonyhobday.com/blog/20260410#universal-signals-of-quality)
- 软件质量的六个信号 (https://anthonyhobday.com/blog/20260410#the-six-signals-of-quality-in-software)
- 软件质量的益处 (https://anthonyhobday.com/blog/20260410#the-benefits-of-software-quality)
- 我想反驳的关于质量的观念 (https://anthonyhobday.com/blog/20260410#beliefs-about-quality-i-want-to-disprove)
- 大规模时质量不可行 (https://anthonyhobday.com/blog/20260410#quality-is-impossible-at-scale)
- 关于大规模时质量不可行的轶事证据 (https://anthonyhobday.com/blog/20260410#anecdotal-evidence-that-quality-is-impossible-at-scale)
- 有专门质量投入的公司 (https://anthonyhobday.com/blog/20260410#companies-with-dedicated-quality-efforts)
- 界面生活质量改进 (https://anthonyhobday.com/blog/20260410#interface-quality-of-life-improvements)
## 我对质量的理解方式
### 质量就是没有毛病
"没有毛病"是我能想出的对质量的最佳定义。
衡量质量最实际的方法是用许多不同的人进行测试,并让众多专家来审视。如果彻底的测试和100位专家都找不到毛病,那这个东西大概就是完美的。
### 质量是一个渐近"完美"的光谱
完美是不可能的。业界公认设计最佳的软件也存在明显的毛病。但你越接近完美,就越好。
你越试图接近完美,就越困难。这和任何涉及质量的地方都会遇到的"边际效益递减"效应是一样的。
### 质量依赖于组织
领导力和文化既定义质量,也允许质量存在。即使他们不这么认为。即使他们从未思考过这个问题。他们的行动和信念要么促进质量,要么限制质量。
质量是能力和意愿的结果。组织里有没有能产出高质量的人(能力)?组织是否允许达成质量(意愿)?
在我见过的组织中,大约100%能做出高质量软件的情况,都是因为领导者想要它。如果领导者不想要质量,那就会困难得多。
但别忘了,无论你做什么工作,你个人都能达到一定程度的质量。即使在最死板的设计系统控制的界面中,你仍然可以做出更高质量和更低质量的选择。
一个组织可以设定客观的质量衡量标准(例如:报告的 bug 数量)。希望这些客观的衡量标准不会让组织忽视主观的衡量标准(例如:"专家认为这是高质量吗?")。
### 质量随着规模增大而更难
组织或软件越大,质量就越难。超过一定的规模点,高质量是不可能的。有些组织天生就无法制造高质量的软件。
重要的是,这是规模的自然结果。这不是一个抱怨或需要解决的问题。它无法解决。这是一个权衡,就像软件中几乎所有其他事情一样。
### 质量并非必需,但却是理想
我希望每个组织都关心质量。很明显,很多组织不关心,也不需要关心。许多商业上成功的组织并不把质量放在首位。
但质量是理想的。每个人都想生活在一个更高质量的世界里。创造质量感觉很好。质量更高的东西更耐用。从长远来看,如果人们意识到你的品牌不代表质量,商业成功就会更困难。
## 质量的通用信号
这些是我发现适用于一切事物(人和作品)的质量信号。
1. **外观:** 简单来说,东西越美,我们越认为它质量高。我猜这是因为美需要付出努力,质量整体上也是如此。任何我们付出心血的证据,都是进一步付出心血的表现。
2. **关联:** 我们通过某事物与什么相关联来判断它是否高质量。一个常见的方法是社交证明,即某人或某事物与其他某人或某事物相关联。我们通过事物所处的环境来判断它。
3. **成本:** 如果某人或某物成本更高,我们可能会认为那是因为它价值更高。但"成本"不一定指"金钱"。例如,如果某事物花费更多时间,我们可能会认为它质量更高。
4. **性能:** 性能可以是定量的,如"最高速度",也可以是定性的,如"它给我什么感觉"。也可以是关注结果的,如"它帮我完成任务了吗?"简单来说,如果外观是"看起来怎么样",性能就是"做起来怎么样"。
## 软件质量的六个信号
1. **可靠性:** 软件是否始终按预期技术运行?这意味着没有 bug,没有停机,没有错误等等。
2. **速度:** 软件是否瞬间(或尽可能接近)响应用户输入?对于必须花费较长时间的任务,它们是否尽可能快?
3. **清晰性:** 使用软件的人是否理解所有内容?
4. **有效性:** 用户能否用软件完成他们需要做的事情?
5. **效率:** 用户能否尽可能轻松地用软件完成他们需要做的事情?
6. **美感:** 软件是否在美学上尽可能令人愉悦?
## 软件质量的益处
有些人可能会争辩说质量显然是好事。质量重要的原因每个人都自然理解。但我们仍然有大量糟糕的软件,所以 🤷。
1. **吸引员工:** 人们想为关心质量的公司工作。
2. **创作者的满足感:** 每个参与的人都会自我感觉更好。
3. **减少救火:** 更高质量意味着之后需要修复的问题更少。更少的 bug,更少的可靠性问题等。
4. **对抗软件熵:** 所有软件随着增长都会退化。它会变得臃肿,更难使用和观看。对质量的承诺可以对抗熵增。
5. **降低员工流失率:** 关心软件通常意味着关心制造它的人。它鼓励技能成长。
6. **更容易销售:** 如果质量是你公司身份的一部分,产品就更容易销售。口碑会为你做一部分营销。
7. **吸引用户:** 质量吸引人。他们更有可能使用你的软件。
8. **将用户变成粉丝:** 可用、有效、令人满意的软件能将用户转变成粉丝。粉丝想要支持公司,更愿意原谅公司,并乐于帮助公司改进。
9. **竞争护城河:** 质量很难。你的竞争对手可能不愿意付出努力。
10. **赚更多钱:** 人们普遍愿意为质量付更多钱。
11. **美改善社会:** 美丽的人工制品普遍改善我们的生活方式。
12. **激励他人追求质量:** 其他人和其他公司会受到你工作的启发。
13. **留下遗产:** 没有产品能永恒。但好的软件会被人们谈论数十年。
## 我想反驳的关于质量的观念
在我的职业生涯中,我大部分时间都在思考软件界面质量。以下是我相信为真的一些事情。我更希望它们不是真的。
1. 当一个人能把整个界面记在脑子里时,质量最容易实现。
2. 参与某个软件开发的人越多,实现高质量就越难。
3. 你生活中高质量的东西越多,你的生活就越好。
4. 你的产品质量越低,放弃它的人就越多。
5. 如果质量高,会有更多人谈论你的产品。
6. 质量取决于组织中权力最大者的许可。
7. 质量不能是一种自下而上的努力,仅由做实际工作的人驱动。
8. 高质量总是需要牺牲某些东西,例如范围、金钱、增长或时间。
9. 高质量总是需要某人有强烈的个人兴趣/痴迷。
10. 专注于质量意味着牺牲增长。
11. 对于经常使用的软件,质量既更难实现,也更重要。
12. 质量是竞争护城河,因为很少有组织专注于它。
13. 如果你想要高质量,理想情况下应该雇佣优秀的人。
14. 如果你无法雇佣优秀的人,你应该愿意进行大量迭代。
15. 你需要比你预期的多得多地迭代才能获得高质量。
16. 有些组织文化天生就无法实现高质量。
17. 组织越大,质量就越难。在组织达到一定规模时,高质量是不可能的。
18. 软件越大,质量就越难。在软件达到一定规模时,高质量是不可能的。
19. 如果某个软件的某些部分质量低,这通常是一个可靠的迹象,表明其他部分的质量也低。
20. 某些类型的质量并不总是显而易见的。
21. 完美是不可能的。
22. 产品和公司可能因为过度关注质量而牺牲了其他方面而失败。
23. 质量要求每件事都得到大量关注。
24. 尽管每个人都同意质量是积极的,但很难说服人们专注于它。
25. 有些人在个人生活中追求高质量,但在职业生活中却不够关心。
26. 许多商业目标会损害质量,例如增长。
27. 质量是持续的努力。问题可能会悄悄潜入,尤其是在进行变更时。
28. 衡量质量的唯一可靠方法是让大量专家审视该软件。
29. 专注于质量有边际效益递减。达到"90%"质量所需的努力比达到"80%"质量要多得多。
30. 用于帮助创建软件的系统(例如设计系统)也可能损害专注于质量的努力。
31. 人们将富有表现力的视觉风格与视觉质量联系在一起。他们可能期望在高质量软件中看到富有表现力的视觉风格,即使并非必要。
32. 人们将高成本与质量联系在一起。
33. 人们将炒作/社区兴趣与质量联系在一起。
34. 有许多竞争方式成本低于质量,例如功能、价格、销售体验。
35. 人们可能因为无法像他们希望的那样专注于质量而离开公司。
36. 新颖性对人们的即时吸引力通常高于高质量。
37. 高质量往往在后来才被注意到。
38. 组织和个人几乎从不会说真话,承认他们产品的低质量。
## 大规模时质量不可行
好的界面设计随着软件的增长而变得更难。最终,世界级的界面设计是不可能的。以下是一些想法。
### 需要管理的关系太多
好的界面设计是连贯的。"连贯"意味着界面中所有事物之间的关系运作良好。但是,随着事物数量的增加,关系的数量增长更快。最终,人们不可能正确地考虑所有这些关系。
这个原则也适用于人。从事软件工作的人越多,管理所有人之间关系就越难。东西会在传递中丢失。人们对目标有不同意见,并且朝不同方向拉扯。
你可以用更严格的流程来管理这一点。但最终,你花在流程上的时间会比花在设计上的还多。
### 有些人不够在乎
你雇佣的人越多,就越有可能雇佣到对好的界面设计不够在乎的人。好的界面设计需要所有能影响工作的人都重视它。这包括开发者、设计师、产品经理,通常还有 CEO。
### 某些商业目标损害好的设计
如果一家公司出于商业原因想让某些数字增长,这通常会损害界面设计的质量。例如,在网站上增加更多广告可以帮助公司盈利,但也可能使界面变得更糟。
一种增长方式是添加用户要求的功能。但通常每添加一个功能都会使界面变得更糟。这很难避免,因为上面第一点的原因。
## 关于大规模时质量不可行的轶事证据
Patrick McKenzie 发推文 讨论了 Stripe 的质量文化 (https://twitter.com/patio11/status/1176866754682707969?s=20&t=7ov-AYTrfpj1_yvA8U33LQ)。Patrick 最后说"这些都不足够。我们对目前的质量水平感到非常不满"。
Family 和 Honk 的 Benji Taylor 说 (https://twitter.com/benjitaylor/status/1571994317014863872?s=20&t=O9yvjV9aHuuddP6PU55xpw)"大公司的软件似乎每年 bug 越多,而独立软件似乎越来越顺畅和可靠"。
一些知名人士回复了 Benji 的推文:
> "对细节的关注与团队规模成反比" (Jordan Singer (https://twitter.com/jsngr/status/1572000440086044672?s=20&t=O9yvjV9aHuuddP6PU55xpw))
> "细节最好能从一个宏观的角度进行整体思考时才能得到最佳照料。大型组织,从设计上就不允许这样做。" (Brandon Jacoby (https://twitter.com/JacobyBrandon/status/1572005307966189571?s=20&t=O9yvjV9aHuuddP6PU55xpw))
> "工艺在你的产品/团队越大时就越昂贵" (George Kedenburg III (https://twitter.com/GK3/status/1572003630034874368?s=20&t=O9yvjV9aHuuddP6PU55xpw))
> "我完全同意高工艺水平极难规模化" (Kurt Varner (https://twitter.com/kurtvarner/status/1572058966754033665?s=20&t=O9yvjV9aHuuddP6PU55xpw))
> "在 Twitter,随着我们快速扩张,工艺水平无法维持" (Sean Thompson (https://twitter.com/cyanhex/status/1572046586267729920?s=20&t=O9yvjV9aHuuddP6PU55xpw))
在他们的文章《优化感觉》 (https://browsercompany.substack.com/p/optimizing-for-feelings) 中,The Browser Company 说"随着我们的日常软件工具和媒体首次变得全球化,艺术家的手让位给了算法的任性。我们的软件在一个充满如此多不同人的世界里变成了'一刀切'。我们所有的意见、信念和想法都被平均化了"。
Stately 的创始人 David Khourshid 说 (https://twitter.com/DavidKPiano/status/1571838435656192000?s=20&t=oGG_OH9QyU3LGB2hCo6eew)"甚至给一个应用添加'一个'特性(新状态 + 转换),都可能引入指数级增长的、应用可以被使用的方式"。
Benji Taylor 发推文说 (https://twitter.com/benjitaylor/status/1509242039262593025?s=20&t=3T3ZkLvoiLYyMCmOhGEb5A)"所有这些产品的一个共同点是......它们由小团队构建......太多时候,产品一旦达到一定规模就失去了灵魂"。
Paul Stamatiou 说 (https://twitter.com/Stammy/status/1558122812988088322?s=20&t=c3YScLRvsv7fZqZf3vR0Mg)"到目前为止的回复证实了我的理论......高质量软件产品只能由小团队创造"。
Nathan A. Curtis 说 (https://twitter.com/nathanacurtis/status/1517194393836560388?s=20&t=fk5JnUuHPGvuvgSYhHlWsQ)"我喜欢 Figma,也重视他们为了增加更多功能而进行的实验。但我能感觉到......他们的 UI 正在变得'Adobe Creative Suite 化'。而这带来了可用性上的代价。" 注意他是在2022年4月说的这话,比 Adobe 收购 Figma 早几个月。
重复 Steve Jobs 提出的论点,Marty Cagan 说 (https://twitter.com/lennysan/status/1561876506548113408?s=20&t=mR4WJOPNyNR0oRQrVSBxHg),"随着公司变大,产品在历史上变得不那么重要了......优秀的产品人不想再在那里工作......他们会去重视产品的公司。我认为这是一个比
相似文章
如何避免死于千刀万剐,或者说如何思考软件质量(2023)
一篇反思软件质量本质的博客文章,主张质量在于优雅地进行开发,并让代码库变得比发现时更好,同时探讨如何在软件产品中培养或破坏质量。
软件质量新时代今日开启(5分钟阅读)
Momentic 宣布重大平台更新,推出基于AI的知识库和自主测试代理,以应对代码速度与软件质量之间日益扩大的差距。
回顾:Software Should Work 2026
一篇回顾'Software Should Work 2026'会议的博客文章,讨论了软件可用性、人工智能对信任的影响以及人类协作和开源的重要性。
垃圾时代的品质
一篇反思性的博文,引用罗伯特·波西格的《禅与摩托车维修艺术》,探讨随着生成式AI工具泛滥,科技行业中的质量危机与虚无主义,呼吁重新关注工艺与价值观。
软件关乎人,而非代码(2020)
一篇论述软件成功更多取决于理解人及其需求,而非编写完美代码的文章,并以被遗弃的、未解决实际问题的代码库为例。