从结果回到依据
测试与评测
测试全绿、排行榜第一、实验成功,都还没有回答同一个问题:这个结果究竟证明了什么?沿着代码、考题和测量方法,检查结论成立的条件。
12篇阅读 · 三条路径
为什么测试全绿,程序还是错了?
从最熟悉的绿色测试灯开始,区分程序符合预期与预期本身正确。
开始阅读 ↗通过了,为什么还会错?
先追问检查了什么,再追问检查工具本身。
01为什么测试全绿,程序还是错了?Gary Bernhardt 的隔离测试和 Andrej Karpathy 的训练演示里,代码出错时,屏幕上都可能传来好消息。7 份来源 · 原文可回看↗02测一条业务规则,为什么要连数据库?把「谁该收到提醒」单独拿出来,就能分别检查规则是否正确、通知能否送达。2 份来源 · 原文可回看↗03用户今天续费了,还能解释昨天那封催缴邮件吗?一次判断要能重现,除了规则本身,还需要当时交给它的那份数据。9 份来源 · 原文可回看↗04机器说「检查通过」,谁能独立核对?从一张选票追到一块主板。一路只问三个问题:检查的是哪件东西,谁送来这个答案,以及作决定的人能否看到同一份证据。22 份来源 · 原文可回看↗05线上只失败过一次,怎样把故障变成能重放的测试?设想一笔已确认的转账在主节点切换后查不到了。沿着六段工程讲解,把事故拆成可以保存的输入、可以删减的操作和必须成立的性质,再检验修复是否真的触达故障。6 份来源 · 原文可回看↗
分数变好,目标就达到了吗?
比较考题覆盖范围,以及系统主动追逐指标时发生的事。
换一个测量条件,结论还成立吗?
从实验条件、测量位置和使用场景重新审视一个好结果。
01实验测到的,真是日常建议里说的那件事吗?从一个早晨散步的例子开始,试着给观察写上准确的动词:移动眼睛、报出字母、测出一种酶。动词一换,我们可能已经在回答另一个问题。30 份来源 · 原文可回看↗02同一台机器,换个地方量,为什么结论变了?在第一轮排水时打开洗碗机,再把面包从烤面包机中拿走。两个小实验迫使我们说清楚测量从哪里开始、到哪里结束,以及仪器究竟感知了什么。22 份来源 · 原文可回看↗03标称成绩很好,它到底替我测了哪种用法?从一只白炽灯的寿命开始,比较洗涤剂、热泵、冬季车道与食品标签。每报一个漂亮数字,先把它对应的工作条件写回来。13 份来源 · 原文可回看↗04做出一枚芯片,离一条可持续的产线有多远?从一枚通过规格测试的芯片往回走,数一数它没有告诉我们的事:同一片晶圆上有多少良品,设备由谁调校,产线中断以前是否已在承受资金压力。8 份来源 · 原文可回看↗
换一个领域,带走一个问题。
下面的连接来自已有主题,不代表两个领域使用相同的证明标准。
表示与理解 →已整理的主题关系The Expert Myth · 16:33 ↗ The Expert Myth · 16:22 ↗ 在全局图查看这些联系 →
熟悉的题与真正的掌握
在熟悉条件下表现出色,可能只是认出了见过的模式。两篇都要求换一种情境再检验,无论被考的是模型还是学生。
查看连接两端的原文
a valid environment, many repetitions, timely feedback, and thousands of hours of deliberate practice.At its core, expertise is recognition.软件与系统 →已整理的主题关系Rich Hickey · Simple Made Easy · 37:13 ↗ "Simple Made Easy" - Rich Hickey (2011) · 59:28 ↗ 在全局图查看这些联系 →
纯函数接口,承诺最少
把判断拆成同输入、同输出的计算,接口就只承诺结果,不再泄露调用顺序和外部状态。这正是另一篇追问的:哪些行为本不该成为承诺。
查看连接两端的原文
a true functional interface, same input, same output.start seeing interconnections between things that could be independent学习与智能 →已整理的主题关系Andrej Karpathy · 手写 micrograd · 133:44 ↗ The spelled-out intro to neural networks and backpropagation: building micrograd · 0:55 ↗ 在全局图查看这些联系 →
误差在降,代码仍可能有错
同一段 micrograd 讲解,一篇用它说明误差下降并不证明代码正确,另一篇用它解释网络如何沿梯度学习。看懂梯度在算什么,才能判断「在变好」是否可信。
查看连接两端的原文
you may have lots of bugs in the code and uh your network might actually workefficiently evaluate the gradient of some kind of a loss function