当我八岁时,我在等待板球比赛开始时看了一部登山纪录片。我记得自己非常沮丧地看着这些登山者一点点爬上一块巨大的岩壁,每隔几英尺就停下来往山里敲入看起来像巨大钉子的东西。
“他们为什么不爬快点?”我问父亲。“他们花那么多时间弄那些金属东西真是浪费!”
“那些是安全锚,孩子。如果他们摔倒了,他们不想一路滚回山底。”
我觉得这个逻辑完全不能令人满意。显然,解决方案很简单:不要摔倒。只要爬得更快更小心就行。
三十年后,在我在金奈的办公室凌晨两点调试AI生成的代码时,我终于明白了那些登山者在做什么。
上个月,我正在为我的经理做一个收入分析项目——他是那种会注意到PPT幻灯片字体大小不一致的完美主义者。这个任务看起来很简单:从多个维度对我们的季度收入进行分析。
通常情况下,这将是一个为期三天的苦差事:SQL查询、CSV导出以及与图表库的斗争。
但这次,我有了我的AI助手。这就像有一个数据可视化超级英雄作为我的个人编程伙伴。
“创建一个堆叠条形图,按合同类型显示季度收入,”我输入。三十秒后:一个漂亮的、可出版质量的图表。
我正处于心理学家称之为“心流状态”的状态,由AI辅助超级充电。一个接一个的图表在我的屏幕上显现。在三个光荣的小时里,我完全沉浸其中。我生成了十七种不同的可视化,创建了一个交互式仪表板,甚至添加了让数据跳舞的动画过渡。
我如此沉浸在动力中,以至于停下来提交更改的想法从未出现在我的脑海中。为什么要打断这个美丽的心流?
这本应是我第一个线索,表明我即将学到关于安全锚价值的非常昂贵的教训。
凌晨1:47,灾难发生了。我让我的AI助手“优化所有图表的色盲可访问性调色板”。这是一个合理的请求——那种让软件变得更好的周到改进。
接下来发生的事情就像观看一次受控拆除,只不过没有任何受控可言。
AI不只是改变了颜色。它重构了我的整个图表库。它修改了数据处理管道。它改变了组件架构。它甚至改变了CSS框架“以更好地符合可访问性”。
突然之间,我美丽的仪表板看起来像是与电脑激烈争吵的人设计的。图表重叠,数据消失,配色方案现在类似于各种内脏器官的医学图表。
“没问题,”我想。“我会让它撤销这些更改。”
这就是我了解到,尽管AI助手能力令人印象深刻,但它们的回滚技能就像一个三岁孩子试图解炒鸡蛋一样。
接下来的两个小时,我只能形容为与一个善意但完全困惑的数字助理进行谈判。到凌晨四点,我放弃了,恢复到了代码的最后提交版本——来自六小时前。三个小时的精彩AI生成可视化消失在数字等价物中,就像我作为一个不耐烦的八岁孩子会滚下的山腰一样。
第二天早上,喝着咖啡,看着同事的 spectacular 失败带来的特殊智慧,我的队友莫汉给出了他的判断。
“你知道你做错了什么吗?”他说。“你忘了使用岩钉。”
“岩钉?”
“像登山者那样。他们每隔几英尺就把那些金属钉敲进岩石里,并系上安全绳。如果他们摔倒了,他们只会掉回到最后一个岩钉,而不是一路掉到山底。”
“你的岩钉就是你的提交、你的测试、你的版本控制。每次你获得一个工作功能时,你就敲入一个岩钉。测试它,提交它,确保如果出现问题,你可以回到那个确切的位置。”
“但AI太快了,”我抗议道。“停下来提交感觉会打断我的心流。”
“心流很棒,直到你直接流下悬崖,”莫汉回答。“AI不理解你的安全绳。它只是越爬越高,做出越来越大、越来越大的改变。你才是必须决定何时停下来确保自己位置的人。”
尽管我不愿承认,但莫汉是对的。我被AI的速度迷住了,以至于放弃了我所知道的每一个好的软件工程实践。没有增量提交,没有系统测试,没有架构规划——只有纯粹的、鲁莽的速度。
但这不仅仅是关于我深夜的编码灾难。这个挑战已经融入到AI助手的工作方式中。
AI助手非常擅长让我们感到高效。它们如此快速和自信地生成代码,以至于很容易将输出误认为成果。但没有可持续性的生产力只是创建技术债务的一种花哨方式。
这不是反对AI辅助开发的论点——而是关于如何更好地使用它的论点。那部纪录片中的登山者不是因为无能而缓慢;他们有条不紊是因为他们理解失败的后果。
AI也不关心你的代码库。它不理解你的架构、你的业务约束或你的技术债务。它是一个强大的工具,但它不能替代工程判断。而工程判断,结果证明,很大程度上是关于知道何时放慢速度。
这让我们回到了那些登山者和他们有方法的方法。在我的收入仪表板灾难中,我走得非常快,但最终却回到了我开始的地方,六小时后更加疲惫。讽刺的是,如果我每小时花15分钟提交工作代码并运行测试,我会更快完成项目,而不是更慢。
我的经历并不独特。在整个行业中,开发人员正在发现AI驱动的生产力伴随着隐藏的成本。
我们正在经历自高级编程语言发明以来软件开发生产力最重大的转变。AI助手是真正具有变革性的工具,可以以几年前似乎不可能的方式加速开发。
但它们并没有消除对良好工程实践的需求;它们使这些实践更加重要。你生成代码的速度越快,拥有可靠的方法来验证、测试和版本控制该代码就变得越关键。
这可能会让我们所有人内心那个只想爬得更快的八岁孩子失望。但它应该鼓励我们内心想要真正到达顶峰的部分。
使用AI辅助构建软件是一项高风险活动。你生成代码的速度比你完全理解它的速度更快,集成你没有选择的库,并实现你可能没有时间完全验证的模式。
在这种环境中,安全锚不是开销——它们是必不可少的基础设施。AI辅助开发的未来不是要消除使软件工程工作的方法论实践。而是要更好地掌握它们,因为我们将比以往任何时候都更需要它们。
现在如果你们不介意,我还有一些提交要赶上。而这一次,我设了一个定时器。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。