2026 年 6 月,这本杂志用《领域专家的时代》为创刊六个月收尾。结论是一句话 —最清楚该做什么的人站在前面。
那篇文章是一篇综合,把先前五篇各摘一段折起来。综合本身是正确的形式。问题在于被摘要的东西没有证据。把五个「没有」凑在一起,就是五倍的没有。
所以这次重做把顺序倒了过来。先全部重做,现在才折。
这篇文章踩着的是十五个样例。全部能构建、能运行,凡是有画面的都确认过渲染。其中一个接在桌上两块真实开发板上。
实际被证明了什么
把六个月前那篇的命题重写一遍,只留下这次真正确认过的。
画面是定义,而定义很小。 一个画面是 1〜2 KB。门店服务器分别递给自助机、POS、后厨的三个画面加起来是 3,555 字节。(只有画面这一层会化)
换传输不会让代码分叉。 同一个客户端接上了 USB 串口的 STM32 和 Wi-Fi 那头的 ESP32。不同的只有一个桥接程序。(开发板递出自己的画面)
换掉硬件,规则依然活着。 把摄氏传感器换成华氏型号、再多加两个节点,服务器代码和规则一个字符都没变。(换掉传感器,控制照旧)
不构建,画面也会变。 把 2,940 字节的 JSON 改成 2,934 字节,83 毫秒就反映了,编译器没有运行。(一个文件夹就是应用)
没做出来的能力够不着。 不在工具清单里的东西,人去按也好、模型去选也好,都没有被调用。(不拿出来的东西守住了应用)
可是结论只对了一半
这里是和六个月前那篇分道的地方。
那篇把全部重量压在门槛变低了这一侧。两成的墙矮了,所以握着八成的人站在前面。
做出来之后,门槛确实低。会费工具是四十五行。栽培规则的一片是七行。
可光靠这个是站不到前面去的。
做那七个现场工具时,每次都是同一样东西成为问题。不是低门槛,而是能不能信。
- 农户的画面上出现「平均 18 天」时 — 怎么分辨它是从记录里出来的,还是谁填进去的
- 老师看到 8 分时 — 为什么是 8 分
- 税务师看到 4 月 27 日时 — 是法定期限、是被周末顺延,还是打错了
- 一个人经营的店主看到列表最上面那条时 — 凭什么它在最上面
- 读继承来的笔记本时 — 谁在什么时候知道的,以及被证明是错的那一行有没有被抹掉
全是同一个问题。结果旁边有没有依据。
而这比门槛难。门槛是工具替你降的,依据得由做的人自己放进去。不放,画面也照样漂亮。所以就不放了。
对一个人做东西的人尤其如此
六个月前那篇还漏掉了一件事。
领域专家做自己的工具,同时也意味着出错时没有人接得住。公司的工具有评审、有 QA、有下一位负责人。自己的工具只有自己。
所以这个系列的十五个样例里做得最多的,不是做画面,而是往验证里放条件。
| 守住了什么 | 在哪 |
|---|---|
| 算出来的平均值若以常量存在于源码中,失败 | 农户 |
| 部分分若没有理由就给出,失败 | 老师 |
| 截止日若以字符串存在于源码中,失败 | 税务 |
| 条目若没有出处,失败 | 一个人的生意 |
| 被订正的行若消失,失败 | 继承来的笔记本 |
| 若吐出判定词,失败 | 诊疗流程 |
| 画面若超过六十行,失败 | 会费 |
| 截图若彼此相同,失败 | 全部 |
最后一行在这张表里最便宜,也最常干活。画面没被画出来而 PNG 却照常生成发生过三次。日志每次都干干净净。
那张表不是句子,是文件
上面八行不是本文归纳的摘要。每一行都写在样例文件夹的 verify.sh 里,而且是作为判失败的条件写的;条件被打破,那个样例就通不过。
从第一行看起。它决定农户那篇的「平均 18 天」是算出来的还是写死的。
AVG=$(grep -o "average from records: [0-9.]*" captures/run.log | awk '{print $4}')
if grep -RIn --exclude-dir=captures -F "$AVG" farm_server/bin farm_log.mbd bundle_host/lib; then
echo " the average $AVG appears literally in the source — it must be computed"
exit 1
fi
它把出现在画面上的数字拿回来,在全部源码里反查。找到就失败。它检查的不是结果对不对,而是结果从哪来。
其余七条也在同样的位置。
| 守住了什么 | 写在哪里 |
|---|---|
| 计算出的平均值若作为常量存在于源码则失败 | farm-log/verify.sh:35 |
| 部分分若没有给出理由则失败 | grading-tool/verify.sh:34 |
| 截止日若以字面量存在于源码则失败 | deadline-board/verify.sh:33 |
| 条目若没有出处则失败 | one-person-desk/verify.sh:34 |
| 被更正的行若消失则失败 | inherited-notebook/verify.sh:33 |
| 若放出判定性词汇则失败 | clinic-flow/verify.sh:33 |
| 画面若超过 60 行则失败 | club-dues/verify.sh:11 |
| 截图若彼此相同则失败 | 每个样例 (DISTINCT) |
最后一行最短。
DISTINCT=$(ls -l captures/*.png | awk '{print $5}' | sort -u | wc -l | tr -d ' ')
[ "$DISTINCT" -eq 3 ] || { echo " $DISTINCT distinct sizes out of 3 — a screen rendered blank"; exit 1; }
它只看文件大小。但抓住前面写的那三次的,正是这两行 — 画面是空的,PNG 照样正常写出,日志每次也都正常。PNG 出来了,并不能证明画面被画出来了。
这两行抓不到什么,也一并写下。只要大小彼此不同就通过,所以三张错的画面会通过。这道闸门挡的是空画面,不是错画面。错画面由上面那七行各自在领域一侧挡下。
「顺序反转」这句话的实际尺寸
再用一次六个月前那篇的说法:长久以来,领域专家在后面解释,开发者在前面做。
做过之后,我们把那个顺序改写成这样。
站在前面的是判断。 不是人。
- 农户的判断写成七行,一个零件编号的字符都不带,所以活得比硬件长
- 老师的标准是一串字符串列表,她自己能回头读、自己能改
- 税务师的规则被存下来,日期是算出来的
- 工厂工程师的点检表由验证比对原文,让它无法被摘要
而这四条里没有任何一处写着「专家写了代码」。判断被搬进了一种能写得很短的形式,而那个形式得有人来做。在这个系列里那个人是我。
所以准确地说是这样。 不是领域专家站在前面,而是领域专家的判断站在前面,其余的退到它后面。 造出那个位置的活儿仍然是某个人的活儿,只是这活儿比从前薄了。
从六个月前那篇里删掉的
既然是重做,就删掉当时写下、现在撑不住的东西。
删掉六位人物的成果数字。「十分钟就」「把午夜要回来了」「三十本变成一个画面」这一类。那些数字不是从特定人物身上量出来的。七篇全部是照同样的形状自己构成并做出来的,每篇开头都这么写着。
这不是小订正。现场这一支的论点是「你也做得到」这份许可,而许可是压在案例的真实性上的。没有确认真实性就重复同一句话,那不是许可,是广告。
所以这篇综合能折起来的东西也变窄了。不是「人们做到了」,而是「这样的工具长这个样子、只有这么短、在这些条件下值得信」。
也删掉「这些不是比喻」这句自我标榜。 这次也不是比喻,而是照实际形状的构成,并且我们写明了。
下一个六个月要还的
六个月前那篇留下的位置里,下一个六个月要还的是这些。
- 「说出来就变成画面」— 把人的话变成定义的那个转换。七篇里那一步都是我用手做的。 这个系列没有造出那个转换。
- 离线与缓存— 创刊号给过答案的地方,至今没有实测。
- 应用商店政策— 只有解读,没有引用任何依据条款。
- 运营成本— 这个系列的服务器全是本地进程。
- 模型选工具的准确度— LLM 那篇里的模型是确定性的桩。
- 经验的第二层与第三层— 事实成为技术、技术成为预测。跑几天的样例看不出来。
- 领域专家能否亲手驾驭这套格式— 已确认的只到「四十五行是读得懂的」,第一次看到的人要多久才用得起来,得让这样的人试过才知道。
这个样例的范围
六个月前那篇的四条界定保留。开发者不会消失,不是所有东西都会变成工具,划边界这件事本身就是领域知识,而且变容易的是手,不是责任。
最后这句这次被确认得最狠。做十五个的过程中变容易的是把画面弄出来的手,而变难的是自己去确认那个画面能不能信的责任。
再加上这次学到的。
这篇文章没有新样例。 综合文章的活儿不是新盖,而是踩在已经盖好的东西上。六个月前那篇的问题是没有可踩的却装作在踩,这次有十五个。
接在真实硬件上的只有一个,其余全是用 C 写的模拟或合成数据。每一篇都这么写着。
站在前面这件事
六个月前那篇是这样收的 — 这不是结束,是开始。
六个月过去,把开了头的东西重做一遍之后,我们把那句话改写成这样。
门槛降下来了。 四十五行和七行就是证据。
可是低门槛并不保证好工具。 跨过去之后需要的是「把依据放在结果旁边」的习惯,而那件事工具不会替你做。
所以站在前面的人需要的不是编程,而是怀疑自己工具的方法。这个系列实际做出来的,也不是十五个画面,而是十五种怀疑的形式 — 把「什么必须为真」写进通过条件的做法。
从记录里出来的数字和填进去的数字,在画面上长得一模一样。手里有办法分辨这两者的人,站在前面。
makemind.dev 「探索」— 引用的实测全部来自随文发布的样例。