数据的“干净度”是个伪命题,直到你被脏数据坑到凌晨三点还在改脚本。今天复盘我那个自动化分发系统,爬虫抓来的数据经过清洗、分类、再推送到各个平台,流程看起来挺美。但上周一个客户投诉,说我们推的链接里混进了赌博网站。我查了整整两天,最后发现是清洗规则里有个正则表达式漏掉了“.xxx”这种变体,爬虫线程一多,脏数据就像癌细胞一样扩散开了。
十年前我根本不在乎这个。2016年那会儿,SEO就是比谁手快,比谁路子野。我写爬虫只管把DOM树扒下来,用XPath暴力提取,管他什么编码问题、反爬机制,能跑通就是胜利。数据脏?手动筛一遍不就完了。那时候流量红利还在,你发一百条内容,总有几条能撞上算法,带来询盘。焦虑感来自于“不够快”,而不是“不够准”。我甚至觉得写单元测试是学院派那套,浪费时间,有那功夫不如多写两个脚本去群发。
转折是2019年,团队扩张那阵子。我招了个应届生来维护这套系统,他看不懂我那一坨意大利面条似的代码,也不敢改。每次出问题,都得我亲自上手,一边骂娘一边在几千行日志里找那个该死的边界条件。管理上的毒打是一回事,技术债的利息是另一回事。我开始意识到,当你的系统要交给别人,或者要运行超过三个月,那些你曾经嗤之以鼻的“规范”就成了救命稻草。但那时候陷在交付里,每天被客户和员工两头拉扯,根本没心力重构。
真正的教训是疫情后,我回归个人交付。一个人就是一支军队,系统崩了没人背锅,就是直接的经济损失。我开始给核心的数据清洗模块写单元测试,用pytest。一开始特别痛苦,感觉在给一栋烂尾楼做精装修。但当你写出第一个测试用例,覆盖了那个导致“.xxx”漏网的边界情况,并且它真的在下次代码改动前尖叫着报警时,那种安全感是野路子时代从未有过的。这不是学院派的矫情,这是血淋淋的生产力问题——你不想在陪家人吃饭的时候被一个紧急bug叫去加班,你就得在代码上多花这半小时。
今天,2022年11月30日,圈子里都在传一个叫ChatGPT的东西。我试了一下,让它帮我生成几个测试用例,它写得有模有样。我隐隐觉得,我过去赖以生存的“信息差”——比如怎么绕开某个平台的API频率限制,怎么写更高效的正则——在这种通用智能面前,可能会迅速贬值。如果AI能轻易理解需求并生成还算可靠的代码,那未来竞争的关键是什么?很可能不再是“写代码的速度”,而是“定义问题的精度”和“验证结果的严谨性”。你的数据管道是否足够健壮,你的测试用例是否覆盖了所有诡异的业务场景,这些“脏活累活”的价值反而凸显了。
我的自动化分发系统,本质上是个数据管道。它的价值不取决于它用了多炫酷的异步框架,而取决于最后吐出来的东西是否干净、有用。单元测试,以及未来AI可能辅助生成的更全面的测试,就是这条管道的质检员。野路子的黄昏可能真的来了,但黄昏之后,对于真正重视交付质量的人来说,也许是更干净的黎明。我现在就得让我的数据,和我测试这些数据的方法,都先干净起来。














