10 月 24 日,程序员节。作为一个工程师出身的创业者,我不免地总会对这个日子有诸多感情。1对于喜爱编程的人来说,编程是世界上最有趣的事,这比打牌下棋看电影玩游戏有趣得多,他们可以从一行行的代码中获得不可言说的快乐。曾经是一名程序员的时候,你要问我想去什么样的公司。我会毫不犹豫的告诉你,想去有工程师文化的公司。因为对于一个程序员而言,工程师文化意味着这家公司信奉技术创新,尊重工程师的价值,他们立意图使用更好的技术,来改变点什么难以忍受的现状。而说起国内工程师文化最为盛行的公司,我觉得应该是百度。最近半个月,我零碎时间都在看诺贝尔物理学奖得主杰弗里 · 辛顿的故事。其中有个桥段和百度相关,2012 年,辛顿通过在神经网络方面取得了突破性的进展,他一举把 AI 的能力推到了新阶段。当辛顿把研究成果发布为论文后,百度竟然第一个意识到了这项研究的价值,并迅速发出橄榄枝,邀请他加盟。彼时,Google、微软等公司都还没反应过来。我没想到百度在 AI 上居然有如此之远见和国际视野。在直播中,讲了这段往事后,一个用户告诉我说:这些年,百度确实培养了很多的 AI 人才。作为一个前百度员工,换了几份工作后,他才意识到百度是互联网公司里工程师文化最好的公司。这一点我也有体感。本质上,百度的底色是一家技术公司。前段时间,聊起苹果公司,我开玩笑说,这些年苹果相当于把卖手机卖电脑的钱,都砸进去做芯片了。苹果的芯片,一代比一代强。百度也类似,这些年,你看看财报就能知道,百度把很多的经营利润都投入进去做人工智能了。2今年,我们团队彻底放弃 GitHub Copilot,选择了百度的文心快码。到现在,已经有半年时间,从使用经验看,文心快码无论是在体验,还是代码生成质量方面,都不比 GitHub Copilot 差。好多人觉得国外的产品会更好,这真是刻板印象。我恰好认识百度文心快码总经理臧志,那天和他交流,我问他 AI 代码助手类产品这么多,到底决定产品好坏的核心能力是什么。臧志虽然职位是总经理,但他骨子里仍旧是一名工程师,言语中透露着属于工程师的那份内敛和严谨。只要一聊起来技术,臧志就变得特别兴奋,他说代码生成助手的壁垒,有三个要点。第一,数据。虽然大家都是拿 GitHub 上的开源代码作为核心的训练数据,但怎么组织从 GitHub 上拿到的原材料,这一点非常关键。举个例子,文心快码从去年开始,就在内部找了各个编程语言方向的资深专家,和大家一起梳理出来了对应领域的知识树。虽然这事相当于人工标注,很费精力,但数据树的底子打好之后,模型才能更好的理解代码。事实也是如此,他们之前花的这些笨功夫,现在已经慢慢看到成效了。文心快码的采纳率在业内都处于领先水平。再比如文心快码还做了 API Hub 库。工程师在开发的过程中,总会用到很多外部的 API,但 API 是不断变化的。如果 API 变了,模型却不知道,那最后续写出来的代码肯定会错。于是,他们就做了一个接近实时更新的 API Hub 库,来解决这些问题。第二,场景的丰富度。从产品的视角看,收到的反馈越多,改进也就越多。然后改进越多,效果也会越好。这是一个不断循环的反馈飞轮。比如,这个过程中,文心快码就要考虑一个问题:你给用户推的东西是越多越好吗?肯定不是。有时候多了反而是打扰。有的人喜欢多推,有的人喜欢少推,每个人的编程习惯不一样。一个高阶的程序员,推得多了他会烦,你不能还使劲强推,对吧?但对于一个刚入行的学生来说,你多给他一些新想法,他会更开心。文心快码的目标是:“更懂工程师”,他们希望能做到千人千面——根据用户的习惯,灵活对产品交互作出调整。第三,私域知识。模型是一个相对固定的知识,除了精调外,它就不会变了。而一个程序员写代码的时候,他有自己特定的私域知识,比如代码会有上下文,所以怎么能够用好类似的私域知识比较重要。还是拿续写来说。最简单的方式是把上下文推给大模型,然后大模型返回什么就是什么。这就是套壳,模型的上限决定了续写能力的上限。而文心快码会分析当前的上下文还依赖了哪些文件,以及它对应的私域知识是什么,最后再把这些信息组合整理之后,给到模型。3现在用了文心快码之后,我能感受到我们团队的需求的交付周期和需求的吞吐量都在变好。更关键的是,用文心快码的时候,工程师的编码体验很好。很多 AI 类的工具,总会忍不住打扰用户,比如在不需要的时候给提示,给一堆没用的信息,这可能影响工程师编码的连续性。而文心快码不会,它还挺克制的,总能恰到好处地出现。比如敲完注释,浮出来一个快捷提示,告诉我们可以生成代码实现。比如代码报错了,又能贴心的给出调试建议。它不会越界,也不会贸然的改一大块代码,让工程师感觉没有掌控感。这些细节挺重要。我们的产研团队虽然不大,但大家都还挺挑剔,我没办法强制他们用哪个工具,最终国内的,国内外,结合成本考虑之后,大家还是选了文心快码。其中最重要的考量就是编码过程中的体验,而体验的好坏又取决于产品的交互和生成代码的质量。也不只是我们团队认为文心快码好。我看到一条消息,9 月 25 日,国际权威评测机构沙利文联合头豹研究院发布的《2024 年 AI 代码生成市场观测报告-里程碑》年度报告,从十个维度对百度、阿里、腾讯、科大讯飞、商汤、智谱 AI 等六家中国 AI 代码生成厂商进行了综合竞争力表现评估。结果显示,百度文心快码在技术底蕴、应用落地、产品成熟等八个重要维度均排名第一,成为所有参评厂商中获评第一最多的产品,位居首位。我还知道的信息是,包括吉利汽车、顺丰科技、方正证券、华农保险等上万家企业,都已经在生产环境里使用文心快码了。逻辑也很简单,现在大家都强调降本增效,而多数的企业中,研发成本都占大头。文心快码可以直接提升研发的效率,打个比方,我们公司有 20 个工程师,假设提效 10%,那相当于是我们提升了 10% 的竞争力。这个账很容易算。4AI 代码助手已经成为一个确定的趋势,它是目前大模型领域最经典的应用场景之一。你可以看到,国内外很多互联网公司都在做这个方向的产品,创业公司也不少。现在做 AI 编程工具的大致有两条道路:颠覆式创新和渐进式创新。目前很难谈的上哪条路才是正确的。有些创业产品显然更激进,他们选择了新做一个 IDE,然后让用户迁移到新的 IDE 中。对于臧志来说,摆在他们的面前的选择是:做一个全新的 AI Native 的产品,还是兼顾用户旧有的习惯,逐步迭代为 AI Navive 的产品。因为一下子改变绝大多数用户的习惯,并没那么容易。并且,程序员对自己喜欢的 IDE 情有独钟,想让大家换 IDE,需要很高的说服成本。所以,他们的第一步是用 IDE 插件的方式,先让大家低成本地用起来,尝到甜头。另外,从技术采用生命周期的角度看,一款产品,从诞生到走向成熟,必然会经历五类人群,他们分别是创新者、早期采用者、早期大众、晚期大众和落后者。越往后走,产品面对的人群就越保守。每个产品都不缺“狂热的用户”,但每个产品的扩散也都需要遵循技术采用生命周期的传播规律。可想而知,如果选择了需要换 IDE 的路线,那受众用户群会缩小很多。文心快码的产品设计出发点是思考怎么才能兼顾更多用户的体验。让用户下载一个新的 IDE,以及让用户下载一个插件,这两件事情的难度不一样。臧志告诉我,做 IDE 插件,兼容各个版本的 IDE,并不比魔改一个 IDE 的研发成本低。有的企业,用的 IDE 是十年前的版本,但插件也得做好兼容。很多人觉得颠覆式的 AI 代码助手在技术上领先很多,其实不是的,更多的差异还是大家在产品路径上的选择不一样。拉长时间维度来看,文心快码本身也是想做一款 AI Native 的工具。只是从用户渗透的角度看,他们认为先从插件切入的渐进式创新路线更有利于产品的发展,也对用户更友好。5我忍不住感叹,这真是一个属于程序员的最好时代,AI 的出现,能够极大程度提升编码的效率。十年前我还在锤子科技,当时作为团队负责人,我费尽心思想提高产研团队的效率,但无奈当时没有 AI 类的产品,我的很多努力在现在来看,收效甚微。每个工程师都想去做创造性的事情,而不是陷入到例行的重复之中。而这些重复性的工作,比如写单元测试,文心快码是能够接管过来的,并且我相信随着产品的提升,能力也会越来越强大。过去,程序员经常会自嘲自己为码农。言外之意就是和农民工差不多,一个是物理世界的搬运工,一个是数字世界的搬运工。这句话虽然说起来有些消极,但无可否认,他确实也反映了一部分的客观事实。这些年来,从最原始的 IDE 代码补全,到各种各样的框架,以及最近几年流行的低代码,我理解都是在试图解决没有技术含量的、枯燥的 CRUD 类工作。这些年,软件研发领域,大家其实都在不断的提高抽象层次。提高抽象层次的背后其实就是在做封装和复用。包括更高级的编程语言、新的框架、低代码平台,这些都是在干这些事情,把一个函数抽象为库,把一个库抽象为组件。大模型其实带来的是知识和经验层面的复用。这两类复用叠加在一起,自然的结果就是我们可以少写一些没有技术含量的代码。看来,我们很快就要彻底告别“码农”这个称号了。那天,我和臧志聊天,他说了一段让我很感动的话,姑且就以这段话作为今天文章的结尾吧。我们想做一个工程师每天都爱用的编程助手,它可以提高工程师效率,可以帮助工程师做那些他不愿意做的事情。单个工程师的效率提升了,研发团队的效率自然也就提升了。过去这些年,很多工程师总是靠加班垒代码,我们不能否认这样的事实,过去互联网行业发展太快了,其中很多系统就是需要靠时间来堆。文心快码之类产品现在正慢慢变强,我相信有一天它能帮助更多的工程师成为 10x 工程师,大幅度地提高编写代码的效率。这个一定能实现的。