The drive to develop

| 杂物

这是一期杂谈,没什么干货。

“The drive to develop” 是早年间喷气式大脑(aka JetBrains)的一句宣传语。虽然目前无论是工作还是自己的项目里我用的都是 VSCode,但是毕竟大学编程的一大半时间都是在 JetBrains 家的各种 IDE 中度过的(毕竟有学生免费),所以对它家印象还是比较深的。第一次见到这句宣传语应该是在某次 ICPC 的直播上(当时 JetBrains 是官方赞助商之一),感觉直击心灵。在学校里的时候虽然有各种课程,但也有一些有趣的课程项目,再加上自己也会写点自己的东西,所以的确是有这种编程的动力的。这样的动力在工作后甚至也延伸了一段时间,上班的时候写公司的代码,下班之后忙自己的项目。

可惜这样的动力并没有延伸太久。随着工作年限增长,工作上要处理的事务也越来越多,虽然也写代码,但是写代码的时间并不是工作时间的大头,因为还有无数的关联任务需要完成(设计文档、代码评审、发布、告警处理…)。即使是到了周末,也会因为周中的工作几乎耗尽了精力,没有动力坐回电脑前写点什么;残存的精力已经只够我在床上躺着刷手机了,各种个人项目也因此停滞了很久。

但各类 AI 代码编辑器(更准确地说,是 LLM-assisted programming?)的出现改变了这一切。虽然 ChatGPT 早在 22 年底就发布了,但是我自己亲自上手体验已经是 23 年初。当时还是刀耕火种的时代,需要自己从网页里复制代码到 IDE 里。后来 Github Copliot 有了对话模式,可以稍微做一些交互式的任务了,但是因为没法自动 apply changes,最多只能 insert,体验还是不太行。再后来试用了 Cursor,第一次体会到了什么叫做 “AI-Native” 的编辑体验,变更大部分时间都可以直接 Apply 进去,不用再自己一个个找了;但是用起来还是感觉有点迟滞,例如因为索引还不太好使,很多时候都得手动指定某一个特定的文件加入上下文才能有比较好的效果。最近我在使用的是 Windsurf,起初不是很习惯(生成过程中看不到进度,和 Cursor 不同),但后来才发现了其 agent 能力的真正作用,多文件修改、代码库索引,再结合自带的联网搜索,真正做到了指哪打哪,信手拈来。

之前之所以空闲时间不太想写代码,并不是因为没有想法,而是虽然有想法,但是具体怎么实现的思路依然很模糊,而且中途还有高度的不确定性和时间成本,例如有的时候配环境就因为一些莫名其妙的依赖调试了两三个小时,或者是因为某一个感觉上很直接但是就是写不对的函数 rage quit。但是有了 LLM 之后,我可以直接对着编辑器说:去,把这个功能给我做出来,然后看着 agent 吭呲吭呲尝试各种方法,自己调试问题。虽然偶尔还是要人介入,但是心态上会好很多,感觉自己仿佛什么都能做。在我最近的一个小项目里,我给一个 Rust 的库实现了一个 web playground link 。虽然我知道步骤是先写一个 wrapper,然后编译 wasm,再写点 js 去调,但是里面有很多细节我是不知道的(需要装什么工具,怎么编译)或者是不想手动做的(例如写胶水前端代码)。于是我把我的思路告诉 LLM,一个小时之后我就有了一个能用的 demo。(其中甚至还包括至少二十分钟在等 rust toolchain 和 wasmpack 编译)这样的效率是之前自己想都不敢想的。

但是我也注意到,AI 代码编辑器的出现,只是帮助让有想法的人走的更快更远;如果一开始就没有想法,即使有这样的工具也不会去用。以我自己为例,AI 音乐/图片/视频生成已经实用化很长时间了,也有各类免费的服务可供选用,但是我却提不太起去用它们创作些什么的兴趣,也没有什么想法。由此推知,可能也有其他人心中有不少想让 AI 画出来的画面,有 the drive to draw,但是面对空白的编辑器窗口却不知道应该发出什么指令,帮助自己做什么事情吧。

最后,无论目标为何,希望大家都能找到自己趁手的工具,完成自己想做的事。