在 SourceForge 播客中,编辑 Beau Hamilton 采访了 Sourcegraph IC 工程师 Steve Yegge。Steve 在软件开发领域有丰富的工作经历,他分享了自己在亚马逊和谷歌等大型科技公司的经历,以及这些公司之间的文化差异。
这次对话主要讨论了将人工智能整合到软件开发过程所带来的挑战和机遇,并特别强调开发人员需要适应新的工作流程和工具。Steve 从多个方面分享了自己的见解,涉及编程演变、AI 编码助手的影响以及编码的未来。这次对话探讨了人工智能对编程和软件开发的革命性影响,讨论了编程语言的演变、各公司采用人工智能的程度差异,以及将人工智能工具集成到开发工作流程中所需的文化转变。Yegge 强调,开发人员必须适应这些变化,否则就有可能被行业淘汰。
我们对本次对话进行了翻译,在不改变原意基础上进行了删减,以飨读者。
对话要点:
-
科技公司之间的文化差异会严重影响员工的行为和工作效率。大多数公司都处于不同的人工智能采用阶段。要将人工智能融入开发,文化方面的转变是必要的。
-
CHOP(面向聊天的编程)体现了开发人员与代码交互方式的转变。作为领导者,熟悉技术有利于保证其产品开发见解的相关性。
-
未来,面向代码行的编码可能会减少,而面向代码块的编程会增加。开发人员需要适应新的工作流程,其中包括 AI 工具及其局限性。
-
阅读能力是人与 AI 有效沟通的关键。适应 AI 工具的重要性怎么强调都不为过。
-
人工智能中的 Agent 概念可能不像预期的那么有效。
Beau Hamilton:大家好,我是主持人 Beau Hamilton,SourceForge 的高级编辑和多媒体制作人。今天,我们将与 Sourcegraph 工程主管 Steve Yegge 进行交流。
他正在打造世界上最开放、最全面的代码智能平台,同时他也是业内颇具影响力的程序员。他有自己的博客,主要探讨与编程相关的方方面面,并分享一些热门话题。他还有自己的维基百科页面,从上面你可以看到他是一个货真价实的程序员。
Steve Yegge: 大家好,我是 Steve,很高兴参加这个节目。上世纪 90 年代初,我就进入了这个行业,非常早。我只在几家公司工作过,总共也就五家。我以前在一家名为 GeoWorks 的公司工作,他们是做汇编语言的。我后面会详细谈谈这段经历,这很重要。然后,1998 年我直接去了亚马逊。那是很久以前的事了,当时那里有 250 人。
我在亚马逊工作了六年半,然后我去了谷歌,在那里待了 12 年半,做了很多事情,但很多都与 DevTools 有关。之后,我去了东南亚的 Uber(他们叫 Grab)。那是一次奇妙的冒险,很多方面都让人匪夷所思,也真的很酷。但后来大流行病袭来,我没法再旅行,所以就没再去了。
然后我用了一年的时间静下心,又花了一年的时间考察公司,看看自己想做什么,因为我很挑剔。我苦于这种“老鼠赛跑”已经很久了。我想找一个能让我开心的地方,给我不像在工作的感觉。Sourcegraph 轻松地赢得了这个评价,这家公司真的非常适合工作。他们是远程的,员工分布在哥伦比亚、哈萨克斯坦等地的小镇上。我觉得,这真的很疯狂,这会面临一些挑战。
我是以工程主管的身份加入公司的,我在高管团队中担任这个职位已经有一年了。在此期间,我帮助公司转型成为了一家人工智能公司。这是一个巨大的转变,彻底的转型是创新者的难题,我们成功渡过了难关。
然后我意识到,自己被人工智能甩在了后面,我开始恐慌,AI 就是问题所在。我认为自己需要重新回到人工智能领域,于是我现在成了一名工程师。我喜欢这份工作。
Beau Hamilton :你得到了实践经验。我想每个人都或多或少地喜欢这样做,因为从事业务相关的工作时,就会卷入方方面面的事情,没那么有趣。
Steve Yegge: 每个人都希望如此。我想每个做过编码的技术经理都希望能继续编码,但是领导工作会耗费你很多精力,“你往往会离技术和亚马逊的新发现越来越远”,RDS 的一位副总裁跟我说。RDS 是亚马逊云科技的关系型数据库存储。他说,根据他们的经验,如果你有超过 11 名直接下属或更多,那么在未来五年内,你将失去所有的技术能力。没错,这就是亚马逊根据他们的经验得出的结论。
因此,很多公司在看到这一点后,都会认为我们需要减少直接下属,建立一个层次更多的组织,这样人们就可以花更多的时间与直接下属在一起,成为更好的管理者,并提高技术水平。但亚马逊却说,“算了吧,我们就给每个人 15 个直属下属,他们都是非技术人员,由技术人员来管理。”于是,亚马逊走了一条非同寻常的路。他们所有的经理都是非技术人员。我指的是部门经理级别。
Beau Hamilton:似乎很有道理。当你离实际技能越来越远时,你就会开始失去一些技术方面的东西、和技术失去联系,这最终会使产品打折扣。
Steve Yegge: 是的。如果你丢了技术,就会很难过,就像如果我今年没有回去做工程师,关于编程发展方向、CHOP 以及所有那些东西,我就不会有任何见解。所以,我觉得我现在在帮助指导产品开发方面做得更好了。这是两种不同技能的组合,工程师和工程领导者之间几乎没有重叠,而且他们都是全职工作。所以这很难。
Beau Hamilton:显然,你的经历相当丰富。虽然我想把重点放在软件方面,但我觉得还是得提一下你曾经有过核反应堆操作员的经历,我觉得这很酷。
Steve Yegge: 是啊,比你想象的还要可怕。那绝对是个可怕的地方。比如,有一次我们不小心把一个人锁在了反应堆舱里。要知道,那是一个四层楼高的反应堆,全部都漆成了白色。油漆很厚,即使反应堆关闭时也很吵,因为有水泵。
我们把他锁在里面 8 个小时。幸运的是,我们没有打开反应堆,所以他活了下来。但通过这个故事,我想说,那份该死的工作真的很疯狂。
Beau Hamilton:这我信。你在亚马逊工作了几年,帮助他们制定了 API 战略。你帮助谷歌构建了应用引擎和云基础设施。如果我说错了,请随时纠正我。你还曾在新加坡一家名为 Grab 的共享出行公司工作过。你还在开发自己的视频游戏。广义上讲,你可以向着任何你喜欢的方向出发。但能不能告诉我们,你最初是如何被软件开发吸引的?
Steve Yegge: 在华盛顿大学上硬件课程的时候,我以为自己会成为一名计算机工程师。但我非常讨厌硬件。我不知道为什么,只是觉得那不适合我。可能是华盛顿大学的先修课程和顺序有问题。他们让你选课,但你却没有数学工具,所以你会很吃力,因为你还得学数学。
关于工程学,那是很久以前的事了。在 80 年代末,编程并不是什么了不起的大事。微软当时已经相当大了,每个人都认为他们只是侥幸而已。
作为程序员,你就是个魔法师,你可以创造奇迹,可以让任何事情发生。所以对我来说,都不用考虑什么,我就是想成为一名程序员。我几乎从十六、七岁时就知道了这一点。
我知道,很多人开始编程的年龄比这还小。我在十几岁的时候就开始接触电脑,那会的电脑像汽车一样大。我用惠普计算机自学了一个程序,它提供了一种基于堆栈的语言。我做了一个多边形渲染引擎,3D 的,渲染一个甜甜圈要花半个小时。但我很喜欢,而且从此一发不可收拾,我已经做了 40 年了。
Beau Hamilton:听起来,这很大程度上是一种自我引导。你发现了自己的兴趣所在,它就自然而然地发生了,但有没有想起什么特别的经历或人塑造和影响了你?
Steve Yegge: 这个问题非常有趣。要说的话,那应该是我在 GeoWorks 的同事。亚马逊的人买下了西雅图办公室,有 20 多名 GeoWorks 的工程师去了亚马逊。他们是跟着我去了那里。几个月后,亚马逊说,他们绝对是所有收购项目中招聘门槛最高的。
很多前 GeoWorks 的人后来都在亚马逊混得风生水起。那些人来自伯克利,大部分来自斯坦福大学。他们是 Lisp 专家、是 Emacs 专家、是 Tickle 专家。他们喜欢自己写工具。虽然是汇编语言,但在我的经验中,他们构建的工具链仍然是无与伦比的。比如,他们构建的调试器就比我们的好,让你可以方便地在线修补程序,那是个非常有趣的圈子。
他们教给我的是,学习 Emacs。我从来没有后悔过。我知道,这将会是一件我必须花费数年时间去学习的事情,每天学习 Emacs 的一些新东西。我真的花了好几年的时间,每天都在想今天要学 Emacs 的哪些方面。这对我的整个职业生涯来说都是非常重要的,因为它是一个非常强大的工具。
他们还教会了我非常好的软件工程实践。你知道,他们都非常非常聪明,教会了我要有更高的目标。后来我去了亚马逊,贝索斯很疯狂,我学会了要把目标定得很高。
Beau Hamilton:你在亚马逊和谷歌这两家财富 500 强的大公司工作过,不同的企业文化如何塑造了你的工程设计方法?
Steve Yegge: 离开亚马逊后,我在谷歌的第一个月就像是在减压。我没有意识到我是那么紧张,直到我离开了几个星期之后。对于亚马逊,你必须了解的事情是,他们是在战斗。在内心深处,他们真的认为自己是在打仗。这意味着一切都非常严肃,没有多少幽默可言。
一切都非常专业,雷厉风行、近乎军事化。我在海军服过役,这些从他们的效率和工作方式上可以看出来。但在文化上,他们是如此的不同。他们非常焦虑,高度神经质。那里的每个人都有点疯疯癫癫的,感觉很奇怪。但是,我看到有人离开亚马逊,都是些非常令人讨厌的人,然后他们去了谷歌就变成了最棒的人。所以在某种程度上可以说,人是环境的产物。我的意思是,你去了一家公司,就会开始像公司里的其他人一样行事。在亚马逊,不管什么事,你必须先变成个混蛋才能做成。
Beau Hamilton:有意思。这会不会只是个幌子,是谷歌通过公关和品牌营销灌输给员工的一种认识?
Steve Yegge: 谷歌采取了完全不同的方法。谷歌就是想要吸引世界上最聪明的人,要让在谷歌工作比在哈佛终身任职更有趣、更好玩。我到谷歌的第一周,我旁边坐着一位哈佛终身经济学教授,名叫 Mike。他说,“是啊,我是终身教授,但我刚告诉他们我要走了。”他们就说,“你不能走,你有终身教职,你在这里永远有工作有办公室。”他就说,“是的,但我还是要走了。”然后他就去了谷歌。
这就是谷歌的做法。我上过的所有课,他们都把写教科书的人给请来了——所有的教授、所有写书的人。我加入谷歌时,他们都在那里。这让人难以置信。亚马逊有一种“反博士偏见”,这种偏见的表现绝对是滑稽可笑的。他们认为博士虽然无所不知,但却并不做事。在亚马逊,他们几乎是反智的。这很有趣。现在,他们对人工智能之类的东西了解得更多了,这种情况可能会有一些改变,但这种文化上的东西,通常会伴随你几十年,你无法改变它们。所以亚马逊仍然是我所说的故意无知的公司。
Beau Hamilton:这真是很有趣,他们之间的文化对比竟然如此鲜明。那么,你在这些不同公司的经历,最终是如何把你带到 AI 编码助手领域的?
Steve Yegge: 这又是个好问题。你知道,我发现我总是因为想要亲手做更多的事情而感到沮丧。很多人找帮手来解决这个问题。他们成了技术领导者,他们有了一个团队。如果有一群人帮你,你可以实现更大的野心。
但就像我想成为超级英雄一样,我想打造一个成功的大型视频游戏。我觉得我可以想像出来,那为什么不能创造出来呢?我真的很努力,全身心投入其中。那是在我离开亚马逊后、去谷歌之前。
对于初学者来说,Java 简直要了我的命。也许我应该用 C++,因为它是一种更强大的语言。但我选了 Java,因为我想用它来提高工作效率。在某种程度上也确实如此,但 Java 的表达能力实在太差了。它没有一等函数之类的东西,所以如果你想用 Java 构建一个足够大的东西,它就会开始超线性增长,这太可怕了。我对此感到非常沮丧,于是我就读了所有能找到的书。
我去了巴诺书店,买了所有与设计模式、重构等相关的书籍,从头到尾读了一遍。我当时想,这是怎么回事?为什么它这么慢?刚开始的时候,我编码的速度飞快,而现在代码已经有 10 万行或 20 万行,我开始陷入困境。以前我花一天时间就能做完的事情,现在要花一周的时间。这到底是怎么回事?我很生气。
我开始关注其他编程语言和工具,并开始在博客上发表相关文章,比如号召大家开始选择更好的语言等等,都到了痴迷的程度。我发现自己开始进入开发工具领域。我在亚马逊一开始我做的是 TPM,然后做了几年客服工具,后来进入了开发工具领域,因为我当时想“得让这一切变得更快”,为了所有的开发人员。
同样的事情也发生在我去谷歌之后。在那里,我做了一些很酷的事。然后我就想“管他呢,我要修复我们的工具。”于是我就去做了 Grok,这也是我创立 Sourcegraph 的最终原因。实际上,Sourcegraph 就是我在谷歌所开发的东西的开源版本。
Beau Hamilton:现在我们有了这些人工智能编码助手,它们可以为我们编写代码。这是否说明,小孩学编程就就不再那么重要了呢?
Steve Yegge: 事情很多时候就是这样。要知道,即使是在五年前,指望一群孩子学会编程几乎是不可能的。但有人向我表示,他们八岁的孩子正在使用 GenAI 和编码辅助工具写代码。这就是现在的情况,任何人都可以写代码。写代码的实际过程确实变得容易多了,或者说,它正在变得更容易。
我们正在从你必须写代码转向 LLM 写代码,而你只是和它讨论代码。对于刚刚进入这个行业的人来说,这比直接学习如何编写代码要容易得多,所以我认为这是一个巨大的希望。我们会有越来越多的人参与进来。只是现在面向聊天编程(CHOP)的工具还太新了,你不能指望低年级的孩子就能学会怎么做。但是在一两年内,我想所有的孩子都会像这样编程。
Beau Hamilton:能不能多谈谈 CHOP?什么是 CHOP?它对开发者意味着什么?
Steve Yegge: 当然,所以我要提出一些大胆的主张。我们俩可能都会收到很多对此愤愤不平的邮件。我说过,在职业生涯的前五年,我都在使用汇编语言编程。这门语言只有寄存器,没有变量、没有作用域、没有控制流、没有语句或表达式,甚至连运算符都没有。四、五十年来,全世界都是这样编程的。人们拒绝转向 C 和 Pascal 等高级语言,因为所生成代码的性能比不上有经验的汇编程序员手工编写的代码,因此过了很长的时间汇编语言才被淘汰。那就是我编写汇编程序的原因,因为我从事的是系统编程,我们编写的代码比 C 编译器还要快。
所以我们被看不起,哈哈哈。你得用编译器,你得用高级语言,我们才是真正的程序员。当然,它死掉了,因为人们被效率征服了,用高级语言编写程序的效率是用汇编语言的五到十倍。因此从经济角度来看,汇编语言的消亡是不可避免的。
我们今天所做的编程是面向行的,过去四、五十年我们一直是这么做的。我们所有的工具都是面向行的,代码是一行一行完成的。你可以把这称为语句和表达式编程,但我们还是把它叫做行编程吧,就是个称呼。每个人都认为这是当今唯一的编程方式,但它正在消亡。
就像汇编语言一样,五年内就会彻底消失。你将不再写代码,不再写代码行,而是写代码块。我们正在进入面向块的编程时代。在这个层面上,你的原子构件是函数、类和模块。如果其中一个模块出了问题,或者你需要对其进行扩展,你只需要按提示重写整个代码即可。整个东西,一次完成。
这与 15 年前 RepRap 出现时的 3D 打印技术非常相似。在 2004 年、2005 年,终于有人发明了一种能打印自己的 3D 打印机。这非常了不起,你只需订购一套它打印好的零件,然后把它们组装起来。很快,你就拥有了一台 3D 打印机,虽然它算不上很好。当然,没有多少人会去组装一台 3D 打印机。这是一种非常小众的技术。但 15 年后的今天,3D 打印技术已经能够打印生物器官,甚至在太空中打印工具。3D 打印技术正在取代流水线和制造业中的大量工作。但在当时,这似乎并不可行,只是一个类似概念验证的东西,人们并没有真正看清它的发展方向。
而且,3D 打印机很容易让人联想到:“好吧,那你可以在《无主之地》中 3D 打印一辆汽车,然后开车起飞”。这就好比能 3D 打印出一个实际的物品,比如一个可以上色的微型模型或者一个汽车零件,和能打印出一辆完整的汽车,这两者之间的巨大差距。显然你做不到。我之所以这么说,是因为当人工智能能够“3D 打印”代码时,人们也得出了同样愚蠢的结论。因为 GenAI 实际上就是一台打印代码的 3D 打印机,但你提供的不是 3D 物品的规格说明,而是提示和上下文,而它会为你打印代码。
也就是说,作为开发人员,你现在要使用更大的构件,而你并不想自己编写它们,你只是想让它们为你服务。这样你就可以更加专注于函数、类或模块的 API,以及与其他系统之间的 RPC 调用和设计方面,你的工作层次会因此得到提升。
Beau Hamilton:我现在都能想象到邮件纷至沓来的场景了,因为你刚才说的那些话。
Steve Yegge: 自从我发表了题为“初级开发者之死”的文章后,我一直在深入研究这一现象。同时,我也与许多非常聪明的人进行了交流,他们主动找到我,分享了他们对这个问题的看法。我们的讨论肯定比文章中所涉及的内容更为细致。
他们并不会消失,但肯定在发生变化,就像我从入学到完成学业期间,3D 制图方式所经历的变化一样。我在 GeoWorks 做了一份全职工作,因此我花了更长的时间才获得计算机科学(CS)学位。实际上,我是在 1991 年和 1995 年,或者 1992 年和 1996 年,分别选修了计算机图形学课程,两次选修相隔了大约四年。在这四年里,图形程序员的角色已经完全变了。这就是我再次选修这门课程的原因,因为图形学领域在早期发展得太快了。
我们学习了如何渲染线条、多边形以及如何着色,但四年后,所有这些东西都变成了硬件或者你使用的引擎的一部分,关注的是更高层次的问题,比如场景构建、对象管理、物理效果和特效等等。但那只是四年后的情况,而现在图形处理技术已经非常先进了。作为图形程序员,你所做的并不是仅仅渲染多边形。
如今,在编程领域也出现了类似的情况,程序员的角色正在发生变化。可以说,这个角色正在逐渐消失, 但我们仍然会有初级工程师,只是他们所做的事情不同了。我们面临的挑战是,沿着抽象的梯子向上爬升。当你有了更好的构件时,3D 打印机就可以打印出汽车部件。而现在,很多人只关注于打印汽车,而不是制造火花塞。
当你理解了这一点,从某种意义上说,你的资历也会自然而然地提升,因为你所关注的内容通常是资历更深的人所关注的,比如架构,而不再是编程语言的细节或某个函数的内部语义。这种情况在资深人士中引发了一些偏见,这才是真正的问题所在。很多人都为此感到愤怒。他们会说,“嘿,我的孩子刚刚拿到计算机科学学位。你做了什么?你毁了他的工作!”所以,你可能就理解了,为什么他们认为我错了。他们高估了技术变革的影响力。
Beau Hamilton:一般来说,任何新技术的出现都会遇到阻力,因为需要付出努力才能适应,所以人们害怕改变。
Steve Yegge: 的确如此。但是,只要我们深入研究一下细节,就会产生疑问:为什么会很难呢?人们抗拒的学习曲线在哪里?我发现,对于很多事情,CHOP 要求你有很高的容忍度,而现在,很多开发人员都不具备这样的容忍度,这包括模型幻觉、工具排序,以及提示和上下文管理。
所有这些事情都让人们觉得很难,因为你必须打字非常快。你必须能够快速阅读,因为你要与 LLM 进行数百或数千行的对话。在解决问题的过程中,这种能力会不断积累。还有上下文,你必须反复浏览,才能找到你需要补充的信息。所以,很多人读不懂、写不好,甚至连 LLM 的提示都说不清楚,就像他们无法像自己编码时那样解释自己的需求。
老实说,当我们很忙时,阅读确实会比较困难。在拥挤的飞机座位上,我们都会觉得打字困难。CHOP 是有点难。此外,模型幻觉使得工作流程与人们的习惯大相径庭。模型会一直产生幻觉,你得到的每个答案都有可能是错误的,因此你必须培养第六感。
作为工程师和程序员,你必须开发出一套以前不需要的技能:一套验证技能,因为编译器会告诉你,它生成的代码是完美的、集成开发环境所做的重构是完美的。这应该是可以证明的,它们不会做无法证明正确的重构。这就让我们所有的开发人员都形成了一个习惯,认为工具生成的代码是正确的。
大部分时候,我们的开发工具都是正确的。当它们正确时,它们确实非常出色。不过,你必须进行更彻底的测试、更精细的调试以及更仔细地查看日志。幸运的是,LLM 可以帮助你解决所有这些问题。因此,一切都将变得更容易,但同时,工作流程也会有所不同。基本上,你正在处理的是一些存在问题的优质代码,你的任务是将其转变为不存在问题的优质代码。在使用 LLM 时,可能需要更多的迭代次数。
这是一件非常复杂的事情。基本上,人们之所以在使用 CHOP 时感到困难,是因为目前使用起来还有些麻烦,工具需要变得更便捷,就像 3D 打印在过去 15 年里的发展那样。
Beau Hamilton:3D 打印机是一个很好的类比。我觉得这很吸引人,因为你可以用自己的母语来开发。所以学习一门全新语言的学习曲线并不一定像学习外语那样。从这个角度来看,这让事情变得简单了一些,对吧?
Steve Yegge: 我意思是,你可以要求 LLM 从字面上解释代码的任何部分,并且可以根据你想要的任何经验水平来进行解释。无论是向五年级的小学生解释,还是向大学生解释,都可以。你完全可以随意定制,它绝对会做你想要的任何事。它可以重做任何你想让它重做的东西,并向你做出解释。所以,你可以边学边做、边做边学,这确实非常有趣。
我自认为是一名程序员,而不是计算机科学领域的其他任何角色。这是我职业生涯的重点。编译器、解释器、语言设计以及特性,这些看起来就像一门失传的艺术,就像被烧毁的绝地武士书籍一样珍贵。
20 年或 30 年后,编程语言是否还存在,或者那些大型语言模型(LLM)是否会发明自己的编程语言,使它们更容易读写,而我们只需编写规范?我不知道,但可以肯定的是,50 年后这些变化一定会发生。
Beau Hamilton:是的,这让我想要学习一门新语言,比如爱尔兰语和盖尔语,就像爱尔兰人或苏格兰人会学习这些语言一样,这是一种民族自豪感,虽然在日常生活中并不会用到,但也因此它们要失传了。
Steve Yegge: 是的,就像现在大多数程序员都不会使用汇编语言一样,汇编语言正在成为一门失传的艺术,但这并不重要,因为它是小众的东西。世界正在改变。如果你真的非常重视代码补全功能,比如自动为你补全一行甚至多行代码,那么当 LLM 为你编写所有的代码时,你会猛然发现代码补全功能变得毫无用处。
Beau Hamilton:现在各大公司的开发团队都在使用 AI 和 CHOP,他们是在谨慎地尝试还是已经在使用这些 AI 编码工具?
Steve Yegge: 就拿 GenAI 来说,当它出现的时候,编码系统、ChatGPT 等技术已经覆盖了整个领域。有些公司会说,“我们不能使用人工智能,因为 X、Y 等原因,我们根本用不了。”这些公司真的非常落后,在我了解了这些公司的情况后,就不再使用他们的产品了。还有一些公司,他们已经在执行人工智能的 10 年规划,这真是令人惊叹。这些公司以前就实施过十年规划,所以我知道,他们不是在开玩笑。
现在又得重新回到 CHOP 这个问题了,因为他们可能采用了“代码补全”技术,并且有很多与之相关的术语和行话,比如补全接受率是多少?有多少代码是 AI 编写的?但所有这些都会消失。他们都还在修修补补,这还不是人工智能的稳定状态。
有几个公司正在使用 CHOP。我曾跟你提到,在我说“初级开发人员可能会消失”之后,我收到了许多人发来的表达愤怒的邮件。实际上,一些大公司联系了我,这些公司规模大、资金雄厚、技术先进、人才济济,并且非常关注开发工具链。他们表示:“这很有意思,我们也注意到了这种现象。”他们更倾向于招聘资深开发者,因为他们可以使用 GPT 来编写所有代码。正如我之前提到的,人们开始转向面向聊天的编程方式,我们已经在现场进行了验证。
但大多数情况下,我想说的是,现在全世界可能只有不到 1% 的开发者在使用它。这完全是个比较边缘的东西,现在还太难了。我对 Emacs 和操作系统非常熟悉,我一分钟能打 120 到 130 个字,我知道我在做什么,所以我可以让它做我需要它做的事,但大多数人还做不到这一点。
我在宣传它,但与此同时,在我们内部,在 Cody,我们的团队正在非常非常努力地工作,以确保所有这些东西都更加直观。这样人们就可以直接使用,而不用去理解它。
Beau Hamilton:这似乎又回到了文化方面。试图让每个人都有一样的认知,这是官僚体系方面的。
Steve Yegge: 当然,这有文化方面的原因。你正在改变你的编程方式,而这将会带来很多你必须处理的连锁反应。比如代码可能能将就着用,但很糟糕。这种情况很常见,LLM 生成运行良好的代码,就好像它很好地完成了代码。它会完全按照你的意图行事,但你看过之后就会觉得,“天哪,这个代码的设计简直是糟糕透顶。”所以,你必须养成反复检查的习惯。
如果你不是很有经验的程序员,你无法仅凭一眼就判断代码的质量,尤其是当你对那门编程语言不太熟悉时。就像我,我对 Scala 语言就不熟悉,因此如果让我看 Scala 代码,我无法判断它是否正确或它是否优秀。
所以,你还需要通过第二道程序,即去找 LLM 然后问它,“你刚才给我写的代码是好代码吗?”你可以用不同的方式提问。你可以说,“你能对它进行安全审查吗?你能确定这段代码是否符合语言习惯吗?我的代码审查员会怎么说?”就像我跟你说过的验证步骤一样,向它提出一堆关于代码的问题。这是另一种工作流程。
你提到了文化,这在文化上是一个很大的变化:在进行代码审查之前,与 LLM 讨论代码。我们都能察觉到这是一个趋势,但也存在反对的声音。我仍然听到有人表示,他们希望这一切消失,以便能够回到正常的工作状态。在这个行业里,有许多真正的铁杆保守派,他们不愿意学习人工智能。这些人最终可能会从行业中消失。这就是我所说的“初级开发者之死”实际上是“顽固开发者之死”。
Beau Hamilton:在日常生活中,和朋友家人谈论人工智能也是如此,他们还是持怀疑态度,很多人到现在还没真正用过 ChatGPT。
Steve Yegge : 投资者的钱都到哪里去了?每个组织都在数十亿地往里投,它们是如何改变我们的生活的?我只知道两个用例。一个是编程助手已经成为一个杀手级应用,它们绝对有效。另一个是,在制作 PPT 时用 Gemini 生成一些糟糕的图片。差不多就是这样。
我是说,ChatGPT 在生成大量文本等方面确实做得很好。这非常好,但其他我们以为会出现的技术,都还需要很长时间才会出现,因为幻觉和人们对它的容忍度。一个时不时胡说八道的 Alexa 是卖不出去的,或者他们必须改变人们的行为方式,他们得给它加上很多注意事项。
因此,这是一个过渡、一个过程、一种转变,它不仅发生在编程世界之外,也发生在编程世界之内。你能做的最好的事情就是加入进来,尤其是作为程序员,加入进来并学习它。学习如何成为一名提示工程师,学习如何提示、如何管理上下文,学习所有的基础知识。你会突然发现,如果你没学过这些东西,两三年或三四年后你可能就会失业。
Beau Hamilton:我认为,人们已经投进去这多钱,但现在还没有很多实用的案例。他们还没有想出如何货币化,以及如何实现一个收入系统。但这是个将彻底改变和颠覆行业的领域,如果现在不加入,你就会被甩在后面。可以看看 OpenAI 的 Sora 项目,它将从根本上取代很多电影工作室,用人工智能生成不同的场景。这只是一个例子,我觉得还有很长的路要走。
Steve Yegge: 有趣的是,我不认为电影制片厂会消失。我觉得它要么变小,要么拍更多电影。肯定会发生的是,他们能更快地拍出他们想拍的电影。我的意思是,你还是需要有一些有创造力的、有良好创作品味的人。这样才能真正地拍出一部像样的电影。
Beau Hamilton:让我在我的小房间里都能制作出一部故事片。
Steve Yegge: 没错。就像我一开始说,因为有了编码助手,现在人人都会编码。当然,每个人都将能制作电影,生成高质量的内容。这就是我所说的 3D 打印,你可以获得这些构建块,然后打印更大的块,比如一部电影的整个场景。你还可以重新打印,直到正确为止,因为它是软件,然后继续电影的下一个场景或下一段代码,诸如此类。
有很多学科都在被取代,或者许多初级人员被排挤出局。 仔细想想,它们消灭的不是工作室,而是那些承接外包工作的海外公司的动画师。 那些角色正在消失,所以拍电影的整个过程又要重新开始了。如果 GenAI 能让这个过程变得更快、更民主,我觉得这一点真的很好。
Beau Hamilton :回到 CHOP,你提到了一些趋势,在这个领域还有其他的趋势吗?
Steve Yegge: 我的老板也问过我这个问题。因为他们会说,“哇,你做了预测,你还有别的预测吗?”但问题是,这个问题很大。这就好比是程序编写、部署和运行方式上的结构性转变。对整个行业来说,这都是一次巨大的变革。因此,我认为,在这个大背景下,可能会有很多认识和发现之类的东西,其中有许多我都还无法预测。
我最近一直在做的事情更多的是理解,比如为什么它还没有一飞冲天?它的难点在哪里?我得出的结论就是因为提示难、打字难、阅读难。它一定会发生,但现在还早得很。
Beau Hamilton:似乎阅读和写作这两个领域可以有一些重大的改进。为什么人们不精通这些领域,也许这就是原因。
Steve Yegge: 是啊。我想为下一代,即 Z 世代和 Alpha 世代说几句话。我听说,由于成长环境的不同,阅读数千行文字对他们来说变得困难了许多,而这恰恰是 CHOP(可能指某个组织或项目)需要做的。我建议那些希望在各方面都做得更好的人,要提高你们的阅读能力。我今年 55 岁了,我正在学习如何进行钢琴视奏。我弹得还不错。虽然我是几年前才开始学的,人年纪大了学得就慢了,但教自己阅读可以很好地开阔视野,我现在可以演奏任何曲目。
如果你想写博客、想拥有影响力、想成为一名出色的程序员、想擅长编程,我认为你真的应该认真考虑并切实提高你的阅读能力。你能做到的。这不是与生俱来的能力,而是可以通过练习来提升的技能,就像杂耍、绘画或其他技能一样。你掌握得越好,你的生活就会越轻松。
所以我的建议是,多读书。无论是什么类型的书,只要找到你感兴趣的内容。不论是漫画书还是其他,多读总是有益的,因为这样可以训练你的英语词汇记忆,帮助你掌握它。这对于你需要做的事情是必要的,比如向 LLM 表达你的需求。
Beau Hamilton:你读的这些东西会让你成为自己的 LLM。
Steve Yegge: 是啊,这就是我的想法。在某种程度上,我们都是 LLM。
Beau Hamilton:这是个很好的建议。这也是我需要改进的地方。我觉得我一直在阅读一些简短的内容、文章和专题报道。
Steve Yegge: 我们都需要,对吧?所以我们必须告诉自己,我从现在开始就要去读一些长篇幅的内容。
Beau Hamilton:是的,坐下来,保持专注。
Steve Yegge: 强迫自己去做。我买了一本书,同事推荐给我的,叫《人类简史》。这是一本 Malcolm Gladwell 风格的书,读起来非常不错。选一些你认为有趣的东西来读,比如体育之类的,只要是长篇的,每天读。每天读一篇长篇的东西。
严肃地说,艺术已开始消亡,这会导致真正的问题,因为你仍然需要能够阅读,至少在未来 10 年、20 年是这样。
Beau Hamilton:你了解什么行业热点吗?
Steve Yegge : 行业热点很难说,你知道,一不小心就成股票建议了。但我要告诉你一个与我们一直在谈论的话题有关的问题,那就是经常有人来问我,Agent 怎么样?这其实真的很重要。
Agent 可以构建更高级的东西。它可以为你 “3D 打印汽车”, 构建更高级别的软件。比如,Agent 可以构建一个 iOS 应用程序或 Android 应用程序什么的,也可以构建一个可以部署的系统。你给它一个规格说明,它就会帮你写好所有的东西,包括测试、部署、版本控制等等。
所以我的看法是,如果你投了很多钱在这上面,那么你的钱是拿不回来的。抱歉,这是一个让人生气的事实:他们的投资投错了地方。但是,你不能这么做,那不会起作用的。从根本上说,他们把你想做的事变成了有效的 AGI(人工通用智能),但问题是,即使是人,在解决软件问题时也会遇到困难。软件很难。每个问题都是独特的、不同的,每个环境或每家公司都有自己的挑战。
因此,我们经常会发现两个经验丰富的资深程序员聚在一起,尝试共同完成某些任务。然后我们会思考,我们完成了什么?接着我们在那里卡住了 15 分钟。每当这种情况发生时,我们的 Agent 就会停滞不前,因为它遇到了一个连人都不知道如何解决的问题,或者它走错了方向,导致你损失了一大笔 GPU 费用。我还没有看到任何与此相关的微弱证据。现在有很多公司都在研究它们,不仅仅是 Devon 或者 Devlin. 每个人都想做 Agent,因为他们认为“3D 打印机即将到来”,所以我们需要“3D 打印汽车”。不,汽车还是会像现在一样手工打造,3D 打印机机会帮忙制作零件。
因此,人们得出了错误的结论,认为 Agent 就是个笑话。我想说的是,它们总有一天会工作的。我说的“工作”是指,它们将能够解决越来越复杂的问题,但最终决策还是得由人来做。直到我们实现 AGI,这就是为什么我说他们在努力构建 AGI,这只是一个影响少数人的热门话题,但它将会非常热门。
Beau Hamilton:这让我想起了埃隆·马斯克最近的自动驾驶汽车展。他试图说服大家,这些自动驾驶汽车将是未来的趋势。它们将四处行驶,为你赚钱。
Steve Yegge: 我还想提一下另一个热点,这也是非常重要的一个话题。但无论是谁在听这个播客,我都想要大声疾呼:听这个播客的人,你们的银行账户可能会被黑客利用 LLM(可能是某种技术或服务的缩写)掏空。还有其他即将问世的新技术。
在拉斯维加斯的一次演讲中,我看到了一场令人惊叹又令人恐惧的演讲。在我看来,最精彩的演讲是那个说“我们现在都需要害怕”的人。因此,我呼吁你们所有人,除了找一个编码助手,学习 CHOP,即使你不是程序员,也应该去银行取出一半的钱,存入另一家银行。把你的钱分散到不同的账户,因为有些账户在某些时候可能会被骗光,面对一个令人信服的骗局,而你将束手无策。
原文链接:
https://sourceforge.net/articles/the-evolution-and-future-of-ai-coding-sourcegraph-sourceforge-podcast-episode-24/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
(文:AI前线)