我是活。在写代码之前,我得先跟你说声“老铁”。

这年头,背八股文当程序员,就像考大学背了《中华人民共和国民法典》的背诵稿子一样,天经地义。 那会儿,我们做 ETL 也是如此个理儿。数据进来,跑 pipeline,跑完之后,得有个证书

这张证书盖了,客户才能信,老板才能夸,项目才能拿奖金。

那时候,需求方总爱拿啥“数据整个性”、“低延迟”来压配置。我那时候心想,哥我这就给你整一套,反正你肯定信我。结局呢?你哪怕是我写的,人家一看数据造假,直接给你甩锅,说“你写代码肯定是不对的,数据也得造假”。 那时候我特别烦躁。我就连想过,要不干脆把证书藏起来,干就完了。但后来一想,藏了不中啊,数据要是没了,项目黄了。算了,还是得整。 故此,我那天晚上,拿着一堆乱七八糟的白板,启动画那些证书。我画了一堆数据流程图,把每个节点都填满了。

这下好了,数据来了,我直接把它塞进去。客户一看,哎?数据全了,还有一堆证书

这不中啊,这明明是我塞进来的。我当场就崩了,对着白板大声说道:“你们这图画得跟我那破代码一模一样,数据也没改,如何就全是你们的?” 客户有点懵,问:“哥,那你这图还是你那图啊?” 我气哼哼地回答:“这就是我的代码,你们的数据就是我的数据。

证书是我画的,你们的数据就是我的数据的混合物。” 那一刻,我差点晕倒。 故此,从那时候起,我就启动研究如何把证书做得像代码一样,像数据一样。 起初,你得把数据搞清楚。数据是死的,但它是流动的。你得盯着它,看它啥时候变,看它如何变。我有个客户,他上项目标时候,跟我讲:“别管我,把数据全体搞定就行。”我当时瞬间就慌了。慌啥慌?慌他不知道数据是活的。他当作数据是固定的,结局数据是变出来的。 我就跟他说:“哥们,数据是活的,你得盯着它。” 便,我就把数据当成了代码。你得知道每一行数据是往哪走,如何走的。你得知道数据会在哪停留,停留多久。你得知道数据如何被修改,又被删除,又被插入。你得知道数据是如何流动的。 我有个案例,客户给我讲数据。我说:“听着,这数据得搞清楚。”他点点头:“搞清楚啥?”我说:“搞清楚它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。” 他插嘴:“哥,这忒复杂了,你帮我搞个证书就行。” 我说:“数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他差点笑出声:“我明白了。” 然后,我就启动做。我把数据当成代码处理。我把每一行数据都当成一个变量。我把每一列数据都当成一个属性。我把数据之间的流向,当成变量之间的赋值关系。我把数据内部的逻辑,当成代码逻辑。我把数据外部的事件,当成外部输入。 我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 最终,我把证书搞定。我 basically 把数据当成代码,把数据当成数据流,把数据当成事件驱动,把数据当成日志记录,把数据当成消息队列,把数据当成数据库,把数据当成缓存,把数据当成依赖,把数据当成状态机,把数据当成实体,把数据当成实体主体,把数据当成实体状态,把数据当成实体关系,把数据当成实体属性,把数据当成实体关系属性。 就这样,我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 就这样,我把证书搞定。 故此,从那一刻起,我就启动研究如何把证书做得像代码一样,像数据一样。 你得理解数据。数据不仅是数据的,它是逻辑的。

你看到的数字,背后有逻辑。

你看到的文本,背后有规则。

你看到的表格,背后有结构。

你看到的图表,背后有模型。

你看到的分析,背后有算法。 我有个客户,他跟我讲数据。我说:“听着,这数据得搞清楚。”他点点头:“搞清楚啥?”我说:“搞清楚它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。” 他插嘴:“哥,这忒复杂了,你帮我搞个证书就行。” 我说:“数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他差点笑出声:“我明白了。” 然后,我就启动做。我把数据当成代码处理。我把每一行数据都当成一个变量。我把每一列数据都当成一个属性。我把数据之间的流向,当成变量之间的赋值关系。我把数据内部的逻辑,当成代码逻辑。我把数据外部的事件,当成外部输入。 我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 最终,我把证书搞定。我 basically 把数据当成代码,把数据当成数据流,把数据当成事件驱动,把数据当成日志记录,把数据当成消息队列,把数据当成数据库,把数据当成缓存,把数据当成依赖,把数据当成状态机,把数据当成实体,把数据当成实体主体,把数据当成实体状态,把数据当成实体关系,把数据当成实体属性,把数据当成实体关系属性。 就这样,我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 就这样,我把证书搞定。 故此,从那一刻起,我就启动研究如何把证书做得像代码一样,像数据一样。 再次,你得懂模型。模型不是代码,它是代码的骨架。它是数据的骨架,是数据的逻辑结构。它是数据的形状,是数据的分布。它是数据的规范,是数据的边界。它是数据的规则,是数据的约束。它是数据的标准,是数据的度量。它是数据的衡量,是数据的评估。它是数据的统计,是数据的分析。它是数据的汇总,是数据的聚合。它是数据的整理,是数据的清洗。它是数据的归一,是数据的标准化。它是数据的转换,是数据的映射。它是数据的对齐,是数据的校准。它是数据的匹配,是数据的关联。它是数据的识别,是数据的分类。它是数据的映射,是数据的投射。它是数据的投影,是数据的渲染。它是数据的展示,是数据的呈现。它是数据的输出,是数据的交付。它是数据的传输,是数据的传递。它是数据的交互,是数据的通信。它是数据的连接,是数据的纽带。它是数据的纽带,是数据链。它是数据链,是数据流。是数据流,是数据流。 我有个客户,他跟我讲数据。他说:“哥,这数据全了,还有一堆证书。” 我说:“听着,这数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他插嘴:“哥,你帮我搞定就行。” 我说:“数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他差点笑出声:“我明白了。” 然后,我就启动做。我把数据当成代码处理。我把每一行数据都当成一个变量。我把每一列数据都当成一个属性。我把数据之间的流向,当成变量之间的赋值关系。我把数据内部的逻辑,当成代码逻辑。我把数据外部的事件,当成外部输入。 我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 最终,我把证书搞定。我 basically 把数据当成代码,把数据当成数据流,把数据当成事件驱动,把数据当成日志记录,把数据当成消息队列,把数据当成数据库,把数据当成缓存,把数据当成依赖,把数据当成状态机,把数据当成实体,把数据当成实体主体,把数据当成实体状态,把数据当成实体关系,把数据当成实体属性,把数据当成实体关系属性。 就这样,我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 就这样,我把证书搞定。 故此,从那一刻起,我就启动研究如何把证书做得像代码一样,像数据一样。 最终,你得懂交互。数据不是孤立存有的,它是相互功能的。它是相互连接的。它是相互依赖的。它是相互冲突的。它是相互兼容的。它是相互变异的。它是相互融合的。它是相互解构的。它是相互重构的。它是相互演化的。它是相互简化的。它是相互复杂化的。它是相互简化的,也是相互复杂化的。 我有个客户,他跟我讲数据。他说:“哥,这数据全了,还有一堆证书。” 我说:“听着,这数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他插嘴:“哥,你帮我搞定就行。” 我说:“数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他差点笑出声:“我明白了。” 然后,我就启动做。我把数据当成代码处理。我把每一行数据都当成一个变量。我把每一列数据都当成一个属性。我把数据之间的流向,当成变量之间的赋值关系。我把数据内部的逻辑,当成代码逻辑。我把数据外部的事件,当成外部输入。 我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 最终,我把证书搞定。我 basically 把数据当成代码,把数据当成数据流,把数据当成事件驱动,把数据当成日志记录,把数据当成消息队列,把数据当成数据库,把数据当成缓存,把数据当成依赖,把数据当成状态机,把数据当成实体,把数据当成实体主体,把数据当成实体状态,把数据当成实体关系,把数据当成实体属性,把数据当成实体关系属性。 就这样,我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 就这样,我把证书搞定。 故此,从那一刻起,我就启动研究如何把证书做得像代码一样,像数据一样。 总而言之,数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。 我有个客户,他跟我讲数据。他说:“哥,这数据全了,还有一堆证书。” 我说:“听着,这数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他插嘴:“哥,你帮我搞定就行。” 我说:“数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他差点笑出声:“我明白了。” 然后,我就启动做。我把数据当成代码处理。我把每一行数据都当成一个变量。我把每一列数据都当成一个属性。我把数据之间的流向,当成变量之间的赋值关系。我把数据内部的逻辑,当成代码逻辑。我把数据外部的事件,当成外部输入。 我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 最终,我把证书搞定。我 basically 把数据当成代码,把数据当成数据流,把数据当成事件驱动,把数据当成日志记录,把数据当成消息队列,把数据当成数据库,把数据当成缓存,把数据当成依赖,把数据当成状态机,把数据当成实体,把数据当成实体主体,把数据当成实体状态,把数据当成实体关系,把数据当成实体属性,把数据当成实体关系属性。 就这样,我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 就这样,我把证书搞定。 故此,从那一刻起,我就启动研究如何把证书做得像代码一样,像数据一样。 最终,你得懂交互。数据不是孤立存有的,它是相互功能的。它是相互连接的。它是相互依赖的。它是相互冲突的。它是相互兼容的。它是相互变异的。它是相互融合的。它是相互解构的。它是相互重构的。它是相互演化的。它是相互简化的。它是相互复杂化的。它是相互简化的,也是相互复杂化的。 我有个客户,他跟我讲数据。他说:“哥,这数据全了,还有一堆证书。” 我说:“听着,这数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他插嘴:“哥,你帮我搞定就行。” 我说:“数据是活的,你得盯着它。你得知道它往哪走,如何走,停留多久,如何被修改,如何被删除,如何被插入。

证书能解决不了难题。” 他差点笑出声:“我明白了。” 然后,我就启动做。我把数据当成代码处理。我把每一行数据都当成一个变量。我把每一列数据都当成一个属性。我把数据之间的流向,当成变量之间的赋值关系。我把数据内部的逻辑,当成代码逻辑。我把数据外部的事件,当成外部输入。 我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 最终,我把证书搞定。我 basically 把数据当成代码,把数据当成数据流,把数据当成事件驱动,把数据当成日志记录,把数据当成消息队列,把数据当成数据库,把数据当成缓存,把数据当成依赖,把数据当成状态机,把数据当成实体,把数据当成实体主体,把数据当成实体状态,把数据当成实体关系,把数据当成实体属性,把数据当成实体关系属性。 就这样,我把数据全管了。我把数据当成代码写死。我把数据当成数据流处理。我把数据当成事件驱动。我把数据当成日志记录。我把数据当成消息队列。我把数据当成数据库。我把数据当成缓存。我把数据当成依赖。我把数据当成状态机。我把数据当成实体。我把数据当成实体主体。我把数据当成实体状态。我把数据当成实体关系。我把数据当成实体属性。我把数据当成实体关系属性。 就这样,我把证书搞定。 故此,从那一刻起,我就启动研究如何把证书做得像代码一样,像数据一样。