这张纸是为一个很具体的时刻准备的:有人正在向你提出要给你造一个系统,或者正在把它交给你,而你不编程。你不需要为这场会面去学编程。你需要知道的是该要求他们给你看什么。
完整的方法活在二十四级台阶的契约里,而每份契约都带着它的"不读代码即可完成的完整性检验":主人对交付物要做的那串核对。项目在运行当中,这是有用的;可是它分散在三十二个文件里,没人会带着那个走进一场会面。这张纸就是同一套东西,被汇到一起,并按人家在向你承诺什么来排序。打印出来带着走。
算得上回答的,是那些能被看见的。 一个文件、一个带着产出它的命令的数字、一个被看见过失败的测试、一本手册、一个带日期的签名。看不见的那些是承诺,而承诺不是回答:它是一个意图,由一个想把会面结束掉的人说出来。
你不需要听懂他们给你看的东西。只要它存在,并且那个人当着你的面把它打开,就够了。如果为了回答你,他得解释为什么还没有,那就记下日期,下一场会面再问一次:说了两遍却始终不拿出来的东西,不会出现。
有三句话值得认出来,因为它们的意思是"我没有那个":
还有一个反方向的诚实说明:带着理由说出来的"没有"是个好回答。 "我们没有负载测试,因为只有三十个用户,而且这是我们商量好的"——这是一个带理由的"没有",正是本方法所说的相称。没用的是那种看不见的"有"。
如果会面很短,这五个比二十五个带来的信息更多:第4(一个被看见变红的测试)、第7(计划就是待办项清单)、第13(会刹住建造的那个限度)、第20(由一个人试过的恢复手册)和第24(会说出哪些没能核实的那份报告)。如果这五个能看见,其余的几乎总是在。如果一个都看不见,其余的几乎总是不在。
1. 你能让我看看系统在一个不是你电脑的环境里跑着吗? 能看见的:一个你自己打开的地址,在你的手机上,带着测试数据。如果它只在建造它的人的机器上跑,那它作为一个系统还不存在。 (第15级。)
2. 要让你认为我的一个请求算做完了,什么必须是真的? 能看见的:在开始之前、按每个请求写下来的东西。它应该包括"测试通过了"和"有一个人用过了"。如果回答是"等它能用的时候",那就没有标准:只有意见。 (第5级,验收标准。)
3. 我在意的每一样东西都有自动测试吗? 能看见的:测试套件跑一遍的结果,带着数字,显示在屏幕上。你不在意内容:你在意有输出,并且它说了有多少通过。 (第8级。)
4. 你能让我看看那些测试里有一个失败的样子吗? 能看见的:那块屏幕——测试在没有修复的系统上变红的那一块,带着跑它的命令和日期。这是这张纸上最重要的问题:一个没人见过它失败的测试,没人知道它证明了什么。一个系统可以有一千个通过的测试,却什么都没看守。 (第8级。在本方法里这叫"见过红"。)
5. 除了你和一个程序之外,还有谁用过这个系统并且一路走到了最后? 能看见的:一份为人写的测试用例清单,带日期、带执行人的名字和发生了什么。建造的人不能是唯一测过的人;而模型测的是它理解到的东西,那不总是你要的东西。 (第10级。)
6. 如果我在界面上做错了——录了两遍、着急按了按钮——会发生什么? 能看见的:不能撤销的动作清单,每一个都带着它的锁,以及它在半路上失败了会怎样。正确的回答绝不是"那不应该发生"。 (第14级。)
7. 还差什么的清单在哪里,我今天就能看吗? 能看见的:一份编了号的待办项登记册,每一条都写得详细,并带着它关闭的日期。那份清单就是计划:如果别的地方有一份计划、这边有一份清单,那就是两份计划,而算数的是没人在看的那一份。 (第5级。)
8. 你要给我造的每一样东西,在造之前都用我的话写下来了吗? 能看见的:那条打开的待办项,带着请求从哪来的来历——照你说的那样说——带着适用的规则、界面和稀奇的情形。如果它只有一行,缺的那部分会有人编出来。 (第5级。)
9. 当业务上的某件事不清楚时,你会怎么做? 能看见的:决定的文件,带日期、带每条是谁决定的。你想要的回答是"我问你,然后记下来"。一个模型在业务规则里发现一个洞,会自己把它填上然后继续走,而六周以后没人知道系统为什么那么做。 (第1级和第6级。)
10. 系统不会做哪些事,有写下来吗? 能看见的:项目文档里一个独立的小节,至少两条。没有说出来的,恰恰就是会以另一种样子被造出来的东西。 (第2级。)
11. 将要使用这个的不同类型的人分别是谁,每个人能做什么有写下来吗? 能看见的:角色清单——每个角色是谁、来做什么——以及一张说明每个角色能做什么的表。如果只有一个叫"用户"的角色,那通常少了一半:这是"有人看见一个不属于自己的按钮",或者"有权限的人找不到界面"最常见的原因。 (第2级,附录H的前置输入;第8级,矩阵。)
12. 每次改动,有什么是机器在度量的,而不靠谁记得去看? 能看见的:仓库里验证链条的配置,以及上一次运行的记录。"我们之间会互相看"不是回答:那是习惯,而习惯会在赶时间的那一周塌掉。 (第4级和第9级。)
13. 有没有一个限度,一超过就刹住建造? 能看见的:一个写着各个限度和它们今天的实测值的文件,以及一次被其中某个限度刹住的运行。值得照原话问的那个对照问题:*你们有没有为了能继续走而把一个限度调高过?* 如果回答是有,而没写为什么,那这个限度是装饰。 (第9级。)
14. 你怎么知道这代码别人将来维护得了? 能看见的:按规则给出的报告,而不是一个单一的数字:文件大小、函数大小、重复代码、死代码。一个"质量百分之九十五"不会告诉你要修什么。 (第9级和附录H。)
15. 界面是有人想过的,还是从程序需要什么里出来的? 能看见的:可用性规则的结果记录,以及被关掉的例外——带着写下来的原因、谁批准的、什么时候复查。一个系统可以通过所有技术检验而难用:全是绿的,而那个人找不到在哪里收钱。 (附录H,二十七条可用性规则。)
16. 你给我看的那些测试,是真的在看守,还是在装饰? 能看见的:变异得分。那是一个故意植入错误、再数测试抓住了多少的程序;数字会带着它的命令出来。如果你的系统有真实用户,这在本方法里不是可选的。 (第9级。)
17. 如果一个操作做到一半出了问题,我的数据会怎样? 能看见的:动作及其可逆性的表格,以及那条写下来的规则——有疑问时系统刹住,而不是继续走。一笔重复的扣款,或者一个没人看过的自动批准,是典型的例子。 (第14级。)
18. 有备份吗?你们有没有试过恢复一次? 能看见的:最后一次试过的恢复的日期。一份从来没恢复过的备份不是备份:它是一个没人知道任何事情的文件。 (第20级,恢复手册。)
19. 谁在检查系统没有已知的漏洞,多久一次? 能看见的:在链条里跑着的扫描,带日期,以及被转成待办项的发现。再加一个很短、也很说明问题的问题:*系统的密钥和密码存放在哪里?* 如果在代码里,你已经有一个问题了。 (第18级和第15级。)
20. 有没有一个不编程的人,照着手册从零把系统恢复起来过? 能看见的:那本手册,以及那次试跑的记录,带三样东西:端到端花了多久、那个人在哪一步确切地卡住了、他有哪些词没看懂。如果手册以"打开一个和代理的会话"开头,那它不是给人用的手册。而在那个还不存在之前,直说:主人不是主人,是租客。他拥有系统、付了钱,而不向建造它的人请求许可就进不去。 (第20级。)
21. 你们是用什么数字给这个定尺寸的,这些数字从哪来? 能看见的:同时有多少用户、每天多少次操作、每年增长多少、要保存多久。还有要紧的那部分:这些数字在你的业务手里,不在建造的人手里。如果是他编的,那它们是错的。 (第3级。)
22. 你们用我将要给它的负载试过吗,用十倍的负载试过吗? 能看见的:那次运行的报告,带着系统倒下的确切位置。知道它在哪里断,是知道你有多少余量的唯一办法。 (第19级。)
23. 半年后系统变慢的时候,你们怎么知道为什么? 能看见的:带每个动作标识的结构化日志、最慢查询的报告,以及配置好的告警。如果回答是"等它发生了再看",那第一个看到的会是你,通过一个发火的用户。 (第16、17、21、22级。)
24. 当你告诉我某件事做好了,我怎么分清哪些是你验过的、哪些是你假定的? 能看见的:分成三块的报告:已核实(证据就在旁边)、相信如此(以及为什么没去验)、 盲点(从他站的位置看不见的东西)。光一句"好了"不是报告。而这个问题的后半比前半更值钱: 这次交付里,有哪些是你没能核实的? 如果回答是"没有,全都核实了",那就要怀疑:没有人能核实全部。 (第12级。)
25. 除了你自己,还有谁复查这份工作? 能看见的:由一个——或某个——不是建造者的人或东西做的审计,它的发现被转成了待办项,并且带日期。一个模型会认可自己相当一部分的错误,一个人也会。建造的人不能是唯一核实的人。 (第13级。)
在每个问题旁边记下三样里的一样:我看见了、我还没看见(带上他们承诺给你的日期),或者它不存在,而他告诉了我为什么(带上理由)。不需要二十五个全是"我看见了":一个小项目不需要负载测试,也不需要每周监控,而本方法就是这么说的。必须发生的是:每一个"没有"都有写下来的理由,因为带理由的"没有"是你的一个决定,而没有理由的"没有"是一笔你没选过却要还的债。
最后还有一个,没有编号,因为它不是给供应方的:如果有人因为你要求看东西而不自在,那也是信息。
这二十五个问题是本方法各份契约里"不读代码即可完成的完整性检验"被汇到一起的结果:每一个都标出了它出自哪一级台阶,所以任何人都可以去那份契约读完整版。它们是为这张纸从零写出来的。
"这东西应该作为一张纸存在"这个想法不是我的。 它来自本方法向另一种形式的第一次改编—— Oscar Schmitz 的小说《El Arte de Forjar Sistemas》,2026年,在主文档F部分标注出处——它说得比我好:本方法把检验分散在它的各份契约里,缺的正是主人能带去一场会面的那一块。这张纸开头的那条标准——算得上回答的是那些能被看见的——也是从那里来的。他那一版的问题是他的作品,权利保留;这里这些是另外的,是从我的契约写出来的,所以用本仓库的许可协议发布。