前不久我发了一篇文章,讲我怎么用 Agentic Coding 从零编写数据处理软件。
这个软件已经成了我的"数字员工",每天准时运行,不知疲倦地下载和刷新近百万行的数据,每天帮我节省出好几个小时。

但运行的这段时间,我仍然觉得——它太慢了。
它每次运行都会消耗 80 分钟。
往往从下午 5 点多开工,到将近晚上 7 点才收工。
更重要的是,我希望能更早、更快地拿到最新的数据,因为我把报表分享给了我的项目同事——销项管理这种事,信息获取的时间很关键,尤其是会影响第二天的销项铺排,最需要趁热打铁。
于是我开始审视这个软件的内部运转逻辑,尝试用工程管理的思路对它进行优化。
最终,整个流程从 80 多分钟压缩到了 30 多分钟,用时最久的数据转换环节更是从 60 多分钟压缩到了不到 4 分钟。
效率猛猛提升了 18.5 倍——尽管数据量仍在增加,但相比以往的时间消耗,反而大幅降低 63%。

你可能会好奇:我减少的这 54 分钟,到底压缩在了哪里?
时间去哪了?
我安排 AI 读取了软件的运行日志,通过读取预留好的调试信息,我发现将近80%的时间都用在数据处理上了。
而继续向下深挖,得出的答案很朴素——数据处理任务一直在使用串行处理的方式。
就是它会一份一份文件逐个完成——有点像是流水线工人,上一颗螺丝拧完,才会去拧下一个。

而面对这种批量任务,最直接的提速方式就是增加流水线,也就是——上人,同时干。
阶段一:多 Worker 并行
于是,我决定多派几个 Worker 同时干活,考虑到电脑性能的限制,我无法无限制增加 Worker 的数量。所以把 Worker 的上限限制在 12 个。
把文件分批,Worker 干完一批就领下一批,效果立竿见影:
运行时间大幅缩短。

但很快我就发现了新问题:
每个 Worker 处理的文件,数据量差别很大——有的几万行,有的才几千行。
这导致工作量小的 Worker 早早干完,蹲在旁边干等。

就像 Worker 3 :干等的时间,都足够相同任务再干一遍了。
我决定进一步优化 Worker 分派任务的方式。
阶段二:工单池 + 动态派活
于是我又增加了一层机制——工单池。
所有待处理的文件统一放进一个"池子"里,哪个 Worker 干完了,就自动从池子里拿下一个任务。
这样一来,之前那些闲置等待的时间被充分利用了—— Worker 们再也没有了摸鱼的空间。

于是,这套组合拳运行下来:
每天的例行运转,单单数据转换这个最占时间的任务,就被我从 60 多分钟,生生砍到4分钟。

⬇️

18.5 倍的效率秘诀
如你所见,方法就两个——多开流水线,再加上动态派活。
道理朴素,但效果实打实——一个小小的改善,真实的换来了大大的杠杆。
当然,除了并行和工单池外,18.5 倍的效率提升还少不了其他改进的加持。
例如数据预加载、动态 Worker、内存写入优化、缓存池……这些更细微的步骤优化叠加在一起,才最终达成了这个数字。

管理的底层逻辑:处处能用,美美与共
这件事的技术含量并不高——并行处理、任务队列、资源池等等,都是软件工程里的基础概念。
但让我真正感慨的是:这些方法论,我在管理工程项目的时候,都在实践,而且实践了很多年。
这些方式方法在各行各业都有大量的朴素用法。
例如超市结账,高峰期同时开的收银窗口,会对顾客的等待时间带来巨大影响。这不就是并行处理 + 工单池的逻辑么。
数据中心处理请求也是同样的道理。服务器集群同时接收大量请求,负载均衡器把任务分发给各个节点,哪个节点处理完了就接下一批。原理一模一样,只不过一个发生在物理世界,一个发生在代码里。
建筑工程、系统工程、软件工程,甚至日常生活的服务场景,表面上做的事情不同,但底层的逻辑是相通的:把有限的资源,用最合理的方式编排起来,让每一份投入都产出最大的价值。
这些方法论打通了之后,我突然想到费孝通先生说过的那句话:
"各美其美,美美与共。"
放在工程领域,大概可以这么理解——每个学科都有自己的方法论之美,但当你把它们打通、迁移、融合的时候,会发现一种更高维度的泛化之美。
写在最后
这个优化过程花了我几个小时。
我收获的不只是一个运行更快的软件——它也让我验证了一个道理:不同领域的底层方法论,是可以跨学科迁移的。
很多时候,我们觉得自己"不懂技术""不会编程",就天然地和某些问题保持距离。
但实际上,你在一个领域积累的经验和方法论,往往可以直接迁移到另一个地方去。
就像我在施工现场上学到的资源调度,你在厨房里掌握的出菜节奏,他在公司里习得的管理流程——换一个场景,依然有效。
优化程序,也不再需要改变身份。
面对业务软件开发需求,你不再需要先成为一个程序猿,需要的只是建立一种思维方式和小小的习惯——发现问题,找到瓶颈,撬动杠杆,然后动手。
我们每天都在面对各种各样的"串行处理"——重复的审批流程、冗长的会议链条、一层层的汇报机制。
很多时候,问题不在于人不够努力,而在于流程本身就在制造等待。
如果你也有一个正在运转的系统——无论是软件还是流程——不妨多看它一眼。
你的 Worker,是不是也在某个角落蹲着呢?
夜雨聆风