ChatGPT对新的软件开发人员意味着什么?

287 阅读8分钟

最近,我看到这两个世界随着OpenAI的ChatGPT聊天机器人和它能(或不能)做的不可思议的事情的突然出现而撞在一起。

在这篇文章中,我们将探讨ChatGPT是什么,以及它对当前和未来的软件工程师意味着什么。

什么是ChatGPT?

ChatGPT是OpenAI开发的一种新的对话式人工智能聊天机器人,在2022年11月下旬达到了公众可见度。与传统的聊天机器人不同,ChatGPT能够利用机器学习的进步,使用一种叫做转化器的东西,使它对它所训练的文件有更多的上下文意识。这使它能够产生模仿你可能从人类那里看到的反应。

ChatGPT与以往任何产品的不同之处在于其反应的广度,以及其生成新反应的能力,这些反应似乎具有高度的智能。这意味着我可以要求ChatGPT给我讲故事、勾勒文章、甚至生成代码,它会给我一些看起来有说服力的东西,甚至可能是可用的。

ChatGPT generating a for loop in Java and explaining it

然而,ChatGPT并不是类似人类的智能,尽管它是我见过的最接近模拟人类的计算机。

ChatGPT不能做什么

ChatGPT对其局限性持开放态度,并在其登陆页面上显示:

ChatGPT Limits

ChatGPT的智能在于它在对话中的上下文意识和它所训练的信息的广度。但这是历史信息。

我确实看到ChatGPT犯过错误。它给我提供了与事实不符的软件库信息,甚至编造了不存在的库,并把我引向早已退役的库。

ChatGPT不是人,缺乏能力:

  • 理解它所产生的信息可能是不正确的(或传达它对自己的答案缺乏信心)。
  • 理解人类的情感/实际需求
  • 理解我们世界的基本特征

作为一个幽默的例子,我在今年的会议上做了一个题为:"用Azure认知服务自动化我的狗 "的演讲。这是一个有趣的探索,使用人工智能来识别图像中的物体,从文本中产生语音反应,并解释人类的文本。

当我问ChatGPT如何组织这次演讲时,它给了我一个完美的大纲......除了它建议人工智能可以听我的狗的口语并作出适当的反应。尽管它的智能和令人印象深刻,但它没有掌握一个基本事实,即我的狗不会说英语

ChatGPT能够为你生成内容,这是令人难以置信的,但这也有一些限制。首先,ChatGPT并没有真正合成新的东西。相反,它正在以创造性的方式安排它以前遇到过的东西。

它可能是在安排英语、故事结构或在它认为值得信赖的地点看到的答案的各个方面,但它是在以新的方式安排它已经知道的内容和结构。

这意味着,如果我们停止创造新的文章、故事、程序和艺术作品,ChatGPT和类似的系统将不会自己发明任何新东西。

像ChatGPT这样基于转化器的系统的另一个严重限制是,它们很难理解它们是如何想出内容的。这意味着,如果ChatGPT产生了一个回应,这个回应可能是一字不差地引用了别人的内容,而你甚至不会知道。

然而,ChatGPT和类似的系统可以生成一些非常好的启动代码,给你的答案往往比没有的更有帮助。

人们还会需要软件开发人员吗?

由于基于变压器的系统在这一点上只有五年的历史,这就引出了一个问题:再过五年,我们还需要开发人员吗?

让我告诉你一个小秘密:自从我成为一名程序员以来,人们一直在谈论无代码和低代码的软件开发方法,将那些讨厌的软件开发人员从方程中移除。

到目前为止,这些系统都没有兑现他们的承诺。这是因为软件开发是一个极其复杂的领域,需要你考虑到开发的许多不同方面,包括:

  • 满足业务需求
  • 质量/可测试性
  • 交付速度(最后期限、项目计划等)
  • 易于维护
  • 当用户数量或数据量增加时的性能
  • 安全性
  • 可解释性

事实证明,为了满足一个软件项目的不同和相互竞争的要求,你需要能够理解人们,平衡这些相互竞争的问题,并提供一个创造性的解决方案,在短期和长期内满足这些需求。

因为ChatGPT实际上并不了解它所生成的内容,所以它不知道它的回应是否能起作用或与你所有的业务需求有关。

因为ChatGPT生成的代码是基于它以前遇到过的代码,它不能保证生成的代码:

  • 不存在错误
  • 有完善的文档
  • 易于理解和维护
  • 不存在安全漏洞
  • 满足企业提出的全部要求
  • 与互联网上遇到的代码没有完全重复
  • 在生产环境中能充分表现出规模。

也许最关键的是,ChatGPT不能修改以前编写的代码,也不能理解大型解决方案并根据需要进行修改。

这项技术只有五年的历史,它将在未来发展并变得更加透明,更容易控制,甚至更加有用,但它永远不会:

  • 为自己思考、
  • 了解你的业务背景、
  • 或理解参与和投资于你的系统的人。

即使ChatGPT的后继者克服了许多这些限制,你仍然需要一个对技术有深刻理解的人,才能告诉它该怎么做,并评估其输出的质量。

ChatGPT如何在我的技术之旅中帮助我?

我认为ChatGPT、GitHub CoPilot、Amazon CodeWhisperer和类似的系统(以及后面的系统)并没有取代开发人员,而是作为开发人员的工具带中的新工具。

这些代码生成工具善于生成基本的 "模板 "代码,然后可以由专业的开发人员进行完善和修改,以满足你的需求。

然而,作为一个新的学习者,我鼓励你不要过多地使用ChatGPT来生成代码。这是因为你还在建立生成for循环、方法和变量声明所需的精神肌肉。你还在学习对事物进行批判性思考,以建立自己的理解。

在Tech Elevator,我们的进度很快,我看到一些学生抵制每天的家庭作业练习要求,认为这低于他们的水平,或者不值得他们花时间去做,结果发现通过跳过这些工作,他们没有发展出软件开发更复杂方面所需的技能和理解。我认为ChatGPT对新学员也有这样的诱惑。

我并不是说ChatGPT是危险的,或者是要完全避免的。我的意思是,我想把它作为你已经学过的概念的复习资料,只有在不得已的情况下才用它来生成代码。事实上,我建议最初向人寻求帮助,而不是向ChatGPT寻求帮助,特别是当涉及到无法工作的代码时。

在你还没有内化编程机制的时候使用ChatGPT,就像要求一个学龄前儿童学习骑自行车,给他们一辆摩托车而不是三轮车或带训练轮的自行车。

ChatGPT可能是令人难以置信的,但你最好在你的旅程早期找到一个合格的开发人员来指导你,而不是依赖它的代码。人类不仅可以理解你,并根据你的经验、需求和情绪状态定制他们的答案,但坦率地说,在你有足够的经验之前,你甚至不知道该向人工智能系统提出什么正确的问题。

ChatGPT作为软件工程的工具***

作为一个经验丰富的开发者,我知道很多关于编程的事情,并将我经常使用的语法和方法牢记在心。然而,有些不经常使用的任务,我经常需要定期搜索快速复习。

在这方面,作为谷歌的替代品,ChatGPT很好地满足了我的需求。ChatGPT可以生成简单的代码供我参考(而不是复制/粘贴),并对其语法进行复习。

此外,在使用一个新的库或语言时,ChatGPT是非常宝贵的。我可能知道如何在一种编程语言中做一个for循环,但却忘记了另一种语言的语法。ChatGPT可以帮助我在不同语言之间更容易地转移我的现有知识。

最终,ChatGPT和紧随其后的系统标志着我们以前从未见过的新代码生成工具的出现。这些工具具有令人难以置信的强大功能和吸引力,但它们需要经过培训的专业人士的指导。学习编程将帮助你知道何时、何地以及如何使用这个工具来构建最好的软件。

就我个人而言,我非常期待看到未来的发展,看看我们是否能够改进和利用这些令人难以置信的工具,作为软件工程师建立更好的东西。