
说实话,许多开发者正感到焦虑。他们担心人工智能,尤其是能够编写代码的聊天机器人,会让他们的工作变得多余。
对软件开发感兴趣的年轻人开始犹豫,思考自己是否还应该进入这个行业。而经验丰富的开发者则担心被淘汰,被自动化取而代之。
但让我们冷静下来,深呼吸,仔细想想。几十年来,每当新技术出现时,人们总会感到恐慌。当汽车行业开始引入机器人时,工人们担心失业;当办公室普及个人电脑时,人们害怕不再需要文员;甚至早在工业革命时期,许多人也认为蒸汽和煤炭驱动的机器将取代熟练的工匠。
然而,事实证明,技术并非单纯取代人类,而是增强和辅助我们的工作。关键在于,我们必须适应并学习如何与新技术共存。例如,汽车制造业的工人学会了控制和维护机器人,而办公室职员掌握了文字处理和电子表格技能。
软件开发行业的人工智能也是如此。作为开发者,我们需要积极拥抱AI,深入了解它,并思考如何让它成为我们职业生涯的一部分。
拒绝AI,才是真正的风险
现实一点:如果我们拒绝接受AI,才真的可能面临失业风险。但这与软件开发行业的一贯规律并无不同。在20世纪80、90年代,COBOL程序员不得不学习C++,否则就会被淘汰。十年前,jQuery开发者不得不掌握React或Angular,才能继续在前端开发领域立足。这种技术变革并不新鲜,只要我们想继续从事软件开发,就必须保持技术的前沿性。
那么,我们应该如何拥抱AI,并继续在软件开发领域前进呢?
学习AI:软件开发者的未来
对于软件开发人员而言,AI集成主要涉及两个方面:
- 将AI作为助手,提高编写代码的效率。
- 在应用程序中集成AI功能,提升产品竞争力。
让我们分别探讨如何学习这两种方法。
AI作为编码助手
如今,科技生态系统正迅速涌现大量AI工具,旨在帮助开发者以更快的速度编写代码。虽然目前还无法预测哪款工具会最终占据主导地位,但它们通常具备以下几种功能:
- IDE代码补全(如 GitHub Copilot)
- 智能问答聊天机器人(如ChatGPT、Amazon Q)
- AI自动化调试工具
- 测试用例生成器
- 文档生成器
在深入讨论这些工具之前,需要澄清一点:AI被吹捧的一大优势是“加快开发速度”,但如果我们仅仅将其视为提高效率的工具,就会严重低估它的价值。更明智的做法是将AI视为一位全天候的助手——它可以提供帮助,但仍然需要经验丰富的开发者来引导和监督。
借助强大的AI模型,这些工具不仅能帮助开发者更快地编写代码,还能提升代码质量,使其更加健壮、可扩展。例如,在开发新功能时,可以向AI描述用例,并让它检查是否有遗漏的情况,甚至建议额外的单元测试。从某种程度上说,这类似于与一位知识渊博的虚拟搭档进行结对编程。
IDE内的代码建议
- 可回答问题的聊天机器人
- AI 自动化调试工具
- 测试用例生成器
- 文档生成器
在深入讨论这些工具之前,先明确一点:这些 AI 工具的一个主要宣传点是“提高开发速度”。但如果我们仅仅把它们视为加快编程的手段,就可能大大低估了它们的真正价值。相反,我们应该把这些 AI 工具当作随时待命的智能助手,它们能极大地提高我们的效率,但仍然需要开发者的专业指导。
拥有合适的 AI 模型,这些工具不仅能帮助你更快地生成代码,还能确保代码更加正确、优化、可扩展且健壮。例如,在开发新功能时,你可以向 AI 聊天机器人提供一组用例,并询问它是否能补充你可能遗漏的情况——它或许会给出一些额外的单元测试用例。这就像是在进行“AI 版的结对编程”,和一个经验丰富的虚拟伙伴一起合作。
AI编码功能解析
在 IDE 内的代码建议方面,目前最流行的工具是 GitHub Copilot。它可以看作是一种高级自动补全工具,能够读取你的代码和注释,分析函数名称,并给出完整的代码建议——不仅仅是变量名,而是多行甚至几十行代码。尽管它并不总是100%正确,但无疑能极大提高生产力。
当然,任何AI生成的代码都需要仔细审查和调整。然而,在精心优化之后,你很可能会比单独编写代码更快地得到高质量的、可维护的代码。
Copilot 并不是免费的,但目前订阅费用每月仅 10 美元,性价比极高。(而且请记住,你的同行和竞争对手很可能已经在使用它。如果你还在犹豫,不妨思考一下这一点。)
另一个值得关注的工具是 Amazon Q。虽然它的知名度暂时不及 Copilot,但很多使用过这两款工具的开发者更喜欢Q。建议你亲自尝试,看看哪款更适合你的工作流。
聊天机器人:不仅仅是问答助手
另一个值得讨论的 AI 工具是 聊天机器人,比如 ChatGPT。尽管一些开发者仍然对它们持怀疑态度,但它们几乎能回答任何软件开发相关的问题。
假设你在项目规划阶段,还不确定应该选择 SQL 还是 NoSQL 数据库。你可以登录 ChatGPT(建议升级到更高级的模型以获得最佳体验),然后提出问题。例如:
“我正在 SQL(MySQL)和 NoSQL(MongoDB)之间做选择。基于我的项目需求,哪种数据库更合适?它们的优缺点分别是什么?”无论你对这两种数据库的了解有多深入,AI 可能仍然会提供一些你未曾考虑的视角。(再次强调,你的同行和竞争对手已经在利用聊天机器人来辅助决策。)
人工智能调试器
接下来是 AI 调试器。目前,这些工具仍处于早期阶段。最简单的调试方式之一是直接将代码片段复制并粘贴到 ChatGPT 中,并询问它能发现哪些潜在问题。只要使用的是最新版本的 AI 模型,它通常能胜任这项任务。
但更高级的AI调试工具也在不断涌现。例如,Amazon CodeGuru 是一款专门用于代码审查和分析的工具,在这些方面表现出色(截至撰写本文时,它支持 Java 和 Python)。此外,它还能与 GitHub、Bitbucket 等代码库平台集成,进一步提升开发效率。
测试生成器
AI还可以用于自动生成测试用例。例如,ChatGPT 在提供单元测试建议方面非常强大,但正确的使用方式至关重要。
错误的方式:直接将代码粘贴到ChatGPT 中,让它自动生成单元测试。这种情况下,ChatGPT 默认假设代码是正确的,因此它可能会生成一系列代码轻松通过的测试用例,而这些测试实际上并不能验证代码的可靠性。
正确的方式: 详细描述函数的预期行为,包括参数、返回类型,以及预期输出等信息。在真正编写代码之前,先让 ChatGPT 生成测试用例,这样能确保测试覆盖了所有可能的情况。这种方法符合测试驱动开发(TDD)的原则。
目前,AI 生成测试的领域仍在快速发展。虽然我们暂不推荐具体的其他工具,但可以通过 ChatGPT 或 Google 搜索“AI 测试生成器”来关注最新进展。
文档生成器
AI 还可以用于文档生成,自动分析代码并生成相应的文档。然而,与其他 AI 工具一样,目前的文档生成工具仍不够完善,远不能替代专业技术写作者。不过,它们可以提高开发效率,减少手动编写文档的工作量。
在应用程序中集成AI功能
由于 AI 在各行业的广泛应用,许多人认为所有软件都应该内置 AI 功能,通常是通过聊天机器人实现。然而,软件开发人员知道,并非所有应用都需要 AI。例如,计算器应用是否需要 AI 聊天机器人?虽然可以设想一些有趣的用例,但大多数情况下并非必要。
这种对 AI 的盲目追求最终会降温,用户将逐渐理解 AI 在何种情况下真正有价值。因此,开发者的重点应该放在如何有效地将 AI 与应用结合,而不是单纯为了迎合市场趋势。
这意味着我们需要了解 AI 的不同分支,并找到它们在软件开发中的最佳应用场景。例如:
- 医疗领域:计算机视觉可用于医学影像分析,例如牙科诊断。结合 AI 成像技术,牙医可以在疾病肉眼可见之前提前发现问题。
- 金融行业:AI 在欺诈检测方面的表现远胜于传统统计分析方法,能够识别更加复杂的欺诈模式。
AI领域概览
为了有效利用 AI,开发者需要掌握 AI 的多个领域,包括但不限于:
- 机器学习与深度学习:用于欺诈检测、个性化推荐等。
- 计算机视觉:用于医疗影像分析、安全监控、自动驾驶等。
- 生成式 AI:ChatGPT 等 AI 聊天机器人属于此类,此外,它还可用于创建企业知识库,实现自然语言交互。
- 自然语言处理(NLP):广泛应用于聊天机器人、法律文档分析、文本摘要等场景。
- 语音识别:用于语音助手(如 Siri)、语音转文字等,现代 AI 技术使其在口音适应和复杂语音环境中的表现大幅提升。
结论
本篇文章并未深入探讨AI研究与开发领域,但值得一提的是,这是一个极具前景的领域,未来仍将创造大量就业机会。不过,AI 研究需要扎实的数学、计算机科学和机器学习背景,并通常需要高等学位。
尽管AI仍有很长的路要走,但它不会“取代我们的工作”,而是成为开发者的得力助手。面对新技术,我们应当积极拥抱并持续学习,以充分利用AI赋予我们的强大能力。
作者:Jeffrey Cogswell