只会写代码远远不够!AI时代,开发者需要具备这些硬技能+软技能

只会写代码远远不够!AI时代,开发者需要具备这些硬技能+软技能
2024年03月25日 18:53 AI科技大本营

“随着人工智能继续塑造开发格局,开发者正在步入一个新的领域——这并不会让他们的职业生涯变得濒临淘汰,却比以往更需要技能和直觉。”Sara Verdi在她近期的一篇博客文章中写道。

她表示,诚然,人工智能在给软件开发带来变革,但这场变革的起伏最终取决于开发人员。这是因为这些工具需要有一个领航员来控制。虽然人工智能工具可以缩短编码和交付时间,但无法替代人类监督及编码能力。

“我们最近对开发人员和人工智能工具之间不断变化的关系进行了研究,发现人工智能有潜力减轻开发人员复杂任务的认知负担。人工智能工具不仅可以用作第二双手,还可以更像第二大脑一样使用,帮助开发人员更加全面和高效。”Sara写道,“从本质上讲,人工智能可以减轻精神压力,使开发人员可以专注于从学习新语言到为复杂问题创建高质量解决方案的任何事情。”

明显,Sara对人工智能的发展持乐观态度,研究总结了这个工具的演变,并结合目前人工智能工具的发展,给出了开发者需要具备的相应软硬技能。开发者可以在这里找到在人工智能时代需要了解的信息。

人工智能技术和工具的简史

虽然媒体近几年才开始对生成式人工智能的热议,但人工智能编码工具的出现时间比你想象的要早得多。下面列出了人工智能驱动的工具和技术的简要时间表,这些工具和技术为我们今天拥有的复杂编码工具打下了基础:

20世纪50年代: Autocoder是最早的自动编码探索之一。Autocoder由IBM在20世纪50年代开发,将符号语言翻译为机器代码,简化了早期计算机的编程任务。

1958年:LISP(约翰·麦卡锡创建的最古老的高级编程语言之一)引入了符号处理和递归函数,为人工智能编程奠定了基础。其灵活性和表现力使其成为人工智能研究和开发的热门选择。

该函数计算LISP中非负整数n的阶乘。如果n为0或1,则阶乘为1。否则,它将递归地将n乘以 n-1的阶乘,直到n达到1。

1970年:SHRDLU由麻省理工学院的Terry Winograd开发,是一种早期的自然语言理解程序,可以解释和响应有限的英语子集中的命令,并展示了人工智能理解和生成人类语言的潜力。

SHRDLU 在块(block)世界中运行,旨在理解和执行自然语言指令,以操纵由各种形状的块组成的虚拟对象。

20世纪80年代:在20世纪80年代,代码生成器(例如The Last One)作为可以根据用户规范或预定义模板自动生成代码的工具出现。虽然不是现代意义上严格的人工智能驱动,但它们为后来代码生成和自动化的进步奠定了基础。

1982 年《个人电脑》杂志封面探讨了“最后一个”程序。(资料来源:David Tebbutts)

20世纪90年代:基于神经网络的预测模型越来越多地应用于与代码相关的任务,例如预测程序行为、检测软件缺陷和分析代码质量。这些模型利用神经网络的模式识别功能从代码示例中学习并做出预测。

2000年代:具有AI功能的重构工具在2000年代开始出现,为重构和改进代码提供自动化帮助,而无需改变其外部行为。这些工具使用人工智能技术来分析代码模式,识别重构机会,并向开发人员建议适当的重构。

这些早期的人工智能驱动的编码工具帮助塑造了软件开发的演变,并为当今人工智能驱动的编码辅助和自动化工具奠定了基础,而这些工具似乎每天都在不断发展。

跳出IDE局限

起初,人工智能工具主要局限于集成开发环境(IDE)来帮助开发人员编写和完善代码。但现在,我们开始看到人工智能触及软件开发生命周期 (SDLC) 的每个部分,我们发现人工智能可以提高生产力、简化协作并加速工程团队的创新。

在2023年对500名美国开发者进行的一项调查中,70%的人表示在工作中体验到了显著的优势,而超过80%的人表示这些工具将促进团队内部更好协作。此外,Sara团队的研究表明,使用 AI编码工具时,开发人员完成任务的速度平均提高了 55%。

以下是现代人工智能编码工具的概况以及目前的一些技术优势:

代码完成和建议。GitHubCopilot等工具,使用大型语言模型 (LLM) 来分析代码上下文,并生成建议以提高编码效率。开发人员现在可以体验到生产力的显著提升,因为人工智能可以根据从开发人员代码存储库中学到的上下文和模式来调整整行代码,而不仅仅是编辑器中的代码。Copilot还利用GitHub上提供的大量开源代码来增强对各种编程语言、框架和库的理解,为开发人员提供有价值的代码建议。

存储库中的生成式人工智能。开发人员可以使用GitHub Copilot Chat 等工具实时提问并更深入地了解其代码库。通过AI收集存储库中遗留代码和流程的上下文,GitHub Copilot Enterprise在建议解决方案时可以帮助保持整个组织代码库的一致性和最佳实操。

自然语言处理(NLP)。人工智能最近在理解自然语言提示并生成代码方面取得了长足进步。像ChatGPT这样的工具,开发人员可以用简单的语言描述他们的意图,人工智能则会产生有价值的输出,例如可执行代码或对代码功能的解释。

使用AI增强调试。这些工具可以分析代码中的潜在错误,通过利用历史数据和模板来提供可能的修复,从而更有效识别并解决错误。

当开发人员开始将人工智能工具纳入开发工作流程时,有两个不同的技能库可以帮助他们:硬技能和软技能。当开发人员投入人工智能项目时,同时拥有技术能力(硬技能)和人际交往能力(软技能)非常重要——他们需要了解自己的技术技能,以使这些人工智能工具发挥自己的优势,但他们也需要能够与他人良好合作,创新地解决问题并了解大局,以确保他们提出的解决方案确实能够满足用户的实际需要。

硬技能:掌握技术知识

提示工程

提示工程包括精心设计的提示或指令,指导人工智能模型的行为以产生所需的输出或响应。当人工智能驱动的编码助手无法生成有价值的输出时,这可能非常糟糕,但一般可通过调整与人工智能的交流方式来快速解决这个问题。制作自然语言提示时切记以下几点:

  • 明确且具体。制作直接且与上下文相关的提示,以更有效地指导人工智能模型。

  • 实验和迭代。尝试各种提示变化并根据您收到的输出进行迭代。

  • 验证,验证,验证。与检查同事编写的代码类似,持续评估、分析和验证人工智能算法生成的代码至关重要。

代码审查

人工智能很有帮助,但它并不完美。虽然LLM经过了大量数据的训练,但本质上并不像人类那样理解编程概念。因此,LLM生成的代码可能包含语法错误、逻辑缺陷或其他问题。这就是为什么开发人员需要依靠他们的编码能力和结构化的知识来确保他们不会将错误的代码投入生产。

成功进行代码审查,首先要明确:这个代码更改是否完成了它应该做的事情?可以查看这份深入的清单(https://github.com/mgreiler/code-review-checklist),其中包含在查看人工智能生成的代码建议时需要明确的更多详细事项,包括执行、逻辑错误及失误、错误处理和日志记录、关联性、数据隐私、性能表现、可用性、伦理、测试、可读性等。

测试和安全

借助人工智能的功能,开发人员现在可以轻松生成和自动化测试,从而减少他们的手动测试职责,且更具战略性。为了确保人工智能生成的测试有效覆盖关键功能、边缘情况和潜在漏洞,开发人员需要具备编程技能、测试原则和安全最佳实践方面扎实的基础知识。这样,他们能有效解释并分析生成的测试,识别生成的测试中的潜在限制或偏差,并根据需要补充手动测试。

可以采取以下几个步骤来评估人工智能生成的测试的质量和可靠性:

  • 验证测试断言。检查人工智能生成的测试做出的断言是否可验证,以及它们是否与软件的预期行为一致。

  • 评估测试的完整性。评估人工智能生成的测试是否涵盖所有相关场景和边缘情况,并确定可能需要额外测试才能实现全面覆盖的任何偏差或范围。

  • 识别局限性和偏见。考虑数据偏差、算法偏差以及用于测试生成的 AI 模型的局限性等因素。

  • 评估结果。调查任何测试失败或异常以确定其根本原因以及对软件的影响。

对于编码初学者,可查看GitHub学习路径,通过 GitHub Actions 和 GitHub Advanced Security深入了解测试策略和安全最佳实践。

软技能:沟通协作与人性思考

随着开发人员利用人工智能来构建下一代产品,拥有与同事良好沟通和协作等软技能,变得比以往更加重要。

开发人员在持续使用人工智能工具时需要重视的一些软技能:

沟通。沟通技巧,对于与团队成员和合作者一同定义项目需求、分享见解和应对挑战来说至关重要。当开发人员进行提示工程时,沟通技巧也同样重要。最好的人工智能提示词是清晰、直接且经过深入思考的——这与在工作场所和人类同事的沟通,并没有太大不同。

解决问题。开发人员在使用人工智能工具时可能会遇到复杂的挑战或难以预料的问题,而建设性思考和随机应变的能力对于寻找创新解决方案至关重要。

适应性。人工智能技术的快速发展,要求开发人员具有适应能力并愿意接受新的工具、方法和框架。同时,培养有助于成长心态养成的软技能,可以让个体随着人工智能工具的不断发展,不断学习并保持成长。

道德思考。道德考虑在人工智能开发中非常重要,特别是在偏见、公平、透明度和隐私等问题上。诚信和道德推理对于做出负责任的决策至关重要,以优先考虑用户和整个社会的福祉来做出决策。

共情能力。开发人员经常为最终用户创建解决方案和产品,为了创造有价值的用户体验,为此开发人员需要能够真正了解用户的需求和偏好。虽然人工智能可以帮助开发人员通过代码生成或建议等方式,更快地创建这些解决方案,但开发人员仍然需要能够对代码进行质量检查,来确保这些解决方案依然以不同用户群体的利益为先。

开发者通过提高这些软技能,可以增强自身的技术专业知识,还能够更有效地与同事及人工智能工具协作。

人工智能的不断发展,不仅改变了软件开发的格局,也改变了软件开发的格局,还有望彻底改变开发人员学习和编写代码的方式。

Sora在文章结尾再次强调:“人工智能并没有取代开发人员,而是补充了他们的工作,同时为他们提供了更多专注于编码和培养技术和人际技能的机会。

https://github.blog/2024-03-07-hard-and-soft-skills-for-developers-coding-in-the-age-of-ai/

4 月 25 ~ 26 日,由 CSDN 和高端 IT 咨询和教育平台 Boolan 联合主办的「全球机器学习技术大会」将在上海环球港凯悦酒店举行,特邀近 50 位技术领袖和行业应用专家,与 1000+ 来自电商、金融、汽车、智能制造、通信、工业互联网、医疗、教育等众多行业的精英参会听众,共同探讨人工智能领域的前沿发展和行业最佳实践。欢迎所有开发者朋友访问官网 http://ml-summit.org、点击「阅读原文」或扫码进一步了解详情。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部