许多软件专业人士可能已经听说了以下的最新消息。
OpenAI O3模型在编码方面取得了巨大进展
Imagen
来源:《算法桥》
Salesforce将在2025年停止招聘软件工程师
微软计划裁员
来源:《商业内幕》
传闻:微软裁员传闻
以上因素的结合可能会给人一种印象,即AI即将接管软件工程师的编码工作。然而,我家有两位软件工程师,我对此一点也不担心。在这篇文章中,我分享一下我的看法。
- 软件工程师一直是削减成本的目标
原因很简单:软件工程师的薪水很高。亚马逊L7级别的首席软件工程师Steve Huynh公开透露了他2021年的收入:477,560美元,这使得这类职位成为削减成本的主要对象。
想象一下,如果你有一个出色的应用程序创意,想在美国组建一个由10个技术熟练的程序员、业务分析师和测试人员组成的团队,招聘这些比一般人更优秀的人才,每年仅在薪水上就可能花费超过200万美元。
顺便说一下,这就是为什么独立创业者(Solopreneur)成为趋势的原因。
如果一个AI工具能够以软件工程师薪水的10%执行相当于软件工程师的任务,那么企业主肯定会欣然解雇这些员工。
这是一个大的“如果”。
- 软件工程师,至少是优秀的工程师,很难被替代。
Lazy AI的首席执行官Peter Szalontay不相信目前的AI能够替代软件工程师,并提供了六个理由。这里我只展示其中的第一个。
作为一名软件工程师,编写基础工作代码在软件开发中只是一个非常小的努力。一个更具挑战性的任务是确保不引入回归错误,实际上,连在FAANG工作的很多软件工程师也未必能掌握这一点。
“在我看来,伟大的开发者并不总是伟大的测试员,但伟大的测试员(同时拥有强大的设计能力)可以成为伟大的开发者。这是一种心态和激情……他们是金子。”
——Patrick Copeland,谷歌高级工程总监,在一次访谈中(2010)
“测试比开发更难。如果你想做好的测试,你需要把最优秀的人放在测试岗位。”
——Gerald Weinberg,软件传奇人物,在一次播客中(2018)
作为一名独立创业者,我已经成功地为我的所有Web应用程序(大多数是在我的空闲时间开发的)执行了每日生产发布,得益于我的端到端(UI)测试自动化和持续测试过程(作为每日回归测试,若当天有改动)。
我不担心AI会取代我,因为我具备Patrick Copeland和Gerard Weinberg所强调的稀有技能。我的女儿在端到端测试自动化和持续测试方面非常出色(她是FAANG公司的一名软件开发工程师),我仍在指导她进一步提高这些技能(我很久以前就停止教她编码了。测试自动化有助于掌握高级软件设计。想想看:测试驱动设计)。
- AI/自动化可能会替代一些低级开发人员
“低级”并不是指薪水——而是指那些工作性质上大部分是重复性的角色。许多所谓的“X产品开发人员”可能是最早面临被替代的群体。例如,我曾观察过SharePoint、Dynamics CRM、Guidewire和BizTalk开发人员的工作。即便那时,我就认为他们的大部分任务可以被自动化——远在AI尚未登场之前。
实际上,像Dynamics CRM这样的软件产品是按照预定的流程进行操作的,提供有限的定制功能,没有重大编程工作。
我曾在2007年短暂接触过BizTalk,被其高额的合同费用和学习C#的新机会所吸引(按照《实用程序员》一书中的建议)。然而,这成了我作为软件工程师职业生涯中最糟糕的经历之一。该工具的复杂方法让我感觉像个傻瓜,迫使我和同事们遵循复杂的流程来完成那些本可以通过简单编程更快速完成的任务。
不过,从那段黑暗的时光中,唯一的好处是,我在工作中不需要动脑,所以我开始每天在业余时间练习端到端测试自动化(使用Ruby)并启动了我的第一个副业项目。
- 即使AI驱动的编码有所突破,测试的需求仍会增加
AI可能会在生成代码方面变得更强大,但正如Lazy AI的首席执行官所说(见上文):“如果LLM在一次操作中做了5个更改,那么当它完成编码时,里面可能有多个错误,你甚至不知道如何触发这些错误。”
所以,对我来说,真正的软件工程师是那些通过自动化完全拥抱质量的人。如果他们不这样做,我就不会认为他们是一个真正的软件工程师。想想其他工程学科——质量在他们的工作中的每个方面都被非常重视。