我们的行业正在改变:《编码哲学》作者对AI时代软件开发技能的思考
在过去几年里,科技领域以前所未有的速度发生着变革,人工智能已成为重塑我们工作本质的关键力量。曾经,人工智能被看作只是一种花哨的推荐算法,而如今,它却让编程界的许多人深感忧虑。
作为程序员,我们一直坚信,编程这项工作融合了逻辑与创造力,是无法被自动化替代的。编程工作充满了复杂的问题解决过程和创新思维,似乎是最后一个难以被转化为流水线作业的领域。我们曾设想,即便 未来实现了全民基本收入(UBI),编程仍会是一个需要人类亲力亲为的技艺。然而,事实证明我们错了。
大语言模型(LLMs)的发展速度惊人。一开始,它们生成的代码还只是偶尔能用,如今却已能应对大多数常见场景,尽管有时仍会在一些极端情况中出现问题。原来,编程的核心很大程度上就是模式匹配,这一认知既让人眼前一亮,又有些令人不安。
像我这样在这个行业深耕了十年,努力打磨编程技能的人,面对人工智能的崛起,不禁开始反思自己的职业选择。有时会半开玩笑地想,是不是当初该选择别的创意领域发展。但需要明确的是,这并非对软件行业的怀疑。
实际上,我们正在见证抽象层次的显著提升。这有点像从低级语言向高级语言的转变,但这次伴随着更为深刻的范式转换。过去,行业的大多数变化都没有改变我们坐在键盘前编写代码的工作模式。但这一次,我们的工作性质将发生巨大变化。我们花在阅读代码上的时间会远远超过自己编写代码的时间,实际上,我们正从代码编写者转变为代码编辑者。
我们的编程技艺确实在改变,重新定义自我认知至关重要。我们不应再把自己仅仅看作是代码编写者,而应将自己视为构建者。我们的角色将从实现代码的人,转变为评估代码质量和正确性的人。我们要能够辨别代码的优劣,以及哪些代码需要改进。在这个受人工智能影响的软件开发新环境中,区分可维护和不可维护代码的能力,将成为决定软件产品未来的关键。
从基本需求来看,编写代码似乎已经在很大程度上能由人工智能完成。但仍有一些关键方面离不开人类的专业知识。我们需要明确要构建什么,它应该如何运行,以及如何发展。例如,虽然我可以让大语言模型编写从S3存储桶读 取文件并向另一个服务发送HTTP请求的代码,但我必须清楚这些读取应该并发进行,后续请求需要批量处理以避免使其他服务过载,并且由于预期未来会有其他文件源,所以需要创建一个接口以便更轻松地添加它们。
维护软件是一项复杂的任务。虽然我们可以设想未来所有内容都是不可变的,每次需要更改时都能根据提示从头重写代码,但这一愿景的实现还需要很长时间。在与这些人工智能模型协同工作中,最具优势的将是那些拥有深厚技术知识的人。如果你清楚自己要构建什么,人工智能就能大幅提升你的创作效率。
这就是为什么我决定深入学习软件设计和分布式系统的技术知识。深入理解软件设计将帮助我培养对优质代码的直觉,而掌握分布式系统知识则能让我构建更复杂、更先进的产品。随着我们的编程技艺不断演变,我们要积极适应、持续学习,拥抱人工智能带来的新机遇。