事情的开始总是有个目标,目标拆解下来总是一个任务列表,列表是关键,想办法把列表做出来,然后再想办法丰富这个列表,或者曾长/缩短这个列表
示例
- 静态检查的lint工具(rubocop/golangci-lint…),通过检查代码,汇报violation,这是violation的列表
- sonarcloud检查代码质量,测试覆盖率,以文件列表的形式展示结果,这是分析结果的列表
- 一项业务流程由一组事件构成,这是一个事件的列表
- 要检查业务系统里的开关哪些是可以清理的,需要建立一个业务开关的列表,为它们添加元信息,例如创建时间,默认值,当前值,更新时间… 这是一个包含元信息的开关的列表
- 要分析生产变更和生产事故的之间的关系,需要建立生产变更和时间相关的列表(log),逐渐为每个变更添加元信息,聚合分析这个log,更通用一点的抽象是将生产变更/生产事故…等一切与组织/系统相关的改动都视为”事件”,然后来分析这个事件的log,可以得到很多有价值的信息。这里的核心还是个列表,事件的列表(元信息包含时间戳)
- 数据结构中的”graph”也是很好的例子,数据结构的表示可以用一组边(edge)来表示,这里还是一个列表,单独看每条边和每个节点都是很无聊的,用图的算法来分析具体问题才是有趣的地方!这里的核心还是列表,在记录时只关心两个节点之间的关系,而暂时不关系整张图的样子,最终的分析结果和可视化结果更加有意义
- 用列表的思路来处理问题时有两种思路,做出列表,然后把列表变短 — 适用于分解问题,分离关注点;或者做出列表,然后把列表变长 — 适用于框架,逐步优化,逐步深入。<— 没想清楚,需要再深入一点