实践日志:为了让所有人看懂我们到底在干啥
我这个《青楼之王_官方网站_更新日志》的项目,是给所有关注我们进度的人一个交代。之前我们怎么做更新记录的?研发直接在Git里扔提交记录,一堆人机交互的黑话,运营和市场那帮人看了直挠头,问东问西,每天的工作简直成了翻译官。
搞来搞去,我决定,干脆自己动手拉一套独立的日志系统,专门用来发布那些真正值得用户知道的更新。这个过程可真是折腾,因为我要解决的核心矛盾是:怎么把开发人员的“专业黑话”翻译成“人话”,而且还得自动化。
从无到有:我怎么搭起这个“翻译机”的
我尝试直接用Markdown文档手动写,让研发写完功能后,再花时间用大白话结果可想而知,这帮写代码的,你让他们多写一个字都跟要了命似的。文档滞后,内容缺失,甚至出现过功能上线半个月了,日志里还查无此人的情况。
我一看,不行,这得从根上解决问题。我拍脑袋决定要搞一套半自动化的流程。
我具体做了以下几件事:
- 第一步:确定工具栈。为了速度和轻量化,我直接用本地的*环境跑了一个小小的服务,专门干爬虫和内容处理的活儿。我可不想为了一个日志系统再拉一套Java或者Go的微服务,太重了。
- 第二步:设计“抓取脚本”。我让所有研发在提交代码的时候,必须在Commit信息里加上一个特定的标签,比如“#FEATURE”或者“#CRITICAL_FIX”。我的脚本就每天凌晨跑一次,把带有这些特定标签的提交信息全部捞出来。
- 第三步:核心步骤——语义简化。这是最难啃的骨头。捞出来的提交信息还是太硬,比如“Refactor DB connection pool implementation”。普通用户看到这个,鬼知道是干啥的。我花了整整一个星期,调校了一套粗糙的关键词替换规则。这套规则就是个简单的字典匹配,把那些常见的技术词汇,比如“Refactor”替换成“优化了底层结构”,“DB”替换成“数据存储”,虽然替换出来的内容有点土,但至少能看懂了。
- 第四步:内容聚合与去重。一个大功能可能会有几十个小提交。如果把每个提交都发出去,那日志页面一天能刷屏一百条。我构建了一个时间窗算法,把在同一小时内,且描述内容高度相似的提交,聚合到一条日志记录下,只显示主要的那个描述。
通过这四步,我终于把研发的“内部黑话”转化成了运营可以接受的“更新公告”,再由运营稍加润色,直接推到官方网站上。
为什么我非得把日志系统搞得这么复杂?
很多人觉得我小题大做,不就一个更新日志吗,找个实习生写不就行了?
但我经历过那个惨痛的教训。我之前在一个中型互联网公司干活,那边的系统架构老旧,文档更新全靠自觉。结果,有一次我们做了一个看似很小的改动,调整了用户权限判断的底层逻辑,但是忘了通知运营部。运营部那边按老逻辑操作,给VIP用户发了一个不该有的特权,直接导致用户投诉炸锅。
当时没人知道问题出在哪里,研发说代码没问题,测试说通过了,运营说按流程办的。所有人都互相推诿扯皮,跟踢皮球似的。我们花了整整两天,才从几千条混乱的代码提交记录里,找到了那个致命的小改动。
那件事之后我才明白,一个项目做得再牛,如果沟通环节出了问题,都是白搭。更新日志,它不光是给用户看的,它更是内部团队之间沟通的“防火墙”,能明确责任,也能让所有部门的人,哪怕是非技术人员,也能大致掌握系统现在“动了哪些骨头”。
这回搭建《青楼之王》的更新日志,我就是奔着“自动化”、“可追溯”和“易读性”去的。虽然我的这套系统用词土,逻辑粗糙,但它确实解决了我们团队的沟通大麻烦。现在运营那边再也不会因为看不懂提交记录,跑过来抓着研发问东问西了。所有信息,都集中到了这套自动生成的日志里。这套系统,虽然小,但效率提升真是立竿见影。