特别加餐|ChatGPT来了,工程师何去何从?

你好,我是编辑宇新。

为了帮助大家解决职业发展中遇到的问题,扫除迷茫,明确自己的成长路线和提升方向。4月上旬,极客时间组织策划了《21天职场突围特训营》,郑晔老师作为受邀导师,和同学们交流了程序员的职业能力图谱与成长规划等内容。前期问题收集时,有一个非常具有代表性的问题——最近ChatGPT火出圈了,作为程序员感觉危机感更强了,怎么破?

围绕这个问题,我结合老师直播分享的部分内容和后期追加采访,整理了这篇加餐,希望能给你带来启发。

极客时间:为什么程序员面对ChatGPT会感觉焦虑?

郑晔:这段时间ChatGPT特别特别地火,从ChatGPT再到GPT-4出来,很多人都在关注。在我看来,ChatGPT最大的优点其实就是门槛降低了,也就是拉低了人们认知AI这件事的门槛,普通人也可以多利用AI的能力了。

继“35岁危机之后”这个老生常谈的话题,很多同学又多了这个新的焦虑——现在即便是不太懂写程序的一个人,也可以用ChatGPT做一个应用,那我作为一个程序员的职业,还有未来吗?

这其实是我们每个程序员都需要关心的一个问题。我们需要重新思考“到底应该怎么去写程序”。

我从业二十多年了,这个问题也是我之前从未考虑过的事儿。但这个思考题肯定是要琢磨琢磨的,因为这意味着我们编程的整个工作模式都会改变。围绕这个问题,我们有很多东西现在都还不确定,自然会产生焦虑的心情。

极客时间:面对这些焦虑,我们怎样找到明确一些的努力方向呢?

郑晔:之前我在《10x 程序员工作法》里提到过一个框架,这是我解决问题时经常用到的一个思考工具。

  • Where are we?(我们现在在哪?)
  • Where are we going?(我们要到哪儿去?)
  • How can we get there?(我们如何到达那里?)

其实这三个问题说白了就是现状、目标和路径。

我们用这个框架来梳理一下,问题就明朗了。先看现状,其实程序员一直在努力提高自己在开发上的效率。比如最开始的代码补全能力(Autocompletion),我们写点什么就会拉出一个列表。

Github在大力发展Copilot,辅助程序员写代码的能力更强了。第一版的Copilot可以猜我们要写怎样的一段代码,只需要不断Tab过去,就能一点点生成代码,也可以在注释里面告诉它要完成什么样的代码,让它帮助我们写出来,这个能力很强。

那现在Copilot X出来之后又是一个进步,在一个专门的聊天窗口里告诉它,我要写这么一段代码(比如我要给这个代码写个单元测试),它就会帮你生成这个单元测试。虽然现在Copilot的定位还是“辅助”,但已经侧面说明我们处在一个新编程范式转变的前期。

这也让我去开始反思编程这件事。以前我也花过大量时间练快捷键、练指法,因为练好这些就能更熟练地写代码,提高效率。但现在再看,我们速度再快,也没AI给我们预测生成得快。所以很多操作层面上的工作价值,已经慢慢在降低了。

操作层面、手工层面的事儿降低了,动脑层面的事就会越来越重要。至少从目前ChatGPT的能力来说,我们未来更多的工作是在做什么?在交流,在思考好一件事儿应该干什么。到了那时,真正凸显的是我们作为程序员脑力劳动者的价值,而不再是纯粹动手的操作价值。

极客时间:这样的转变又会如何影响工程师的工作模式和发展呢?

郑晔:工程师的职业能力可以分成三类,包括技术能力、研发能力和业务能力。 AI对研发能力和业务能力的影响现在还没有体现,我这里拿更加直观的技术能力来举例。

图片

技术能力指的是工程师解决问题的能力,这是我们最基础、最核心的能力,包括但不限于后面这几方面。

  • 实现能力
  • 设计能力
  • 解决问题的能力

就拿实现能力来说,这肯定不是使用框架的能力。很多同学在学习的时候,学的是什么?学习的是这个框架吗?不是,框架只是提升我们工作效率的一个东西,但它不应该成为你工作的全部。

尤其ChatGPT出来之后,越是套路性的工作,价值就越低。未来的一个趋势就是就是这类代码会由ChatGPT去替你完成。当然不一定指的就是ChatGPT,还可能是其他的具有类似能力的东西。

所以我们需要停下仔细想想,如果我们现在的实现能力里,很大一部分能力是编码部分。那拿掉它以后,我们还剩什么?这其实是对我们能力方面一个非常大的挑战。

其实我在极客时间的几个专栏,都是围绕前面这些能力展开的。

《10x 程序员工作法》聚焦的是解决问题的能力。从目前来看,ChatGPT带来这拨AI兴起会在操作层面上给予我们极大的帮助,但在工作原则这件事上,并不会给我们带来太大的冲击。所以这门课里提到的“以终为始、任务分解、沟通反馈和自动化”这些原则现在依旧适用。

第二季,也就是这门课程《软件设计之美》重点关注设计能力。

《代码之丑》《程序员的测试课》对应的是实现能力,帮助你持续优化代码质量。

极客时间:听起来现在有点“过渡期”的感觉,GPT有它的优势,而工程师也有自己的长处。那在ChatGPT的影响下,你觉得工程师更应该重视沉淀哪些能力?

郑晔:首先是原理性、基础性的内容,因为好多东西都是基于这些基础生发而来的。所以,欠缺基础知识的程序员很难在技术的道路上走远。

我们有很多同学因为习惯使用层层封装的大框架,对底层的东西了解很有限。那么一旦哪一天,这个框架被抛弃了,这个技术能力直接就废掉了。这其实对职业发展来说是非常大的挑战。

而且从我从业二十来年的经验来看,这些东西就是会一遍一遍地不断被淘汰。

比如说我当年最开始学习编程的时候,流行的是微软C++的编程,比如MFC。这个东西学起来非常复杂,可是现在还有多少人用它编程呢?这样的框架,就算当年深入掌握了现在又能怎样呢。

但是系统底层就不一样了,里面有很多东西的运作机理是没变的。比如对操作系统的理解,这个东西很难变。所以越是基础的知识、越是原理性的东西,这个时候越需要我们深入掌握和理解。

其次,需要扎实端到端的实现能力,很多同学只是会写业务代码,但是并不清楚我这个东西到底怎么跑起来的,这是非常非常大的一个问题。比如,前端同学知不知道Web是怎样配置的,后端同学是不是了解从域名到负载均衡再到服务器的过程。

很多人解决问题的时候没有很明确的思路。就是因为对这个基本的流程,也就是端到端的实现都不了解。哪些东西在哪里跑都不清楚的话,分析问题的时候自然找不到重点。这也是为什么很多同学虽然具备技术能力,但对技术的理解一直提高不上去。

因此,我们自己做的这个东西,从头到尾到底是怎么跑起来的,这件事一定要弄清楚。

极客时间:老师在自己的公众号里提到过这么一句话——程序员的“标配”要不断扩展,扩展进来的东西,都是为了对抗日益复杂的软件复杂度。不知道ChatGPT现在可以看成程序员的标配么?

郑晔:我看到现在有不少的程序员写代码时旁边摆着一个ChatGPT窗口,随时随地都可以提问。但是,ChatGPT不一定是程序员的标配,而AI辅助未来一定是程序员的标配。原因很简单,人类写程序的手速无论如何都比不过机器。

很多人吐槽现在的ChatGPT或者Github Copilot不好用,它们本身存在不足,这是事实,但是,这就像当年骑马的人看汽车有各种各样的问题一样,这些问题是可以改进的,但趋势已经形成了。所以,我们应该学习的是如何更好地让AI为我们服务。

其实,写程序最难的并不是写代码的过程本身,而是花时间弄清楚要写什么。我们利用AI辅助编程的时候其实面临的问题是类似的,有人试了一下就说AI辅助不好用,原因可能并不是出在AI上,而是出在了自己身上。

当我们不能把问题描述出来时,AI也帮不了我们。就像同样用ChatGPT,有人可以把它当效率工具,有人只能把它当玩具,其中的差异就是你会不会写提示词。

把问题用语言描述清楚可能恰恰是很多程序员的弱项,有人会说程序员是内向的,但事实上你去看,真正优秀的程序员都会有非常好的表达能力。

所以,当AI辅助成为我们工作的一部分时,随之而来的必然是程序员的表达能力要求越来越高,至少是与AI沟通时的表达能力会成为程序员的标配。表达能力差的程序员最后可能会因为效率太低被行业淘汰。

精选留言

  • 公众号:业余草

    2023-05-23 08:59:18

    与其焦虑,不如行动!
    我们最应该焦虑的就是自己还不够勤奋。
    焦虑其他的,都毫无意义。
    焦不焦虑,该发生的都会发生!
  • 6点无痛早起学习的和尚

    2023-05-19 08:53:29

    💪🏻加油,利用 ChatGPT 帮助自己提效!我理解其实如果把《代码之丑》和《程序员的测试课》内容投喂给 ChatGPT,然后他可以按照这些内容的标准帮我实现一定的代码能力。
    作者回复

    这个想法很好,可以试试

    2023-05-19 19:14:56

  • ifelse

    2023-05-17 17:50:21

    加油,奥利给!