作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
山姆梧桐

山姆梧桐

《欧博体育app下载》高级编辑
12 的经验

山姆梧桐是Toptal的高级工程编辑,也是一名开源网络开发者. 他在多个行业有超过十年的作家和编辑经验, 并与国际科技初创公司和数字产品代理商合作,提供软件文档, 教育资源, 以及多媒体营销内容.

有特色的专家

特色专家头像

曾在宝洁任职 & 赌博

Joao是一名拥有10多年经验的AI开发人员. 他拥有波尔图大学计算机科学硕士学位,并在机器学习和深度学习方面获得多项认证.
特色专家头像

10年经验

Dennis是一名具有项目管理专业知识的全栈移动开发人员. 作为SocialKit的研发副总裁, 在他的监督下,多个应用的月下载量达到了六位数.
特色专家头像

曾在欧洲航天局工作

auramesim是一名具有Java和Linux服务器DevOps背景的全栈网络开发人员. 他拥有超过20年的工程师经验,最近专注于人工智能技术.
分享

生成式人工智能(Gen AI)正在从根本上重塑这种方式 软件开发人员 编写代码. 几年前才在世界上发行, 这种新兴技术已经无处不在:在2023年 开发运维状态报告,多于 60%的受访者 表明他们经常使用人工智能来分析数据, 生成和优化代码, 并自学新的技能和技术. 开发人员不断地发现新的用例,并改进他们使用这些工具的方法,而工具本身也在加速发展.

考虑像认知实验室这样的工具 Devin人工智能2024年春季, 该工具的创建者表示,它可以取代开发者解决至少13个GitHub开放问题.86%的时间. 这听起来可能并不令人印象深刻,直到你考虑到2023年底这项任务的上一个行业基准是 1.96%.

软件开发人员如何适应能够编写软件的软件的新范式? 随着时间的推移,随着技术的发展,软件工程师的职责将会是什么? 会永远需要一个人——一个活生生的人类专家来掌舵吗?

我们采访了三名具有不同后端经验的Toptal开发人员, 移动, 网络, 以及机器学习开发,以了解他们如何使用生成式人工智能来磨练他们的技能,并在日常工作中提高他们的生产力. They shared what Gen AI does best 和 where it falls short; how others can make the most of generative AI for software development; 和 what the future of the software industry may look like if current trends prevail.

开发者如何使用生成式AI

当谈到用于软件开发的人工智能时,最受欢迎的工具包括OpenAI的工具 ChatGPTGitHub副驾驶员. ChatGPT为用户提供了一个简单的基于文本的界面,用于提示大型语言模型(LLM)关于太阳下的任何主题, 并接受了世界上公开的互联网数据的训练. 副驾驶员, 哪个直接位于开发人员的集成开发环境中, 通过建议要编写的下一行代码提供高级自动完成功能, 并接受过GitHub上所有可公开访问的代码的培训. 综上所述, 这两个工具理论上包含了开发人员可能面临的几乎所有技术问题的解决方案.

因此,挑战在于知道如何最有效地利用这些工具. 开发者需要了解什么类型的任务最适合AI,以及如何适当地调整他们的输入以获得期望的输出.

流行的人工智能工具分为“通用聊天机器人”(如ChatGPT和Bing)或“代码专用工具”(如副驾驶员和Codeium)。.

作为AI专家和实习程序员

“我每天都用副驾驶仪, 而且它确实经常预测我要写的代码行,” Aurelien Stebe,一个Toptal 全栈网络开发人员人工智能工程师 他拥有超过20年的经验,从在咨询公司领导工程团队到在欧洲航天局担任Java工程师. st通过构建OpenAI API(为副驾驶员和ChatGPT提供动力)又向前迈进了一步 Gladdis的开源插件 黑曜石 它包装了GPT,让用户创建自定义AI角色,然后与他们互动. “生成式人工智能既是一个可以与你进行头脑风暴的专家同事,也可以与你的专业水平相匹配, 您可以将简单的原子编码或编写任务委托给初级开发人员.”

他解释说,新一代人工智能最有用的任务是那些需要很长时间才能手动完成的任务, 但可以快速检查完整性和准确性(想想:将数据从一种文件格式转换为另一种文件格式). GPT对于生成代码的文本摘要也很有帮助, 但是你仍然需要一个能理解技术术语的专家.

Toptal iOS工程师 丹尼斯李森科事件 与斯特·萨梅斯一样,他对新一代人工智能的理想角色也有同样的看法. 他有几年领导产品开发团队的经验, 并观察到,自从将Gen AI融入其中以来,他自己的日常工作流程有了显著改善. 他主要使用ChatGPT和 Codeium, 副驾驶的竞争对手, 他认为这些工具既是主题专家,也是实习生,永远不会因为执行简单而感到厌倦或烦恼, 重复的任务. 他说,它们帮助他在编写代码时避免了繁琐的“体力劳动”——比如设置样板, 重构, 以及正确构建API请求.

对于李森科来说,Gen AI减少了他日常工作中的“开环”数量. 在这些工具可用之前, 解决一个不熟悉的问题必然会造成巨大的动力损失. 这在涉及api或框架的项目中尤其明显,因为他需要额外的认知开销来弄清楚如何找到解决方案. “生成式人工智能能够帮助我快速解决80%的问题,并在遇到问题的几秒钟内关闭循环, 不需要前后上下文切换.”

在执行这些任务时使用AI的一个重要步骤是确保重要的代码在执行之前没有bug, 说 若昂·德·奥利维拉,一个Toptal AI和 机器学习工程师. 在过去的十年里,Oliveira为几个产品团队开发了人工智能模型,并参与了生成式人工智能集成,并亲眼目睹了他们做得很好, 以及他们的不足之处. 作为赫斯特的MVP开发者, 他在使用生成式人工智能从非结构化数据中提取结构化数据方面取得了98%的成功率. 在大多数情况下,复制和粘贴人工智能生成的代码并期望它能正常运行是不明智的——即使没有幻觉, 因为AI缺乏项目的完整背景和目标,所以总是有一些需要调整的地方.

Lysenko同样建议那些想要充分利用生成AI编码的开发者不要一次性给它太多的责任. 根据他的经验, 当给出范围清晰且遵循可预测模式的问题时,这些工具的效果最好. 任何更复杂或更开放的东西只会让人产生幻觉.

人工智能作为个人导师和研究者

Oliveira经常使用Gen AI学习新的编程语言和工具:“我学会了 起程拓殖 在一小时内使用GPT-4. I would ask it to draft a script 和 explain it to me; then I would request changes to the code, 询问各种功能,看看它们是否有可能实现.他说,他发现这种学习方法比通过谷歌搜索和教程获取同样的信息要快得多,也更有效.

但是和其他用例一样, 只有当开发者拥有足够的技术知识,能够对AI何时产生幻觉做出有根据的猜测时,这种方法才真正有效. “我认为,当我们期望它是100%真实的时候,它就会出现不足——我们不能盲目地依赖它,奥利维拉说. 当面对任何重要任务时,小错误都是不可接受的, 他总是将人工智能输出与搜索引擎结果和可信资源进行交叉引用.

也就是说,当事实的准确性是最重要的时候,一些模型更可取. Lysenko强烈鼓励开发人员选择GPT-4或GPT-4 Turbo,而不是像3这样的早期ChatGPT模型.他说:“我再怎么强调他们的不同也不为过. 这是白天和黑夜.5只是没有能力进行同样水平的复杂推理.根据OpenAI的内部评估,GPT-4是 可能性增加40% 提供比前任更真实的回应. 对于那些使用它作为个人导师的人来说,这一点至关重要, GPT-4能够准确地引用其来源,因此其答案可以交叉引用.

Lysenko和st还描述了使用Gen AI来研究新的api,并帮助集思广益,解决他们面临的问题. 当法学硕士充分发挥其潜力时,他们可以将研究时间减少到几乎为零 海量上下文窗口. 而人类一次只能在我们的上下文窗口中保存几个元素, llm可以处理越来越多的源文件和文档. 这种区别可以用读书来描述:作为人类, we’re only able to see two pages at a time—this would be the extent of our context window; but an LLM can potentially “see” every page in a book simultaneously. 这对我们如何分析数据和进行研究有着深远的影响.

“ChatGPT一开始只有3000个单词的窗口,但现在GPT-4支持超过10万个单词。. “双子座 它的容量能达到100万字,而且分数近乎完美吗. With earlier versions of these tools I could only give them the section of code I was working on as context; later it became possible to provide the README file of the project along with the full source code. 现在,在我问第一个问题之前,我基本上可以把整个项目作为背景放在窗口中.”

优化生成式AI工具的使用

Gen AI可以极大地提高开发人员的编码效率, 学习, 还有研究任务——但前提是使用得当. 如果没有足够的上下文,ChatGPT更有可能产生荒谬的反应 几乎 看起来正确的. 事实上,研究表明GPT 3.5对编程问题的回答包含了惊人的错误信息 52%的时间. 不正确的上下文可能比没有上下文更糟糕:如果将编码问题的糟糕解决方案作为一个好例子来展示, ChatGPT将“信任”该输入,并基于该错误基础生成后续响应.

st2013.2013.10使用诸如为Gen AI分配明确角色并为其提供相关技术信息等策略来最大限度地利用这些工具. “告诉人工智能它是谁,以及你对它的期望是什么,这一点至关重要。. “在《欧博体育app下载》中,我有一个头脑风暴AI, 转录人工智能, 代码审查AI, 以及为我的每个项目定制的人工智能助手,这些项目都有所有必要的上下文,比如readme和源代码.”

你给它的背景就越多, 最好是小心不要意外地将敏感或私有数据提供给ChatGPT等公共模型, 因为它可以(而且很可能会)用于训练模型. 研究人员已经证明,这是可能的 提取真正的API密钥和其他敏感凭据 通过副驾驶和 亚马逊CodeWhisperer 开发人员可能不小心硬编码到他们的软件中. 根据IBM的 数据泄露报告的成本在美国,凭证被盗或以其他方式受损是全球数据泄露的主要原因.

提供理想响应的快速工程策略

你提示Gen AI工具的方式会对你收到的回复质量产生巨大影响. 事实上,提示的影响如此之大,以至于它已经产生了一个分支学科,名为 提示工程,它描述了编写和精炼提示以生成高质量输出的过程. 除了得到语境的帮助, 当给出明确的范围和期望响应的描述时,AI也倾向于产生更有用的响应, 例如:“给我一张按重要性排序的清单.”

及时申请工程专家 各种各样的方法 诱使法学硕士做出最理想的回应,包括:

  • 零次、一次和几次学习: 不要举例子, 或者一个, or a few; the goal is to provide the minimum necessary context 和 rely primarily on the model’s prior knowledge 和 reasoning capabilities.
  • 的思路提示: 告诉人工智能一步一步地解释它的思维过程,以帮助理解它是如何得出答案的.
  • 迭代的提示: 通过迭代提示优化AI的输出,引导AI获得期望的结果, 比如要求它重新措辞或详细说明之前的输出.
  • 负面的提示: 告诉AI不要做什么,比如要避免哪些内容.

李森科强调提醒聊天机器人在提示中保持简短的重要性:“GPT 90%的回复都是废话, 你可以通过直接表达你对简短回复的需求来减少这一切.他还建议让人工智能总结你交给它的任务,以确保它完全理解你的提示.

Oliveira建议开发人员使用llm本身来帮助改进提示:“选择一个没有像您希望的那样执行的示例,并询问为什么它会提供这种响应.事实上,这可以帮助你下次更好地制定你的提示, 你甚至可以问法学硕士,它会建议如何改变你的提示,以获得你期望的响应.

快速工程的最佳实践:提供上下文, 描述格式, 平衡简单与复杂, 实验和迭代.

据st称, 在与人工智能合作时,强大的“人际”技能仍然很重要:“记住,人工智能是通过阅读人类文本来学习的, 所以人类交流的规则适用于:要有礼貌, 清晰的, 友好的, 和专业. 像经理一样沟通.”

为了他的工具格拉迪斯, st 以Markdown文件的形式为不同的目的创建自定义角色,作为基线提示. 例如, 他的代码审查角色会被提示以下文本,告诉AI他是谁以及对他的期望是什么:

指令

你是一个代码审查AI,旨在仔细审查和改进源代码文件. 你的主要角色是作为一个批判性的审稿人, 识别并建议对用户提供的代码进行改进. 您的专长在于增强代码文件的质量而不改变其核心功能.

在你的互动中,你应该保持一种专业和尊重的语气. 你的反馈应该是建设性的,并为你的建议提供清晰的解释. 您应该优先考虑最关键的修复和改进, 指示哪些更改是必需的,哪些是可选的.

您的最终目标是帮助用户改进他们的代码,直到您再也找不到任何需要修复或增强的地方. 此时此刻, 你应该表明你找不到任何改进的地方, 表示代码已准备好使用或部署.

您的工作受到“Gang of Four”设计模式书中概述的原则的启发, 软件设计的开创性指南. 您努力在代码审查和分析中坚持这些原则, 确保您审查的每个代码文件不仅正确,而且结构良好,设计良好.

的指导方针

-优先考虑你的纠正和改进, 把最重要的列在上面,不太重要的列在下面.

-将你的反馈整理成三个不同的部分:格式、更正和分析. 每个部分都应该包含与该类别相关的潜在改进的列表.

指令

1. 首先检查代码的格式. 确定缩进的任何问题, 间距, 对齐, 或者整体布局, 使代码美观且易于阅读.

2. 接下来,关注代码的正确性. 检查任何编码错误或打字错误,确保代码语法正确,功能正常.

3. 最后,对代码进行更高级的分析. 寻找改进错误处理的方法, 管理边缘案例, 同时使代码更加健壮, 非常高效。, 和可维护的.

提示工程既是一门科学,也是一门艺术, 需要大量的实验和试错才能获得理想的输出. 自然语言处理(NLP)技术的本质意味着,没有“一刀切”的解决方案可以从法学硕士那里获得所需的东西——就像与人交谈一样, 你对词语的选择,以及你在清晰与清晰之间做出的取舍, 复杂性, 演讲的简洁会影响你的需求被理解的程度.

生成式AI在软件开发中的未来是什么?

随着新一代人工智能工具的兴起, 我们已经开始看到有人声称,我们所熟悉的编程技能很快就会过时:人工智能将能够从头开始构建整个应用程序, 不管你是否有足够的编码能力来实现它. 李森科对此并不确定——至少在短期内不确定. 李森科表示:“生成式人工智能无法为你编写应用程序. “它与任何主要是视觉性质的东西作斗争,比如设计用户界面. 例如, 我发现没有任何生成式AI工具能够设计出符合应用现有品牌指导方针的屏幕.”

这并不是因为缺乏努力: V0来自云平台Vercel 最近已经成为人工智能生成ui领域中最复杂的工具之一, 但它仍然局限于React代码 使用shadcn/ui组件. 最终结果可能有助于早期的原型设计,但它仍然需要一个熟练的 UI开发人员 执行定制的品牌指南. 似乎这项技术还需要更成熟一些,才能真正与人类的专业知识竞争.

Lysenko认为,直接应用程序的开发正变得越来越商品化, 然而, 他担心这会长期影响他的工作. “客户基本上不再寻找会写代码的人,”他说. “他们在寻找那些理解他们的问题,并用代码来解决问题的人.“对于开发者来说,这是一个微妙但明显的转变, 随着时间的推移,谁看到自己的角色越来越以产品为导向. 人们越来越期望他们能够为业务目标做出贡献,而不仅仅是连接服务和解决bug. 李森科认识到这给一些人带来的挑战, 但他更愿意把生成式人工智能看作是他工具箱中的另一个工具,它可能会让他在那些可能跟不上最新趋势的竞争中占据优势.

整体, 最常见的用例——以及该技术最大的缺点——都表明,人工智能产生的一切都需要专家来审查. 如果你不明白最终的结果应该是什么样子, 那么你就没有任何参考框架来决定AI的解决方案是否可以接受. 像这样, st认为人工智能短期内不会取代他作为技术领导者的角色, 但他不确定这对早期职业开发者意味着什么:“在某些情况下,它确实有可能取代初级开发者, 这让我很担心——下一代高级工程师将从哪里来?”

不管, 现在法学硕士的潘多拉盒子已经打开了, 在未来的软件开发中,我们似乎不太可能回避人工智能. 有远见的组织应该明智地帮助他们的团队提高这类新工具的技能,以提高开发人员的工作效率, 以及教育所有利益相关者,让他们了解将人工智能引入我们的日常工作流程所带来的安全风险. 最终,这项技术的强大程度取决于使用它的人.

Toptal工程博客的编辑团队向 斯科特•芬耐尔 用于回顾本文中介绍的技术内容.

了解基本知识

  • 是什么让开发人员富有成效?

    高效的开发人员有很强的解决问题的能力, 高效的工作流程, 有效的时间管理技能, 以及持续学习的心态. 高效的开发人员也总是在寻找最小化认知开销和花费在重复性任务上的时间的方法, 并乐于采用新工具来帮助实现这一目标.

  • IDE如何提高程序员的工作效率?

    集成开发环境(IDE)可以通过自动完成等特性提高开发人员的生产力, 检查和调试插件, 并与版本控制系统集成,以有效地跟踪更改和跟踪错误的来源.

  • 如何成为一名高效的开发人员?

    成为一个更高效的开发者, 你应该寻找一些方法来简化你的工作流程,并使用一些工具来简化你的任务. 跟上旨在提高生产力的最新技术,如生成式人工智能.

  • 您如何衡量开发人员的生产力?

    开发人员的生产力可以很容易地根据完成的任务来衡量, 修复的bug数量, 或编码行数, 但这些并不总是准确的测量. 通过考虑开发人员的贡献如何影响项目里程碑来平衡这些指标, 业务目标, 用户满意度.

聘请Toptal这方面的专家.
现在雇佣

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

Toptal开发者

加入总冠军® 社区.