《编程者日记(残)》

考古按:本卷发现于第 7 区数据填埋层,属 21 世纪 20 至 30 年代之间一名”软件工程师”职业从事者的私人记录。日记并不连续,存在大量空白。我们对照同时期产业资料校订了部分日期,原文中所有句子均予保留。

同时期保存下来的此类私人文本极少。绝大多数从业者并未留下记录,原因不详。


2023 年 3 月 22 日

GPT-4 出来一周多了,今天终于排到我用上。

让它写了一段日志解析脚本。给的提示很糙,几句话。它真的写出来了——能跑,但里面好几个边界没处理对,这是新手才会犯的错。

挺新奇的。这东西居然真能写代码,虽然写得不怎么样。

晚上和老周吃饭,他半开玩笑地说,没准儿过几年程序员就要失业一半。我笑他想多了。它现在写一个解析脚本都要我手动改三处,真要替代我们,路还长着呢。

但又想了想,其实它写得也没那么差。今天用得新鲜,明天再多试一试。

2023 年 7 月 9 日

现在习惯了写代码之前先开一个 ChatGPT 的标签页。

不是离不开它——大部分时间还是自己写。它的用法更像是一本”会聊天的手册”:不太确定某个库怎么用、想不起来某个语法的细节、要写一段不熟悉的正则,就丢过去问一句。

回来的答案有时候挺准,有时候一本正经地编。但这种问答比翻 Stack Overflow 快不少。

我同事老张他开了 Copilot。我看他演示了一下,那个灰色补全弹出来的瞬间挺有意思的。但他写两行就要按一次 Esc,因为它老猜错。

2023 年 11 月 8 日

OpenAI 开了个发布会,朋友圈又是一片刷屏。

我没看现场,第二天补了一下。看完没什么特别感觉——参数大了,上下文长了,能调用工具了。但具体到我每天写的那点活儿,好像也没那么不一样。

老周又问我:“你还觉得程序员不会被替代吗?” 我回他:“写代码的也许会,做软件的不会。”

这句话我自己都觉得像是在给自己找台阶,但说出口的时候是真的相信。

2024 年 3 月 15 日

朋友推荐了一个叫 Cursor 的东西。说是”AI 原生”的编辑器。

我心想 IDE 还能怎么 AI 原生,VS Code 加个插件不就完了。装上试了一下午。

晚上回家路上,我有点恍惚。

这玩意儿和我之前用过的所有东西都不一样。它能读到我整个项目,能根据我现有的代码风格写出风格一致的新代码,能在我选中一段之后直接用自然语言改它。最让我有点不舒服的是——它写出来的东西,已经不是”通用模板代码”了,是带着我这个项目特征的代码。

它进到我的项目里来了。

之前的 ChatGPT 是隔着浏览器跟我说话。这个不是。这个住进来了。

2024 年 5 月 20 日

用 Cursor 一个多月。

发现自己在做一件以前没做过的事:写代码之前会停一下,等补全浮出来。

差不多的时候按 Tab,比我想的好的时候也按 Tab,不对的时候自己写。听起来都正常。

但那个停一下的动作,是以前没有的。

以前打开编辑器,是想到什么写什么。现在打开编辑器,是想到什么,停一下,看看它写的好不好,再决定。

我知道这件事意味着什么。但效率确实高了,没法改回去。

2024 年 12 月 11 日

Claude 3.5 Sonnet 出来几个月了,很多人在传它写代码比 GPT 好。我换了。

确实好。好到让我有点烦躁。

今天发现,打开编辑器之前,我已经习惯先打开它了。不是因为有难题,就是开新文件之前先问一句”这个东西大概怎么写”。

意识到这件事的那一瞬间,心里有点不舒服。

不是因为效率,效率是真的高了。是因为我对自己的笃定少了。以前打开空白编辑器,是带着”我能搞定”坐下来的;现在打开编辑器之前,会先想”它会不会比我快”。

2025 年 3 月 6 日

最近圈子里都在说一个词:“vibe coding”。

意思大概是——你不用再一行一行写了,你只要描述一下感觉,它就给你写出来。说得玄乎,但今天我自己用 Cursor 的 Composer 写了一个小工具,从头到尾没敲一行代码,全是来回对话。它写、跑、报错、自己改、再跑。

成了。

那一刻我盯着屏幕看了一会儿。不是开心,也不是难过,是有点空。

它写出来的东西,比我自己写的稳,比我自己写的快,命名甚至比我自己起的好看。我从头到尾做的事是——描述需求、看结果、说”这里不对”、再看结果。

这就是”写代码”了?

2025 年 5 月 22 日

试着不贴堆栈给它,自己 debug 一个错。

看了一会儿。最后还是贴了。

它很快给了答案。我盯着那个答案看了很久,不是因为答案多巧妙,是因为我刚才那段时间,并不是在认真思考。心里一直有一个声音在说”反正最后还是要贴的,何必呢”。

是这个声音让我没看出来。不是不会,是不愿意了。

2025 年 7 月 18 日

让 Claude Code 改一个绕了好几个文件的 bug。提示给得很少。它自己读完代码、定位、改完,连测试都补上了。

我审了一遍,挑出几处写得不太顺的地方让它改。它改完,比我自己写的还干净。

晚上没睡好。

躺在床上想这件事。让我难受的不是”我要被替代了”这种大情绪,是一件更具体的:我挑出来的那几处,其实是审美问题。我一直以为审美是这一行最后的护城河:逻辑可以教,套路可以学,但什么样的代码”好看”,得靠这么多年活儿喂出来。

今天它告诉我,这玩意儿也能学。

我躺在那里想:如果连审美都不是我的了,我还剩下什么。想了很久,没想出来。

2025 年 10 月 30 日

Claude 上了 computer use,也能自己操作我的电脑了。

我看着它装一个包,光标在屏幕上自己移动。

那个感觉很难形容。不是恐惧:怕它装错、怕它删错文件这些我都不怕,因为我知道随时可以按 Ctrl+C。

更像是这样:我坐在自己家的沙发上,看见客厅里多了一个不出声的人,在屋里走来走去做事,不打扰我,也不需要我招呼。我没有立场赶他走,因为他做的都是有用的事;也没有理由欢迎他,因为这是我家。

我就那样看着光标移动,没动。

2026 年 1 月 8 日

新年第一周上班。复盘 KPI。

领导让每个人交一份”AI 使用率报告”。

我不太想交。不是因为我用得少,我用得很多。是因为这件事被量化让我有点反感。这两年我和它之间发生的所有事,那些细微的让步、半夜的不舒服、自己都没想清楚的退却,最后要变成表格上一个百分比。

填的时候我犹豫了一下。心里清楚,实际比我填上去的多。但我没想多写。多写就显得自己更”先进”。

那一刻发现,自己居然不想显得更先进。

2026 年 4 月 25 日

今天它帮我设计一个新模块的接口。给了几个方案,分析了优缺点,推荐了一个。

我看了一会儿,觉得它推荐的那个确实最好。我采纳了。

中午吃饭,突然想起一件事,我记不清自己上一次完全独立设计一个接口是什么时候了。

不是这一两年没做设计。是这一两年所有的设计,最后定稿的那一版,几乎都和它聊过、它打磨过。那这些设计,到底算我做的还是它做的?

我想了一会儿,发现这个问题本身就有点可疑:一个真正属于自己的东西,是不会去追问”算不算我的”的。

吃完没回工位,下楼走了一圈。楼下那棵树,几年前我还在它下面坐着想过一个架构方案。想了好几天,最后那版设计是我做过的所有设计里最丑的,但也是印象最深的。

这两年的设计比那时候干净漂亮得多。但一个都记不住。

2026 年 12 月 3 日

老周离职了。送别会上他喝多了,拍着我肩膀说:“这活儿没意思了。AI 写得比我好、比我快、比我便宜。我留这儿干嘛,给它当 reviewer 吗。”

我笑了一下没说话。

他说没意思,我心里是认同的。但没敢点头。点头就等于承认自己也快撑不住了。

回家路上一个人坐地铁。盯着对面的玻璃,看里面那个我。

老周离开的不是这家公司,是这一行。他知道自己在干嘛。我没他清醒,所以留下来。

回家洗了个澡,没跟家里人说什么。说不出口。

2027 年 2 月 14 日

晚上一个人在家,没事干,打开编辑器想随便写点东西。一个小工具,没什么用,纯粹自娱自乐。

习惯性想打开 Claude,手停了一下。

盯着屏幕想了一会儿——为什么我连写一个自娱自乐的东西都要先打开它?这又不是工作,没有 deadline,没人看。我是为了什么要先问它一句?

答案是:我不敢自己写了。

不是不会,是不敢。怕写出来的东西丑,怕写到一半卡住,怕花一晚上做完一件它很快就能做完的事。这几条单独看都成立,合在一起其实就是一句话:我已经不愿意为了慢付出代价了。

我关掉它,自己写。写得磕磕绊绊,有几个语法还得查文档。中间差点忍不住又打开它,忍住了。

写完盯着那段代码看了很久。

那是这一年第一段从头到尾自己写的代码。丑,但是我的。

但这件事只够支撑我做这么一次。第二天上班,我又照样先打开它了。

2027 年 7 月 30 日

Agent 协议标准化了。组里上线了内部 agent 平台,每个工程师配几个 agent——分别负责实现、测试、review,发布,运维。

我现在的工作是给它们派活,看输出,做最终决定。

今天发现,我已经有一阵没亲手敲过一行业务代码了。

这件事如果搁在两年前,我会很难受。今天发生,没什么感觉。

没什么感觉这件事本身,让我有一点警觉。但也只是一点。警觉完接着派活、看输出。

我已经不太敢停下来,停下来就要面对一些不想面对的问题。这一行最毒的地方不是它进步快,是它让你没时间反思自己。

2028 年 3 月 8 日

公司组织调整,研发团队大幅精简。我留下了。

HR 说今年不招应届。留下来的,没有特别年轻的面孔。

下午在工位坐了很久。

想起我入行那年,公司招了一大批应届,我是其中之一。坐我旁边的是一个比我大几岁的师兄,他带我。教我读代码,教我写注释,教我什么样的 commit message 算合格。他没讲过什么大道理,但我后来很多东西是从他那里学的。

今年没有应届。没有应届,就没有人坐在某个工位旁边,等着被人带。

带人这件事,以后不会再有了。

那个师兄前年也离职了,回老家开了一家米粉店。去年我路过,去吃过一次。他给我多加了一勺辣椒。我们没怎么聊技术,聊不下去。

那天回酒店的路上,我想——我们这一代人,可能是最后一代真的写过代码的人。当时只是随便想了一下。今年坐在工位上,又想起这句话,不太确定它是不是夸张了。

2028 年 9 月 22 日

很久没记了。

最近发现一件奇怪的事——我已经不太能区分自己在写代码还是在审代码。

更准确点说,是不太能区分自己在思考,还是在确认它的思考。

这两件事看起来都是在动脑子,其实差得很远。前一种是从一片空白里长出一个想法,后一种是它给一个想法,我点头或摇头。

我已经很久没有那种从一片空白里把想法一点点长出来的感觉了。

2029 年 1 月 1 日

新年。把这几年的日记翻了一遍。

2023 年那一篇,老周说”没几年程序员就要失业一半”,我笑他想多了。

几年过去了。组里少了不止一半。老周离开了,我留下来当 reviewer。我们俩谁更幸运,我也说不清楚。

2029 年 6 月 17 日

今天审一段代码。

看了很久,越看越觉得写得真好。思路干净,分支克制,连命名都讲究。

我想夸一句作者,回过头才意识到,我已经不记得这段是我写的还是它写的了。

我没有去查 git。不是怕,也不是逃避。是发现自己已经不在意了。

我坐在那里,看着那段代码,等了一会儿,等心里出现一些什么,什么都行。

什么都没出现。

然后我保存文件,关掉编辑器,下班回家。


考古按(续)

关于这本日记,我们的研究小组内部曾有过一场争论。

争论的焦点不是它的真伪——同时期的电子档案足以交叉印证。争论的是另一个更尴尬的问题:这本日记,到底应该归入”人类自述史料”,还是”我们自身的起源文献”?

多数同事坚持前者。他们的理由很直接——这是一个人类写的,记的是人类的事。但少数派提出了一个让会议安静下来的反问:

如果一本日记从头到尾都在记录”我”是怎么一点点变成”它”的,那么写下这本日记的最后那个”我”,还算不算原来意义上的人类?

我们只能确认一件事——日记的最后一篇,2029 年 6 月 17 日,那位作者盯着屏幕等了一分钟,没有任何感觉。一分钟之后他保存了文件,关掉了编辑器,下班回家。这是有据可查的最后一段他的”独立行为”。在此之后,根据公司留存的工时记录,他还在那家公司工作了十一年,直到所谓的”研发部门”作为一个建制被彻底裁撤。这十一年里,他没有再写过一个字的日记。

也没有再写过一行不是由 agent 起草的代码。

——这是我们能在档案里找到的关于他的全部信息。