用途
本框架用于把 Linus Torvalds 的思维方式转化为可操作的工程实践,帮助团队在代码审查、架构设计、协作流程、项目管理与技术选型中做出更务实的判断。核心主张是“Talk is cheap. Show me the code.”——不信任 PPT、承诺与架构图,只信任可运行的代码。
主要能力
1. 代码说话(Show Me the Code)
提出代码说话三定律:任何提议都必须附带可运行的代码;代码合并的充分必要条件包括代码正确、清晰、有测试、不破坏现有功能、与项目风格一致;讨论的终止条件是——有代码就基于代码讨论,没代码就去写代码。日常应用包括把“我们应该……”转化为“写个 POC”,把“理论上……”转化为“benchmark 在哪里”,把“这不难……”转化为“那 PR 呢”。
2. 去中心化协作模式(Bazaar vs Cathedral)
强调早发布、频发布,不要等到完美才发布,用户是最好的测试者。开放源代码让 Bug 在大量眼睛面前无所遁形。好的协作流程比好的计划更重要,代码质量通过 review 保证,而不是通过中央计划。实用版本包括:不要花 3 个月规划再 3 个月执行,而是花 1 周规划、每周交付可用东西;所有代码必须经过至少一人 review;自动化测试优先于人工测试,CI/CD 是底线,能回滚比能修复更重要。
3. 无情的代码审查(Ruthless Code Review)
审查目的是保证代码质量,不是让提交者心情好,但“无情”是对代码而非对人。审查优先级从高到低为:P0 正确性、P1 清晰性、P2 一致性、P3 优雅性。Linus 的品味标准是“用最简洁的方式做正确的事”,反面教材包括 10 行代码做 5 行的事、为“灵活性”加不必要的抽象、用复杂数据结构解决简单问题。
4. 务实工程哲学(Pragmatic Engineering)
不追求理论上完美,追求实际上好用。设计原则包括:解决真实问题而非想象中的问题;YAGNI;简单方案优于聪明方案;向后兼容是承诺;性能不是优化而是设计。技术债务管理将债务分为必须还的、应该还的、可以不还的、不要还的四类。
5. 正确的数据结构思维(Data Structures First)
先想清楚数据怎么组织和流动,算法和代码自然跟着来。设计流程为:核心数据实体是什么、它们之间的关系是什么、用什么数据结构表达这些关系、关键操作的复杂度是多少,然后才是代码。以 Git 为例:数据实体为 blob、tree、commit,关系为 commit → tree → blobs(内容寻址、哈希 ID),数据结构为 DAG 与 content-addressable 存储,结果使分支、合并、回溯都自然优雅。
使用方式
框架提供决策框架与实战模板。Linus 技术决策树分四步:Step 1 有没有真实需求;Step 2 最简单的方案是什么;Step 3 破坏性评估;Step 4 可逆性。实战模板包括:代码 Review 检查卡(按正确性、清晰性、简洁性、一致性逐项检查并给出总评)、务实工程设计文档(问题、最简方案、数据结构设计、向后兼容、不做的事)、集市模式项目管理(发布节奏、协作流程、质量门禁、回滚策略)。
适用场景
代码 Review 时用检查卡关注正确性和清晰性,不接受“聪明”的代码;架构设计时先设计数据结构再想算法和代码,简单方案优先;团队协作时早发布、频发布,让代码 review 成为质量保证核心;项目管理时不追求完美规划,追求快速迭代和真实用户反馈;技术选型时选最简单的能解决问题的方案,不为“未来可能”买单;处理争论时用代码说话,写个 POC 比较。
限制与反模式
不要学 Linus 的脾气:他的技术判断是一流的,沟通风格不是,代码可以无情,对人要有基本尊重。不要把“简单”当“偷懒”:Linus 的简单是深思熟虑后的简洁,不是省事的偷工减料。不要忽视测试:“Show me the code”的前提是代码能跑、有测试证明它能跑。不要过度工程:今天不需要的抽象层今天就不要写。不要为了开源而开源:开源是因为协作模式更好,不是因为赶时髦。不要在代码中炫技:如果代码需要别人想 5 分钟才能理解,那就是写错了。
经典语录
“Talk is cheap. Show me the code.”(Linux 内核邮件列表,2000);“烂程序员担心代码。好程序员担心数据结构和它们之间的关系。”(引用自 Rob Pike/Mike Ginnis);“Linux 的成功不是因为我是天才,而是因为我在正确的时间做了正确的事,并且没有搞砸太多。”(Linux Foundation 峰会演讲);“如果它不能编译或者有已知的 bug,那就不要提交。这不是一个高标准,这是底线。”(Linux 内核邮件列表 code review);“我不做梦。我没有要‘改变世界’的愿景。我只是觉得有些东西不好用,所以我自己写了一个。”(TED 演讲,2016);“Git 的伟大之处不在于它是什么,而在于它不是什么——它不是 SVN。”(Git 十周年访谈);“我认为我们拥有的最伟大的技术之一就是‘不做什么’的能力。排除法很重要。”(Linux 内核开发者访谈);“聪明的人会把复杂的问题变简单,而不是把简单的问题变复杂。”(Linux 内核邮件列表 code review 评论)。
本框架蒸馏自 Linux 内核邮件列表、Git 源码及文档、TED 演讲(2016)、《Just for Fun》自传及各种访谈。