投稿或寻求报道 | zhanghy@csdn.net
多年来,我一直坚信:写代码,从来都不是软件开发中的瓶颈。
究竟瓶颈究竟在何处?它体现在代码审查,体现在通过导师制和结对编程来传授知识,体现在测试和调试过程中,还体现在沟通与协作所带来的额外“人力成本”……这些环节如同层层叠叠,隐藏在一张张工单、一场场会议以及一次次敏捷实践所构成的复杂迷宫之中。这些流程原本旨在提高开发品质,然而,它们往往比编写代码本身更加费时费力,因为它们要求深思熟虑、达成共识以及做出合理的判断。
如今,伴随着大语言模型(LLM)在生成可执行代码方面的效率提升,一种新的看法逐渐兴起:过去编码曾是制约发展的瓶颈,而现在我们似乎已经成功突破了这一难题。
然而,实际情况并非如此:利用大型语言模型,新代码的生成成本正逐渐降低至几乎为零——然而,对这些代码进行理解、检验以及建立信任所需的投入,包括所需的时间和精力,或许比以往任何时候都要更多。
大语言模型只是转移了工作量,而没有消除
此类工具如 Claude 确实能够加快初期实现的速度,然而,最终常常导致的结果是:系统内涌入的代码量增多,从而给负责审查、集成以及维护工作的人员带来了更大的工作压力。
这一点在以下几种场景中尤为明显:
代码提交者对生成的代码是否完全理解,尚不明确;
生成的代码引入了团队不熟悉的模式,或违反既有规范;
边界情况、隐藏副作用不容易被察觉。
最终,我们将遭遇这样的情形:代码的生产变得更为便捷,然而验证、理解与维护的难度却有所增加,这可能导致团队的整体工作效率并未随之提高。
这并非新鲜事,开发者们对“复制粘贴式开发”的戏称早已耳熟能详。然而,大语言模型的快速生成和大规模应用,更是将这种复制粘贴的行为推到了一个新的高度。
写代码不难,理解代码才难
有句话说得好:“代码的最大成本在于理解,而不是编写。”
大语言模型的确能显著减少编写代码所需的时间,然而,若要深入理解其运作机制、细致地查找微小的错误、确保其长期的可持续维护,这仍旧是一项成本高昂的智力挑战。特别是在审查者难以区分哪些代码是AI所写、哪些是人工编写,甚至无法理解“为何要这样实现”的情况下,维护的难度将更加增大。
软件开发的本质,从来都不是孤岛
从本质上讲,软件工程是一项需要高度协作的职业活动,它需要团队成员间共享理解、保持目标一致,并传承资深成员的经验。然而,当前情况下,若代码的生成速度远超讨论与审核的速度,团队可能会陷入一个认知陷阱:即默认代码是正确的,即假定质量已经达标,而非通过严谨的验证来确保质量真正达标。
这种心态给审查者和导师带来了极大的压力,使得整个流程表面上看似“自动化”,实则变得更加脆弱和缓慢。
LLM 确实很强,但并未解决根本问题
确实,大型语言模型在原型构建、框架构建以及某些自动化流程方面能显著提高工作效率。然而,它并不能取代深入的思考、周密的审查以及合理的系统架构设计。实际上,随着生成的代码量逐渐增加,这些能力的重要性愈发凸显。
确实,编码的费用有所降低;然而,团队成员共同理解代码的代价并未减少——这正是我们的真正难题,切勿再欺骗自己了。
网友热议:写得快,不代表就是对的;生成得多,不代表质量就够
这篇文章在HN上引发了开发者群体的广泛关注与热议,随之而来的是,越来越多的前线工程师开始认识到,大型模型正在加剧软件工程中最为棘手的环节:对复杂内容的理解、对代码的审查以及团队间的协作。
一位经验丰富的开发者于评论区披露了个人的亲身见闻:在指导实习生期间,他观察到利用LLM技术,团队的代码编写效率显著提高,单日产出量已能匹敌以往数周的工作量。然而,这种表面上的效率提升实则隐藏着认知负担的累积:
实习生写的代码“像是对的”,但其实错得离谱;
看起来干净的提交,实际隐藏着无数边界问题;
代码结构复杂得不合理,审查意见很难被真正理解;
修改并非针对既有的公共关系材料,而是要提交一个全新的计划,然而这又引出了新的复杂难题。
并非孤例,另一位开发者也持有相似观点:尽管大型语言模型能够加快代码的生成速度,然而,耗时较长的是随后的代码整理、错误检测、安全审核、代码重构以及性能优化等工作——这些环节难以实现自动化,且鲜有人愿意承担。
除此之外,有开发者从更宏观的角度提出观点:“编写程序,早已不再是稀有技能。”他指出,与几十年前相比,业界已经从“谁能够编写系统”这一阶段发展到了“谁能够确定需要何种系统”这一阶段。昔日,比尔·盖茨凭借编程技能得以谋生,那是因为编程能力在当时极为罕见;然而,如今编程技能已经变得普遍,市场需求和决策能力才是成功的关键。
这也进一步证实了原文中的论断:编写代码的额外成本在逐渐降低,然而,对于“理解代码、协同开发”的额外成本却在不断攀升。因此,当我们讨论 LLM 提高了“效率”这一概念时,不妨多思考一下:它究竟提高了谁的效率?是在哪个环节上?这样的提升又付出了怎样的代价?
初级工程师提交PR的速度是否更快,抑或是高级工程师在清理后续问题上投入了更多时间?
是产品交付周期缩短了,还是产品质量变得不可控了?
是没人能生成更多代码了,还是真正读懂这些代码的人更少了?
大型模型并无过错,其确实具备强大的功能,然而,每一种工具都仅是放大器——它既能增强你的能力,亦有可能放大你的不足之处。