#程序员

宝玉
1周前
AI本该助力新人,为何反而让高手更强? 作者:Can Elma “AI会不会彻底取代程序员?”类似的问题已经被问烂了,人们不断地尝试给出答案。虽然这个话题已经不新鲜,但我还是想分享一些自己的观察和思考。 起初,许多人都相信,未来公司会减少对高级工程师的依赖。毕竟,有了AI,初级程序员也能创造出高质量的代码——至少坊间流传的故事是这样的。然而现实却截然不同。AI并未如宣传中那样神奇,最终真正有效的组合,不是“新人 + AI”,而是“高手 + AI”。 为什么会这样? 我们来仔细看看,在代码编写上,AI到底哪里强、哪里弱。 AI擅长的事: • 快速生成大量样板代码(boilerplate)和脚手架(scaffolding)。 • 自动化重复、枯燥的任务。 • 尝试多种不同的实现方式。 • 借助快速迭代,迅速验证想法。 • 在需求清晰的前提下,快速交付功能。 这些特性帮助了谁?显然更利于高级工程师。对新人来说,想把AI的这些能力真正变成实际价值,要难得多。 AI出问题的地方: • 代码审查(Code review): AI无法真正“理解”代码。审查时可能有些帮助,但一旦涉及边缘情况(edge cases)——而AI生成的代码通常有更多边缘情况——最终还是需要资深工程师出马。 • 不好的指令(Bad prompts): 能写出高质量提示词的人,必须是那些真正懂得自己要做什么的人。如果使用者缺乏深入理解,即使AI看起来产出还行,实际也只是给项目埋下了无数隐患。 • 架构设计(Architecture): 没有扎实的架构,软件很快就会失去价值。当前AI并不擅长设计优秀架构,虽然表面上看起来似乎可以,但实际上,这种复杂推理仍然依赖人类。许多以弱架构起步的项目,最终深陷技术债(technical debt)泥潭。 • 代码质量(Code quality): 选择恰当的抽象层次、正确运用设计模式、保持代码的干净清晰,这些都是AI目前的短板。 • 安全性(Security): 新手搭配AI的组合更容易出现漏洞,就像盖一座房子忘了装门锁。虽说漏洞无处不在,但高级工程师至少能提高警觉和谨慎。 • 错误学习(Wrong learning): 新人如果不能正确判断AI产出的代码好坏,就会潜移默化地吸收错误知识。在公司里,这意味着制造的是损害而非价值。 以上这些问题,概括起来就是:AI暂时对高级工程师并没有威胁,甚至反而让他们更加强大。这里不是在批评新人,而是强调不应对他们抱有不切实际的期望,把他们扔到充满风险的环境中。 我们真正该如何用AI? • 快速原型开发(Fast prototyping): 想快速尝试新想法时,AI再适合不过。 • 加速重复任务(Speeding up routines): AI最重要的用途,就是自动化那些你已经非常熟悉并经常重复的工作。 • 跨领域协作(Multi-disciplinary work): AI可以弥补你知识上的短板,建议有用的函数库或方法,帮你快速连接不同领域的知识点。 • 功能测试(Function tests): 简单重复、风险较低的测试代码,AI可以帮你快速生成,并且容易进行人工复核。 从我的角度来看,这就是AI目前的现状。AI写的每一行代码,我们依然需要逐行审阅。它远远称不上完美:没有自我意识,只会模仿人类的推理,生成结果不可控(non-deterministic),所以我们才依靠确定性的东西,比如单元测试。可是,你真的放心让AI自己编写测试,来验证它自己的代码吗? 我想起我曾发过的一条推特,有个提示词可以让AI在“不懂时回答‘我不知道’”,我评论道:“即使AI回答‘我不知道’,你也不能确定它到底知不知道自己不知道。” 确实,“新人 + AI”的模式很诱人,看起来成本低廉,还迎合了人们“AI将抢走我们工作”的恐惧。但当你把软件开发和其他行业作比较,就会发现软件行业仍然不够成熟。在建筑行业,建筑师专注于设计;但在软件领域,即使是“架构师”,也仍在不断地亲手“砌砖”,编写底层代码。我们还远没有实现真正的分工和专长化,成本优先的思维主导市场,这只会贬低工作价值,让人疲惫不堪。 因此,AI目前非但没有让编程变得更加民主化,反而更集中地将能力交给了那些资深工程师。现实与预期产生了错位。未来会如何发展,谁也说不准。我对AI的长期发展依然乐观,但短期内,我们最好重新校准自己的期待,别再让不切实际的想法越走越偏了。