去年年底我做了一次时间审计——把自己两周内每天的电脑活动记录了下来。结果让我很不舒服。
写代码的时间大概占 40%。剩下的 60% 去哪了?答案很琐碎:在各个平台之间复制粘贴文章、手动改格式、截图改尺寸、文件重命名、Git 操作、数据库迁移、部署、查日志、回微信。
这些事单独拿出来都不难,但加起来就是巨大的时间黑洞。更关键的是,它们有一个共同特点:高度重复、规则明确、不需要判断力。换句话说,这恰好是程序该做的事。
我开始一件一件地把这些事写成脚本。
第一刀:内容分发
我是技术博主,每篇文章要发到掘金、知乎、CSDN、博客园、思否五个平台。过去的标准操作是:写完文章 → 打开五个网站 → 依次粘贴标题、正文、标签 → 逐个点发布。文章写了四十分钟,发布花了二十五分钟。
最让人崩溃的是格式问题。Markdown 转过去,有的平台认,有的不认。知乎的编辑器是 Draft.js,粘贴进去的换行经常被吃掉,代码块的高亮也没了。每次都要手动调一遍。
我花了一个周末把整个流程自动化了。思路很简单:浏览器自动化模拟人的操作。但实际做起来,每个平台都是一个小工程。知乎的 Draft.js 不认 innerHTML,得用 insertText 触发 React 的合成事件;小红书的编辑器藏在一个 Vue 单页应用里,路由切换要走 Vue Router 内部导航,普通的 URL 跳转不管用;视频号整个页面跑在微前端框架里,DOM 元素藏在 Shadow DOM 的深处,普通的 CSS 选择器全失效。
五个平台跑通之后,发布变成了:写完文章 → 点一下按钮 → 三十秒内全部发出。
第二刀:重复的操作
尝到甜头之后,我开始系统性地审视自己的日常工作流。
Git 提交信息写得太随意?写了个脚本,自动从代码差异中提取改动摘要,生成规范的 commit message。文件需要批量重命名?一行 Python 的事。Mac 上的截图总是带着阴影和圆角,每次都要手动裁一下?用 ImageMagick 写了一行命令,绑定到键盘快捷键。
部署流程是一个 Shell 脚本,把构建、测试、打包、上传、重启服务串起来。以前要手动执行七八个命令,还偶尔漏步骤。现在一条命令走完,喝着咖啡看日志就行。
这些工具单个体量都很小,大部分不超过两百行代码。但它们有一个共同的效果:把需要记住的事变成了不需要记的事。
为什么自己写而不是用现成工具
这个问题我被问过好几次。市面上确实有各种效率工具,但它们通常有两个问题:一是做得太通用,为了覆盖所有人的需求,牺牲了针对性;二是做不到完全自动化,总有个步骤要你手动点一下。
自己写的工具恰好相反。它只解决你自己的问题,所以可以做到极简。没有 UI,没有配置界面,没有"如果你需要高级功能请升级到 Pro 版"。它就是一段代码,刚好做一件事,做好为止。
而且自己写工具有一个意想不到的副产品:你对日常工作的理解会加深。为了自动化一个流程,你要把它拆解到每一步,这个过程本身就能发现很多低效环节。
一件事值不值得写脚本
我的判断标准很简单:这件事未来会不会再做?如果会,它就值得。
一个极端例子:有一次我需要把两百多张截图批量裁掉底部的水印。手动操作大概要两个小时。写脚本二十分钟。那个脚本后来我用了十几次。
反过来,有些只需要操作一次的事情,花十分钟手动做完比花一小时写脚本划算。关键是能判断什么值得自动化,什么不值得。这个能力本身也是写脚本练出来的。
总结
程序员的核心竞争力不是会写多复杂的系统,而是能不能识别出重复劳动,并把它消灭掉。每次做完一件重复的事,问自己一句:"下个月我还要再做一次吗?"如果答案是肯定的,那就该写个脚本了。
这些自动化积累起来,五年之后你的工作效率就是别人的好几倍。不是因为你打字快,而是因为你把时间都花在了需要脑子的事上。
Top comments (0)