今天在工程软件的首页停了一会儿。
最近设计列表很长,电子纸转接板、无线串口工具、键盘、复制过来的工程文件和一些还没有继续往下做的实验项目挨在一起。它们都有名字,也都有最近更新时间。列表看起来像一条正在加速的进度条,我却不太敢把它当成项目进度。
文件先有了,项目才刚刚开始
一个工程出现在列表里,通常只说明它被创建过、导入过,或者最近有人打开过。它可以是一个临时的验证,也可以是一块从别人的工程复制出来、准备慢慢改的板子。文件名后面的 copy、版本号和日期能帮助我认出它,却不能替它回答:原理图是否完整,封装是否正确,关键器件有没有落地,或者这块板子有没有经过一次真实的测试。
以前我会把“已经建立工程”写成“项目开始推进”。现在会把两个动作分开:第一个动作只是把材料放到一个可以继续工作的地方,第二个动作才是对一个具体问题做了选择。哪怕只是确认一个触点、换一个连接器、把电源路径画清楚,也比在列表里多一个名字更接近进度。
最近更新时间很诚实,也很有限
工程软件会告诉我某个文件什么时候被保存,GitHub 会告诉我某个仓库什么时候有提交,语雀会留下某条记录的更新时间。这些时间都是真的,但它们回答的问题不一样。
一次保存可以只是改了一个名字,也可能是一次重要的布线调整。一次提交可能只更新说明,也可能刚好把一个长期卡住的接口接通。页面上的“更新于”没有办法替我判断这两种情况,更不能把它们排成一条看起来连续的故事。
所以我开始给自己的项目多留一个状态栏:这次改动解决了什么,下一步要用什么证据确认,当前还缺什么。状态栏不需要漂亮,甚至可以只写“已导入”“待测量”“仿真通过”“实物未验收”。它的作用,是防止我过几个月再打开时,把“我曾经想做”误认成“我已经做过”。
复制项目也有它自己的来路
列表里有不少带有复制痕迹的工程。复制不是坏事,很多硬件项目本来就从参考设计开始;真正容易出问题的是复制以后忘了补上自己的判断。
一块转接板从别人那里借来尺寸、封装和布局,不等于我的屏幕、排线和外壳也能照搬。一个无线模块的参考电路可以帮助我少走弯路,但它不会替我确认供电峰值、天线净空和实际连接器的方向。复制文件带来的是一个起点,不是一次验收。
我想把“参考来源”也写进工程记录里。哪一部分来自公开例程,哪一部分是自己测的,哪一处只是暂时猜测,最好在第一次修改时就留下来。后来如果发现引脚定义错了,至少知道应该回到哪一个来源重查,而不是在一堆复制文件里继续找一个看起来像答案的数字。
列表越来越长以后,我反而想做减法
工程变多以后,想法从来不缺,缺的是注意力——每一个名字都会分走一点。今天打开一个项目,想起另一个还没验证的接口;准备画一块新板,又担心上一块板的电源问题没有记录完。列表因此变成一种轻微的噪声:它不断提醒我还有很多事情,却不告诉我哪一件应该先做。
我现在会把工程分成三层。第一层是可以继续动手的项目:材料、问题和下一步都清楚。第二层是等待证据的项目:方向还在,但需要规格书、测量或一次构建才能继续。第三层是暂存和参考:它们可以留在仓库里,却不应该出现在本周的待办里。
这个分层不要求删除旧文件,也不要求把所有实验整理成漂亮的作品集。它只是把“存在过”与“正在推进”分开。一个暂存的工程不必被强行赋予结论,一次没有通过的测量也可以保留为记录,而不是用下一次保存把它盖过去。
真实进度通常不在列表最上面
项目往前走的时候,留下来的往往是一条不太显眼的证据:一张重新量过的尺寸表,一次知道为什么失败的测试,一根终于确认方向的排线,或者一段别人能够照着复现的说明。
这些东西不一定让列表看起来更热闹,却会让下一次打开工程时少猜一点。对我来说,这比把首页塞满“正在进行”的项目更有用。因为我最终需要的不是一份证明自己很忙的清单,而是一张能把手伸回现场的地图。
以后再看到工程列表变长,我会先问三个问题:这个文件来自哪里,现在能证明什么,下一步需要什么证据。如果只能回答第一个问题,它就还是一个材料;能回答到第二个,它才是一份记录;等第三个问题也有了明确动作,项目才算真的向前走了一小步。