何谓编程思维-以一个小项目为例

1. 编程思维的几个特点

问题拆解

大问题拆解为小问题，可一步解决

构建 mvp

“跑起来” 再说。一个初步可行的方案可验证我们的方向，也会增加信心。

分步测试

每一步都进行对应的测试，而不要等所有工作都做完，否则发现问题可能得重头再来。

自动化

重复性、批量化的工作并非人类的强项，交由程序进行更为合适

日志记录

记忆不可靠。只有日志能忠实记录所有信息，便于定位问题。

2. 以 “滴滴打车行程单” 汇总行程数据为例

2.1 问题拆解

问题：在填报报销单的时候，发现需要一个个将行程和金额信息从行程单复制到 bos 系统，操作过于繁琐，且从 pdf 中复制内容出来很容易出错。

仔细想想，这种不应该是程序最擅长的工作吗？我何必为难自己呢？

说干就干：

分析需求：从行程单的 pdf 中获取对应的时间、地点、金额等信息，然后输出到一个固定模板的 Excel 表中。

所有的 pdf 个格式均是固定的，且需导出的 Excel 格式也是固定的。所以程序写好之后可以适应所有的滴滴行程单。

2.2 构建 mvp

我使用 AI 编程工具 Trea 来更快捷的构建代码，这是字节跳动出品的国内首个 AI IDE，深度理解中文开发场景。

首先新建一个文件夹用于存放代码文件，并将一份滴滴行程单的 PDF 文件存放在文件夹中。然后在 Trea 中打开这个文件夹。

接着将 Trea 右侧的对话框切换为 Builder 的模式，并输入下面的指令。

从行程单的 pdf 中获取对应的起始时间、起始地点、结束地点、金额信息，然后输出对应到内容到终端。

先构建一个可以获取对应数据的 mvp。显然这种小需求对 AI 来说是小 case。不到一分钟，便写出来初步的代码，输出了我想要的效果。这样我在终端里复制所需的数据方便多了。当然这肯定不是我想要的最终结果。

2.3 分步测试

那么接下来，再给 AI 输入指令：

我想把输出的内容保存为一个 Excel 文件。

很快，AI 就完成的它的工作，实现了我的设想。

不过这还没有结束，我对 Excel 文件的格式有要求。接下来我直接在文件夹中放入了我所需的标准 Excel 示例文件，并告诉 AI：

请根据我提供的 Excel 文件调整你输出的 Excel 文件格式。

很快，我想要的 Excel 格式就实现了。

但是输出的 Excel 还有一些地方不满足我的需求，我想要输出的 Excel 中各个条目按照起始日期和时间正序排列。再给 AI 提要求：

输出的 Excel 中各个条目按照起始日期和时间正序排列。

就这样一步步的测试与调整，最终我所需的 “小程序” 就实现了。

2.4 自动化

这个程序就是一个自动化的方式，帮我才繁杂的行程单填报工作中解脱出来。虽然花了几十分钟的时间不断调整，占用了填报报销的时间。但是之后的工作中肯定为我减少的大量的麻烦。

2.5 日志记录

在编程中，git 工具就是很好的日志记录，每次代码的更新都有对应的日志记录。

本文也是我对这次尝试的一篇日志记录。

3. 最后

编程思维应该是我们工作中需具备的重要思维方式。不仅仅是用于写代码，问题的拆解能力让我们能够应对 “大问题”；mvp 能够我让我们构建解决问题的初步模型；日志记录方便我们回溯解决步骤，更好的总结经验……

4. 题外话

许久没写东西了，还是得动动脑子记录一下。