当前位置: 首页 > 科技观察

自动化来势汹汹,程序员未来何去何从?

时间:2023-03-22 13:45:13 科技观察

AI、自动化,这些技术进步不仅威胁到其他行业的饭碗,甚至有声音说,即使是开发这些技术的程序员,也会失去自嘲的“码农”身份。例如,OpenAI前研究科学家AndrejKarpathy认为,在AI引领的软件2.0趋势下,传统程序员可能真的会失业。然而,与TylerElliotBettilyon相比,这些都是对程序员未来的片面看法。相对而言,他对程序员未来工作前景的分析更加全面和客观,值得从业者好好看看,思考未来的选择。我的一个朋友最近提出了一个我在不同场合听到过的问题,但形式不同:你认为IT和一些低端编程工作会像渡渡鸟那样走下去吗?看起来巨大的就业泡沫即将破灭。在我看来,技术和低端计算机科学相关工作仍然“声望”高薪的原因之一是荒谬的行话和公众对计算机的无知,但这两个将在未来10年内发生。岁月会消失……这个问题同时指向两点,一是技术工作的未来,二是对软件工程领域的普遍误解。虽然确实有很多“荒谬的行话”,但也确实有同样多的难题等待拥有合适技能的人来解决。一些软件工作肯定会消失,但一些拥有多年经验和知识的程序员将继续享有盛誉并获得丰厚的报酬;例如,最近AI研究人员的薪水激增,而相应的可用人才短缺是众所周知的。在瞬息万变的技术行业中保持与时俱进是一项挑战。通过查看现在取代哪些程序员的技术,您可以预测市场上哪些工作将会消失。此外,为了预测薪水的变化和对特定技能的需求,我们应该考虑社区学习编码的增长。正如Hannah指出“公众对计算机的无知”导致那些会编码的人的工资很高一样,公众对计算机的认知每年都在变得更加复杂。日益商品化对自动化取代工作岗位的担忧既不是新鲜事也不是没有根据的。在任何领域,尤其是在技术领域,市场力量都会推动公司走向自动化和商品化。Gartner的炒作周期曲线很好地诠释了这一现象。Gartner的2017年炒作周期曲线随着时间的推移而持续,具体的想法和技术将生产力推向“平稳期”并最终实现自动化。但任何回顾历史的人都可以得出结论,自动化有能力摧毁某些就业市场。从农作物收割到汽车组装等行业的技术发展正在取代和增加人力,从而降低成本。一位教授曾在他的编译器课程中总结道:“看看纺织和钢铁行业的历史:你是想制造机器和工具,还是想操作这些机器?”这里的“机器”比喻是指计算机编程语言。教授其实是在问:你是想用JavaScript开发一个网站,还是想开发一个驱动JavaScript的V8引擎?网站创建已经通过WordPress等工具实现了自动化。另一方面,V8的竞争者越来越多,其中一些正在解决开放研究问题。语言来来去去(想想今天还剩下多少Fortran工作?),但总有人在开发下一种编程语言。我们是幸运的,因为编程语言的实现也是用编程语言写的。成为软件领域的“机器操作员”会让您走上一条成为“机器制造商”的道路,这是以往任何钢厂工人都做不到的。语言、解释器和编译器的不断增加向我们表明,每台破坏工作的机器也提供了改进、维护等这些机器的新机会。虽然消失的工作清单越来越长,但全人类说“我猜已经没有工作了”的历史性时刻还没有到来。置瓶机的商品化将打击我们所有人,而不仅仅是软件工程师。纵观历史,人类劳动力已被非人类事物取代或增加,导致工作需要更少的人和更少的技能。在这一伟大的人类传统中,自动驾驶汽车和自动驾驶卡车只是心血来潮。如果创造和自动化的循环是生活中的事实,那么下一个合乎逻辑的步骤就是问:哪些工作和行业面临风险,哪些没有?谁自动化谁?AWS、Heroku和类似的托管托管平台已经永久改变了系统管理员/DevOps工程师的角色。互联网企业过去绝对需要自己的服务器专家。他们中的一些人精通Linux;有些人知道如何使用Apache或NGINX配置服务器;在访问上。虽然仍然有很多人知道如何去做,但AWS正在淘汰其中一些技能——尤其是需要较少经验的东西和硬件等东西。亚马逊(以及Netflix、谷歌等)仍然为精通物理基础设施的人员提供非常有利可图的职位,但SMB方面对这些职位的需求已大大减少。SalesForce、Tableau和SpotFire等“商业智能(BI)”工具开始接管历来属于软件工程师的地盘。这些系统减少了对内部数据库管理员的需求,但也增加了对SQL作为通用技能的需求。BI还减少了对内部报告技术的需求,但增加了对“集成工程师”的需求,他们的工作是自动化数据从企业到第三方平台的流动。曾经由Excel和电子表格主导的数据管理正在被推向脚本语言,如Python或R和SQL。一些工作会消失,但总体而言,对可以编写软件的人的需求将会增长。在更接近软件方面,数据科学是商品化的一个很好的例子。Scikit.learn、Tensorflow和PyTorch都是让每个人都能轻松编写机器学习软件的软件库。事实上,可以用同一个数据集跑很多不同参数集的机器学习算法,而泡芙算法几乎什么都实现不了(当然这样做是不明智的,这里只是一种可能)。我敢打赌,在接下来的几年里,BI公司将尝试将这些类型的算法集成到他们的工具中。在许多方面,数据科学就像5-8年前的网络开发——这是一个蓬勃发展的领域,由于“技能差距”,你几乎无法获得有效的知识。后来,随着Web开发训练营因整合而关闭,数据科学训练营取而代之。收购了最初的网络开发训练营(DevBootcamp)的Kaplan现在正在建立一个数据科学训练营(Metis),并决定关闭DevBootcamp,同时保持Metis运行。内容管理系统是最明显的工具示例之一,由于自动化,它消除了对软件工程师的需求。SquareSpace和WordPress是当今最流行的CMS系统之一。这些平台大大降低了仅具有少量前端Web开发技能的人的价值。事实上,建立网站并上线的门槛已经降低了很多,即使是没有编程经验的人也能每天成功地推出新网站。这些人无法做出一个服务于数十亿人的高度交互的网站,但绝对可以为自己的企业做出一个网站,为客户提供他们所需要的信息。一个包含如何寻找企业以及如何联系自己的信息的可爱登录页面对于当地餐馆、酒吧或零售店来说已经足够了。如果您的业务主要不是“Internet业务”,那么获得像样的在线网站从未像现在这样容易。结果,曾经繁荣的可以快速启动和运行网站的网络承包商行业变得不那么有利可图了。最后,如果在这种情况下忽视计算的物理方面,这种态度近乎傲慢。用MikeActon的话来说:“软件不是平台,硬件是平台”。搞软件的人至少学一点计算机体系结构和电气工程的知识是明智的。硬件的巨大变革,消费级量子计算机的出现将改变软件工程的一切。量子计算机还有很长的路要走,但对GPU的兴趣正在增加,而向并行化的转变是即将到来的转变。近年来,在对机器学习和“大数据”的渴望似乎无法抑制的时候,CPU的速度停滞不前。随着处理大型数据集的需求与日俱增,其他并行处理语言和框架如OpenMP、OpenCL、Go、CUDA等将继续成为主流。为了在短期内快速提高竞争力,将需要全面的显着并行化,而不仅仅是在操作系统、基础设施和视频游戏等高性能小众应用程序中。每个人都在学习编码网站无处不在。2017年StackOverflow的一项调查报告称,大约15%的专业软件工程师在“互联网/网络服务”公司工作。美国劳工部预计网络开发将继续以远高于平均就业需求的速度增长(2014年至2024年为24%)。鉴于其知名度,该行业的大部分重点将放在“缩小技能差距”上。编码训练营几乎只教授Web开发,类似的市场(如Udemy、Udacity和Coursera)也充斥着Web开发课程。整个Web开发堆栈的自动化程度不断提高,以及入门级新程序员涌入Web开发领域,这导致一些人预测软件开发人员将出现“蓝领”市场。一些人更激进,认为将这个行业推向蓝领市场是大型科技公司设计的策略。当然,其他人会说我们正走向另一个泡沫破灭。对特定技术不断变化的需求并不是新闻。技术语言和框架总是潮起潮落。Web开发的当前化身(“JS为王”)最终将做与2000年代初期Web开发相同的事情(还记得Flash吗?),除了这次许多流行的Web开发框架都有明确的(和专业)教育史。在你决定给自己贴上“React开发者”的标签之前,请记住曾经有人认为自己是“Flash开发者”。将自己的职业生涯挂在一种语言、框架或技术上,就像玩轮盘赌一样。当然,预测哪些技术会继续发展是相当困难的,但如果你打算找个东西全力以赴,我建议你可以遵循林迪效应(对于易碎的东西,每多活一天就会缩短它的寿命)寿命;相反,对于不脆弱的东西,多活一天就会延长寿命。)选择一些经得起时间考验的语言,比如C语言。下一代将拥有X世代甚至千禧一代所不具备的事实上的技术素养水平。结果之一是这些人将使用下一代CMS工具。这些工具会变得更好,年轻的员工也会更好地使用它们。这两个因素的结合肯定会降低低级IT和Web开发技能的价值,因为渴望技能的年轻人进入就业市场。高中也迎头赶上,开始开设计算机科学和编程课程,一些受过良好教育的高中生毕业后可能会立即进入职场成为编程实习生。另一大群新人是MBA和数据分析师。曾经由Excel主导的职位列表开始将SQL列为“最好拥有”甚至“工作要求”。Tableau、SpotFire、SalesForce等基于Web的指标系统继续取代电子表格,成为生成报告的主要工具。如果这种情况持续下去,更多的数据分析师将开始学习如何直接使用SQL,因为它比将数据导出到电子表格更容易。想要在职业阶梯上超越同龄人的人们正在学习数据库和统计方面的在线课程,并将其转化为语言。有了这些新技能,他们可以通过机器学习和统计图书馆的学习将自己定位为数据科学家。如果你走这条路,可以看看Metis的课程作为一个很好的例子。最后,获得计算机科学和软件工程学位的人数继续攀升。例如,普渡大学报告其计算机科学课程的申请在五年内翻了一番。康奈尔大学也见证了计算机科学专业毕业生的类似爆炸式增长。考虑到软件的增长和普及,这种趋势并不奇怪。年轻人很难想象计算机在我们的未来会扮演更小的角色,那么为什么不学一些能提供工作保障的东西呢。罕见与意料之中目前业界的一个普遍观点是,你在四年制大学计算机科学课程中获得的教育大多是不必要的东西。我在编码训练营的大厅里、在网络开发商店里,甚至从EricElliott这样的行业名人那里听到过很多次这样说。然而,反对的意见也很盛行,甚至有人说“所有的程序员都应该获得硕士学位”。我的观点和EricElliott的一样,我认为学习编程应该有更多的选择,4年的学位对于很多人来说可能不是最好的选择。此外,我同意WilliamBain的观点,即跨编程领域的基础技能对于职业生涯的长寿至关重要,但目前除了大学课程之外,你无法在任何地方找到这些信息。我曾经写过有抱负的工程师应该学习哪些技能作为长期职业的基础,并解释说为了帮助分享这些知识,我加入了Bradfield。各种形式和规模的编码学校正变得越来越普遍,这是有充分理由的。您无需了解大O表示法、晦涩的数据结构和算法细节即可学习编程。然而,尽管刚毕业的、炙手可热的斯坦福大学毕业生也可以与刚从HackReactor毕业的人竞争一些工作,但这只是一两个子行业的情况。编码学校和训练营的毕业生尚未申请嵌入式系统、密码学/安全、机器人技术、网络基础设施或人工智能研发方面的工作。但是这些领域就像网络开发一样正在迅速发展。一些与编程相关的技能已经开始从“稀有技能”过渡到“基本期望”。相反,构建像AWS这样强大的引擎的工作已经很普遍了。推动技术发展的大公司——如亚马逊、谷歌、Facebook、Nvidia和Space-X——通常不会寻找“对JavaScript有基本了解”的人。AWS每天为数十亿用户提供服务。为了支持这种负载,AWS基础设施工程师需要对网络协议和计算机架构有深刻的理解,并且有多年的相关经验。与任何学科一样,这里有业余爱好者和工匠。这些知名公司正在解决研究问题,以开发真正构建并真正突破能力界限的系统。然而,即使基本的编程技能变得越来越普遍,它们仍然难以填补空白。能够编写算法来预测基因序列变化以带来预期结果的人在未来将非常有价值。能够对卫星、航天器和机械的自动化进行编程的人将继续受到高度重视。这些领域不适合web前端开发的“3个月强化学习计划”,至少没有像样的成功先例。因为计算机科学始于“计算机”一词,我们可以假设到2025年所有年轻人都将对计算机有一种与生俱来的理解。不幸的是,计算机的普及并没有培养出对数学、计算机科学、网络基础设施、电气工程等有实际了解的新一代人。知道如何使用计算机与计算研究不同。尽管数学自古就有,但精通统计学的人相对较少,计算机科学也同样古老。Euclid发明了几种算法,每次发出HTTPS请求时都会使用其中一种;我们每次登录网站时都使用HTTPS的事实并不会自动告诉任何人这些协议是如何工作的。双峰薪酬分布工资分布较为成熟的专业领域往往存在双峰薪酬分布模式:相对少数的从业者赚取可观的收入,大部分人的工资都不错,但不在前1%的行列。美国全国合法就业组织收集的数据非常清楚地表明了这一现象。大多数法学院毕业生的收入在45,000美元到65,000美元之间,这是一大笔钱,但很难与“顶级专业人士”联系在一起。法律职业的薪资分配我们倾向于认为所有的法学毕业生都有可能成为律师事务所的合伙人,但实际上他们有很多路可以走:律师助理、文员、公设辩护人、法官、企业法律服务、合同撰写和更多的。计算机科学专业的毕业生也有很多选择,从网络开发到嵌入式系统。基本的编程技能将继续是一种期望,而不是“拥有就不错”,我怀疑编程工作的类似分布也会随之而来。虽然仍有一类程序员会通过推动技术的发展而赚到大钱,但将为新的以计算机为中心的经济提供动力的中级程序员队伍将会增长。Web开发人员的平均工资肯定会随着时间的推移而下降。话虽如此,我怀疑“程序员”职位的总数只会继续增长。随着劳动力供应开始满足需求,希望我们能看到各种中级编程工作的健康繁荣。开辟无限可能性的程序员也将继续获得最高的职业薪水。无论您属于哪一类程序员,从事技术工作都意味着在您的一生中继续接受教育。如果你想成为Type2程序员,你必须投资于学习如何创造机器,而不仅仅是使用它们。