文章摘要
文章探讨了软件质量的定义,认为质量即“没有问题的状态”,并提出了衡量质量的实用方法:通过多人测试和专家审查来评估。
文章总结
好的,这是根据您的要求,对原文主要内容进行的中文重述,保留了核心细节,并删减了与主题无关的链接和格式内容。
关于软件质量的笔记
本文探讨了软件质量的定义、衡量标准、重要性以及在大规模团队中面临的挑战。
核心观点:质量即“没有问题”
作者认为,质量的最佳定义是“没有问题”。衡量质量最实际的方法是让大量不同的人和专家进行测试。如果经过彻底测试和众多专家审视后仍找不到问题,那么该产品就接近完美。质量是一个从低到高、趋近于“完美”的光谱,但完美本身是无法实现的,越接近完美,付出的努力就越大。
质量与组织的关系
质量依赖于组织。领导力和文化决定并限制了质量的上限。质量是组织能力与意愿的产物:组织是否拥有能产出高质量的人才(能力)?组织是否允许并支持追求质量(意愿)?作者观察到,几乎所有能做出高质量软件的组织,其领导者都真心渴望质量。同时,个人在自身工作中也能在一定程度上追求质量。
质量的普遍信号
作者总结了适用于所有事物的四个质量信号: 1. 外观:越美观的事物,我们通常认为其质量越高。 2. 关联:我们通过事物与谁相关联来判断其质量,例如社会认同。 3. 成本:成本(不限于金钱,也包括时间等)越高,我们可能认为其价值越高。 4. 性能:指事物“做得如何”,可以是定量的(如速度),也可以是定性的(如感受)。
软件质量的六个信号
- 可靠性:软件是否始终按预期运行,无错误、无宕机。
- 速度:软件对输入的反应是否即时或尽可能快。
- 清晰度:用户是否能理解软件中的所有内容。
- 有效性:用户能否用软件完成他们需要做的事情。
- 效率:用户能否尽可能轻松地完成他们需要做的事情。
- 美观性:软件在美学上是否尽可能令人愉悦。
软件质量的益处
追求软件质量能带来诸多好处,包括:吸引优秀员工、提升创造者满意度、减少后期修复问题、对抗软件熵增、降低员工流失率、产品更易销售、吸引用户、将用户转化为粉丝、形成竞争护城河、创造更多利润、美化社会、激励他人以及留下长久遗产。
作者希望反驳的关于质量的观念
作者列举了一系列他个人认为正确但希望并非如此的观念,例如:质量在一个人能掌控全局时最容易实现;参与开发的人越多,高质量越难;质量取决于组织中最有权势者的许可;高质量无法由下而上推动;高质量总是需要牺牲其他东西(如范围、金钱、增长或时间);关注质量意味着牺牲增长;某些组织文化天生无法实现高质量;随着组织或软件规模扩大,高质量最终变得不可能等。
核心论点:质量无法规模化
这是文章的核心论点。作者认为,随着软件规模的增长,优秀的界面设计会变得越来越困难,最终变得不可能。原因有三: 1. 关系过多:优秀的界面设计需要保持一致性,即处理好界面中所有元素之间的关系。元素数量增加,关系数量会呈指数级增长,最终超出人力管理范围。同样,团队人数增加也会导致沟通和协作困难。 2. 关心不足:团队越大,越容易招到对优秀界面设计不够重视的人。而好的设计需要所有能影响工作的人(包括开发者、设计师、产品经理甚至CEO)都重视它。 3. 商业目标冲突:许多商业目标(如增加广告、添加用户请求的功能)会损害界面设计质量。
支持论点的轶事证据
文章引用了大量行业人士的评论来支持“质量无法规模化”的观点,例如: - Stripe的Patrick McKenzie表示,即使有质量文化,他们仍对当前的质量水平不满意。 - 多位人士指出,细节关注度与团队规模成反比,大型组织无法从宏观角度整体思考细节。 - The Browser Company指出,随着软件全球化,艺术家的手被算法取代,软件变得千篇一律。 - Packy McCormick认为,初创公司可以创造“魔法”,但随着公司成熟,魔法会因技术债务和商业压力而退化。 - Paul Graham观察到谷歌已变得官僚化。 - Stripe联合创始人Patrick Collison认为,大公司无法将资本转化为好软件。 - 多位人士指出,高质量软件产品通常由小团队打造,团队规模超过30人左右是质量的最佳甜蜜点,之后质量会下降。
致力于质量的公司案例
文章列举了一些设有专门质量团队或举措的公司,以证明质量是可以被有意识地追求的: - Automattic:设有首席质量官,负责战略和日常执行。 - GitLab:设有“UX Paper Cuts”团队,专门修复小但影响大的可用性问题。 - HubSpot:创建了“Cohesion Studio”,专注于改善跨产品的用户体验。 - Linear:有专门的“抛光月”和“质量星期三”,并优先处理Bug。 - Meta:曾设立“质量”项目,量化衡量关键流程的工艺分数。 - Microsoft:在公众对Windows 11质量提出批评后,宣布了专门的改进计划。 - Shopify:成立了专注于质量的横向团队。 - Sonos:设立了“质量监察官”一职。 - Stripe:聘请了“工艺主管”。 - Zed:每年进行两次“质量周”,暂停新功能开发,专注于解决用户痛点。
界面质量提升建议
文章最后提供了一系列具体的界面质量改进建议,例如:在嵌套菜单中提供宽容的鼠标路径、为多键快捷键提供缓冲时间、为滚动列表添加弹性效果、为展开/折叠和元素移动添加流畅动画、保持编辑模式下文本位置不变、维持列表滚动位置、在移动端打开正确的键盘、实现对象恒常性、不丢失用户输入信息、为可移动元素添加吸附效果、实时显示更改预览、延迟显示工具提示等。
评论总结
根据评论内容,总结如下:
主要观点与论据:
质量定义争议:多数评论者反对“质量即无问题”的简单定义。satisfice 指出这是“具体化谬误”,认为“质量是对某个重要人物的价值”;amarant 提出“质量是面对困难的韧性”;jongjong 强调“可维护性”是质量核心标志;kwakker35 认为质量体现为“开发过程中的用心与打磨”。
质量的多维性:评论者指出质量涉及不同视角。ChrisMarshallNY 认为质量包括“可用、可发现、愉悦、可访问”;RetroTechie 批评未提及“优雅”和“简洁”;1970-01-01 强调“安全设计”是2026年高质量软件的必备条件。
规模与质量矛盾:多位评论者讨论规模对质量的影响。p1necone 认为大型组织可通过“小型自主团队”实现卓越,但强制统一工具或流程会损害质量;ChrisMarshallNY 指出“手工质量”难以规模化,但企业可找到“甜点”;livingsoft 类比生物进化,认为软件应趋向“个人制品+可选协作”模式。
组织与沟通问题:sublinear 提出“低质量即沟通不畅”,bug是组织的快照;manoDev 强调CEO应关注“界面设计师”而非直接干预设计;p1necone 主张“分享知识但绝不强制”。
平衡性呈现:
- 支持“质量即无问题”:原文作者观点,但多数评论者反对。
- 反对“质量即无问题”:satisfice、amarant、jongjong、kwakker35 等提出替代定义。
- 对原文“六信号”的批评:chickensong 认为仅关注用户界面且包含主观项“美”不够全面;arbirk 建议将“美”改为“可审查性”。
- 对“规模不可能有质量”的争议:p1necone 和 ChrisMarshallNY 认为可能,但需特定条件;原文观点被部分认可。
关键引用保留:
- “Quality is the absence of problems” is an example of the reification fallacy... “quality is value to some person who matters.” (satisfice)
- “low quality is miscommunication. The bugs are a snapshot of the organization.” (sublinear)
- “the only way to achieve excellence is to get out of the way and stop trying to ‘help’.” (p1necone)
- “Quality is an opinion based on your perspective.” (arscan)