超越代码:在 AI 浪潮中如何让软件工程师的价值持续增长?

2022 年底 ChatGPT 一炮而红至今不足两年,人工智能技术的发展可谓一日千里。大型语言模型(LLM)及其衍生的相关生态技术(RAG、LangChain、LlamaIndex 等)迅速崛起,构建着自己的生态体系。随着人们对人工智能(AI)技术的认可和拥抱,对其能力的遐想与焦虑也随之而来。尤其是在 AI 程序员 Devin 推出之时,周围充斥着「程序员即将失业,AI 即将取代程序员」的言论,这种恐慌情绪尤为明显。

实际上,类似的言论在每一次技术变革时期都会出现。在 Devin 出现之前,我就已经体验过几款号称「只需输入一句话就能生成完整项目代码」的开源 AI 程序员工具。但实际体验下来,这些工具生成的代码大多侧重于显性知识教程,距离实际生产应用还有很长一段距离。Devin 也不例外,实际效果与宣传存在差距,人工参与和反复校对的工作量依然很大。

最近,我拜读了徐昊老师的《AI 时代的软件工程》,他对于 AI 和软件工程的犀利观点和深刻洞察让我受益匪浅。诚然,LLM 展现出的强大能力的确令人惊叹,但如果因此就断言程序员将被 AI 取代,未免过于草率。事实上,AI 时代并非意味着程序员的终结,而是意味着软件工程将迎来一场全新的变革——一场围绕「知识」展开的变革。而这场变革的核心,正是对知识的重新认知和运用,尤其是对那些 AI 难以企及的隐性知识和不可言说知识的挖掘和传承。

为什么说 AI 时代,程序员不会被取代,反而会更加重要?因为软件工程的本质并非简单的代码堆砌,它更像是一门艺术,需要程序员充分理解业务需求、设计合理的架构、选择合适的算法,并最终用简洁优雅的代码将这一切串联起来。在这个过程中,除了那些可以被清晰定义、记录和传承的显性知识,还有很多隐藏在经验、直觉和技巧中的隐性知识和不可言说知识在发挥着至关重要的作用。而这些知识,恰恰是 AI 目前难以企及的领域。

为了更直观地说明这一点,让我们来看两个例子:

案例一:看似简单的文件上传功能

开发一个简单的 文件上传功能。乍看之下,需求非常明确:用户可以选择本地文件,点击上传按钮,文件就被上传到服务器。显性知识足以让我们完成这个功能的基本框架:

  • 使用 HTML <input type="file"> 元素创建文件选择框。

  • 使用 JavaScript 监听文件选择事件,获取文件数据。

  • 使用 HTTP 协议将文件数据发送到后端服务器。

  • 后端使用特定语言(如 Python、Java)编写代码接收文件数据并保存。

然而,当我们深入思考实际应用场景时,就会发现大量 隐性知识 开始浮现:

  • 文件类型限制: 应该允许上传哪些类型的文件?如何对上传的文件类型进行校验?如果用户上传了不允许的文件类型,应该如何提示?

  • 文件大小限制: 应该设置多大的文件大小上限?如何优雅地处理超出大小限制的文件上传?

  • 上传进度显示: 对于大文件上传,如何实时显示上传进度?

  • 断点续传: 如果上传过程中网络中断,如何实现断点续传?

  • 安全性: 如何防止恶意用户上传病毒文件或非法内容?如何对上传的文件进行安全扫描?

这些问题无法从编程语言手册或者框架文档中找到直接答案,它们需要开发者在实践中不断摸索、积累经验,才能形成自己独特的 「know-how」。

案例二:智能家居APP 中的个性化体验

想象一下我们要开发一款智能家居APP,用户可以通过语音控制家里的各种电器。显性知识可以告诉我们如何调用语音识别API、如何控制智能设备接口,但如何设计更人性化的语音交互流程、如何根据用户的使用习惯进行个性化推荐、如何保障用户的数据安全和隐私,这些都需要程序员在大量的实践中不断摸索、总结,最终形成自己独特的“know-how”。

这些「know-how」就像文章中提到的「轮扁削车轮」的技巧一样,很难用语言完全表达,更无法通过简单的文档、代码注释来传承。这就是为什么即使面对同样的需求文档、同样的技术栈,经验丰富的程序员和新手程序员所交付的代码质量可能会有天壤之别。

正因为隐性知识和不可言说知识如此重要却又难以捕捉,所以AI 想要完全取代程序员,还有很长的路要走。未来,软件工程将逐渐演变成知识工程,程序员的角色也将从单纯的代码编写者转变为知识的挖掘者、提炼者和传播者

为了更好地理解这场变革,我们需要对知识的种类有一个更清晰的认知:

  • 显性知识: 可以被清晰地表达和记录的知识,例如各种公式、定理、规范、标准等。

  • 隐性知识: 隐藏在个人经验和技能中的知识,难以用语言完全表达,例如“如何写出易维护的代码”、“如何快速定位问题”等。

  • 不可言说知识: 深植于个人直觉和领悟的知识,几乎无法用语言表达,例如“对代码美感的感知”、“对用户需求的洞察”等。

正如冰山理论所描述的那样,显性知识只是冰山一角,而大量的隐性知识和不可言说知识则隐藏在水面之下,支撑着整个冰山的稳固存在

在了解了隐性知识和不可言说知识是如何隐藏在看似简单的需求背后的。那么,面对这些难以言说的“know-how”,我们该如何有效地进行传递和传承呢?

传统的「师徒相授」模式,在一定程度上可以解决这个问题。师傅通过言传身教,将自己多年的经验和技巧传授给徒弟。但这种模式效率低下,且受限于师徒之间的个人关系和传承意愿,难以规模化推广。

在信息时代,我们迫切需要探索更高效、更便捷的知识传递方式。「社会化活动」为我们指明了方向。通过构建一个开放、协作、共享的学习环境,让那些隐性知识和不可言说知识能够在团队成员之间自由流动,才能打破知识壁垒,实现知识的快速积累和传承

那么,如何将「社会化活动」应用到实际的软件开发过程中呢?

我们可以参考敏捷开发中的实践,例如:

  • 结对编程: 两位程序员并肩协作,共同完成同一个功能模块的开发。这种方式不仅可以提高代码质量,更重要的是能够促进知识的交流和共享。经验丰富的程序员可以在编码过程中,将自己对代码规范、设计模式、问题解决思路等方面的理解,潜移默化地传递给新手程序员。

  • 代码评审: 在代码提交到代码库之前,由其他团队成员进行审查,提出改进意见。这种方式不仅可以发现代码中的潜在问题,更重要的是能够让不同经验水平的程序员互相学习,取长补短。

  • 案例分享: 定期组织经验分享会,让团队成员分享自己在项目开发过程中遇到的挑战、解决方案以及总结的经验教训。这种方式可以将那些零散的经验片段串联起来,形成系统化的知识体系。

  • 文档化: 将那些可以被记录下来的经验和教训,整理成文档,并存放到团队共享的知识库中,方便其他成员查阅和学习。

  • 模拟演练: 通过模拟真实项目场景,让团队成员在实践中学习和掌握那些难以言说的知识和技巧。例如,可以模拟“短信登录接口”遭遇黑客攻击的场景,让团队成员体验如何快速定位问题、制定解决方案并进行修复。

将软件开发转化为知识过程

除了具体的实践方法,我们更需要从根本上转变观念,将软件开发视为一个持续不断的知识创造、传递、应用和更新的过程,也就是所谓的「知识过程」。

以“「短信登录接口」为例,我们可以将整个开发过程分解为以下几个阶段:

  1. 知识获取: 收集和整理与“短信登录”相关的显性知识,例如相关协议规范、安全标准、第三方服务接口文档等。同时,也要注重挖掘和收集团队成员在过往项目中积累的隐性知识和不可言说知识,例如如何选择合适的短信服务提供商、如何设计安全的验证码机制、如何应对可能出现的异常情况等。

  2. 知识传递: 通过结对编程、代码评审、案例分享等方式,将收集到的知识在团队成员之间进行传递和共享,确保所有成员对需求、设计和实现方案达成一致。

  3. 知识应用: 将学到的知识应用到具体的编码实践中,并通过单元测试、集成测试等手段,确保代码的质量和安全性。

  4. 知识更新: 随着技术的进步和业务的发展,我们对“短信登录”的理解也会不断深入。因此,我们需要定期对已有的知识进行回顾和更新,并及时将新的经验和教训补充到知识库中。

通过将软件开发转化为知识过程,我们可以将那些原本分散、隐性的知识显性化、系统化,并将其转化为团队的共同财富,从而提升团队的整体效率和创新能力。

总结:

在 AI 时代,程序员的价值将更加体现为对隐性知识和不可言说知识的挖掘、提炼和传承。 面对 AI 带来的挑战,程序员需要不断学习新的技术,更要注重积累实践经验,培养自己的洞察力和判断力,积极探索新的知识管理模式,构建一个鼓励学习、分享和创新的团队文化,才能在与 AI 的协作中发挥更大的价值,在 AI 时代继续保持竞争力。

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术狂潮AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值