永远的初级工程师:AI 替你练不出来的技能

查看原文 HN 讨论

文章摘要

这篇文章发表在广告技术公司 Criteo 的技术博客上,作者 Elise Baturone 是一名刚毕业不久的初级软件工程师。文章探讨的是:在一个处处鼓励”尽量让 AI 智能体写代码”的环境里,新人该如何成长为资深工程师。

真正的担忧。 作者说,公司仍在招工程师,也仍然看重工程师,但每条”多用 AI 提效”的指示后面都附着同一句话:方向盘要握紧,别丢了对自己在做什么的理解。问题是,对刚毕业的人来说,”还在学自己在做什么”不是附加说明,而是工作本身。学校教的是”多写代码才能进步”,现在却被告知能不亲手写就别写。作者真正害怕的不是软件工程师消失,而是资深工程师消失:所有人都变成”永远的初级”,只能借助一个智能体去审查另一个智能体的产出。

先弄清目标。 作者先研究了两个问题:AI 到底改变了岗位要求的哪些部分?资深工程师具体是什么样?关于前者,业界共识大致是审查代码比写代码更重要,学语法和语言已经过时,公司还希望工程师关注 token 成本。关于后者,作者观察团队里的资深同事,总结出几个特征:能为自己上线的代码辩护,能论证设计选择而不只是”有个选择”,能看出智能体走偏了,知道什么时候该委派、什么时候该自己动手,而且愿意花时间教别人。作者据此画了一张成长地图,第一个里程碑是年底前获得晋升提名。

写 skill.md 的过程,反而暴露了自己的短板。 和很多工程师一样,作者一开始给模型写了一份 skill.md,让它像导师一样引导自己学习资深工程师的做法。写着写着发现,真正的差距不在智能体的行为,而在自己身上。于是文章的重点变成了四项需要自己练的能力:

  1. 提问(好奇心):让智能体在每次决策或改动后用苏格拉底式问题考自己,比如用自己的话解释、预测改了某处会坏什么、为某个取舍辩护。这些问题只有一半有用,但它们逼着作者仔细看计划和代码。作者建议:遇到看不懂的决定就让智能体解释,提到陌生概念就让它给出处,觉得不对劲就让它论证。让 AI 把有缺陷的方案讲出来,常常是它和你同时发现错误的方式。这会多花 token,但作者认为放慢节奏、真正理解后再上线的代码,在生产环境里出问题的概率低得多。
  2. 审查(模仿):资深同事在你代码上留过的每一条评论,都是现成的训练集。比如团队负责商品目录,每次新增实体类型,资深同事都会说”这和已有的某个很像”。作者于是把已有实体当模板,发现评审者会逐一审视每处偏离。看懂这个模式后,作者把它写进了 skill 文件,让智能体先找最接近的现有实现、说明偏离之处。作者自嘲这是”为了提升 skill 而写了个 skill”,但希望自己最终不是”一个有好 skill 文件的初级”,而是”写出那些评审意见的资深”。
  3. 手写(自主):作者在 skill.md 里规定,智能体可以随意只读探索,但在自己明确确认计划之前,不许改文件、跑迁移或提交。可实际上作者总是条件反射般地回一句”继续”,没学到什么。于是偶尔刻意用这个暂停自己动手改,最好挑已上线功能里的小改动。这样做的好处包括:亲手接触智能体搭的架构,能真切感受到哪里不对;知道代码”怎么做到的”,而不只是”做了什么”;更懂得节省 token,因为熟悉代码位置能省下文件搜索的开销,IDE 一键重命名也比让 AI 逐个文件改便宜;还能确认自信是靠能力挣来的,而不是靠工具。作者也坦言,入行本就是因为喜欢写代码。
  4. 向导师学习(协作):无论 AI 多强,都替代不了真正资深工程师的指导。作者的 skill 会在遇到需要团队判断的决定时提醒去问资深同事,甚至替作者起草 Slack 消息,但作者发现照抄消息很容易滑向照抄答案,”那才是真正的 AI 接管:你自己放任它发生的那种”。所以作者建议自己写问题,可以让 AI 先帮忙纠正理解,但不要害怕犯错,做那个敢问傻问题的实习生。

结果。 一开始每次用智能体都调用这份 skill,现在一天也打开不了一次。作者意识到,那份 markdown 文件写下的其实是”初级工程师应有的行为方式”;随着这些能力长在自己身上,对智能体的依赖越来越少。好奇、模仿、自主、协作都不来自智能体,而来自智能体运行时你选择做什么。作者提前拿到了晋升提名,最后呼吁资深工程师和管理层一起为新人留出学习空间:这种空间智能体给不了,只能由人来给。

HN 评论精华

讨论约 60 条,一部分在谈底层知识和”在挣扎中学习”的价值,另有相当多评论偏离主题:质疑文章是 AI 写的,以及吐槽 Criteo 这家广告追踪公司的域名被广告拦截器整体屏蔽。

关于学习与基础

偏题:是不是 AI 写的

偏题:Criteo 与广告拦截