首页 > 国际新闻

谷歌大脑教 AI 写代码,是不是为了取代程序员?

文章作者:来源:www.shouzz.cn时间:2020-01-26



最近,在来自北京西部、阿里、380和其他互联网巨头的粉丝的帮助下,被“996”工作系统压垮的程序员集体“反叛”。

一些技术人员发起了一个名为‘996’的项目。众所周知的代码托管平台GitHub上的伊斯兰法院联盟(ICU),抵制互联网公司的超时工作,并收到了大量程序员的回复(尽管对他们没有用)。

当然,大陆不是程序员唯一的‘血汗工厂’。在硅谷,以互联网为中心的“斗争神学”也全年流行。从9点到5点工作的工人将被视为失败者。天使投资人加里维纳查克还出版了一系列倡导极限工作的畅销书,如《Crush It!》,鼓励“梦想驱动的互联网”的年轻开发者每天工作18小时。扎克伯格还告诉他的追随者,创办公司就像加入海豹突击队。

去年,优步工程师约瑟夫托马斯自杀了,他在遗嘱中将此归咎于公司的高压文化、长时间的工作和难以承受的心理压力。

为什么不再有程序员愿意为996奋斗文化买单?他们难道不是曾经和下一代科技百万富翁一样的互联网光环和标签吗?

问题的关键可能在于专业程序员(负责编辑代码的软件工程师)最初是一种智力活动,其典型形象最初是那些在车库里改变世界的开发者。然而,随着互联网产业的迅速扩张,它已经逐渐转向体力劳动。

对此,保罗,《黑客与画家》的作者?格雷厄姆,他做了一个非常好的概括.(你)只是负责实现领导意愿的技术工人,其职责是根据规范编写代码。事实上,这和挖沟机一样,从一端挖到另一端,仅此而已,他们所做的只是机械工作。

显然,在程序开发过程中只能充当代码工具的程序员将会面临一个非常残酷的局面,也就是说,他们在劳动力市场上没有讨价还价的能力:他们将不得不做公司要求他们做的任何事情,如果做不到就没完没了地加班,如果不想做就必须离开。

对于互联网公司来说,当核心技术人员被迫加班且日渐疲惫时,他们没有时间去思考增加/删除这个功能“代码是否漂亮”的必要性和自己的技术理念,企业的产品体验难以创新和升级。

当然,“996机制”旨在“合法”迫使程序员自愿辞职。对于大多数必须通过“996”来提高生产率的公司来说,这显然是劳资关系中的“两败俱伤”局面。

理想的模式是什么?也许我们可以考虑一种新的可能性:即把大量现在必须由人类程序员完成的机械工作交给人工智能,这样员工就可以从冗长乏味的“手工工作”中解脱出来,从事更有价值的“智力工作”,并进行有效的创造。

机器和人类有没有可能相互合作,重新发现越来越接近极限的开发效率?至少谷歌最新的大脑研究正试图达到这个目标。

互联网圈的劳工革命:让神经网络写下‘源代码’

人类软件工程师生活在什么样的现实生活中?

来自顶级互联网公司的软件工程师挣得更多可能是一种共识。据被誉为程序员求职神器的招聘网站Triplebyte称,硅谷高级软件工程师的年薪往往可以达到14万到17万美元,相当于约92万到112万元。不包括许多额外的选择、股息、利益等。

在中国,高级工程师可以轻松进入一线城市的高收入群体。

而“魅力四射”背后的价格是几乎所有程序员都加班。一名谷歌可靠性工程师从早上9点一直工作到午夜之后,这是完全正常的。由于海湾地区的高房价,他们经常需要花3-4个小时在路上通勤。

除了工作时间威胁程序员的健康,还有可怕的工作压力。高速的工作节奏、严格的项目截止日期、大量积压的工作任务以及在处理公司更重要事务时的焦虑,都是高薪光环背后独特的“影子”。结果,许多硅谷程序员进入了一个长期的“工作倦怠”(崩溃)。

更残酷的是,一旦他们的工作效率下降,“成本效益”将显得极其“不经济”,并提前结束他们的职业生涯(你可以称之为优化、裁员、996人等等)。

由于大公司的程序员和装配线工人之间没有区别(产品完全是根据设计草案和要求用代码实现的),使用人工智能将他们从超负荷工作中解放出来是非常必要和有价值的。

谷歌大脑发布的最新论文使神经网络能够完成这项有价值的工作源代码编辑。这是怎么发生的?

为了让神经网络学习“编程”,它必须首先理解人类程序员是如何完成这项工作的。谷歌的大脑解决方案围绕着理解人类编码的过程(例如GitHub的承诺),并使用深层神经网络模拟整个编辑过程。

具体过程如下。研究人员从成千上万的Python开发人员那里收集了数百万个细粒度源代码,构建了一个大型编辑序列数据集,训练了一个模型,并试图让它学习“编程”。

effect显示,给定编辑顺序,模型可以知道以后如何继续“编写代码”。这就像一个语言模型。给定一个简短的段落,模型就可以用自然语言“编译”。

例如,给出两个编辑序列(历史记录A和历史记录B)。经过两次编辑后,两个序列具有相同的编码状态(状态2),但是历史记录A正在向foo函数添加附加参数,而历史记录B正在从foo函数中移除第二个参数。

通过观察原始状态和编辑顺序(EDITIS 12),研究人员发现神经网络“预测代码”并知道以后如何“编辑”它们是完全可行的。

那么下一个问题是,机器如何以合理优雅的方式呈现预测结果?

研究人员考虑了“机器程序员”的两种表示:显式表示和隐式表示。

显式表征由两级LSTM网络实现。第一阶段可以编码每个状态序列,第二阶段将解码先前观察到的编辑序列。因此,实例化序列中每个编辑的状态结果将以“猫和老虎”的方式呈现。

并且为了不让‘人工智能程序员’工作‘反狗’,需要引入隐式表示,这就要求隐式模型不仅能够对隐式表示进行操作,而且能够更好地捕捉编辑内容和编辑上下文之间的关系序列,从而更好地学习策略。

谷歌人员参考了Transformer的位置编码和多头注意力(MHA),并修改了一个强大的隐式注意力模型。编码器将初始状态和所有已知编辑编码为隐藏向量,解码器将它们解码为每个编辑位置和给定位置的编辑内容。

结果表明,改进的隐式模型双向注意模型能够在真实数据中实现高精度、精确置信度和良好的可扩展性。它与显式模型的协同工作可以解决几乎所有的任务,甚至那些涉及元字符和具有长替换序列的任务,这使得机器能够洞察人类工程师的编程意图,并在未来编写“类似人类”的代码。

简而言之,这项研究的独特之处在于谷歌的大脑使用神经网络来学习优秀人类工程师的编程经验。它不仅简单地将需求放入一堆具有相似结构和功能的“静态”代码中,而且理解工程师的意图、决策等。并将它们应用到自己的编码过程中。

显然,这对一线程序员和技术公司来说是一种福气。因为他们总是需要处理高度重复和无休止的需求,并且一个人的有效工作时间和精力总是有限的,增加机器将直接减少程序员的工作量和疲劳。

但是现在不是乐观的时候。从目前的研究情况来看,“人工智能程序员”要上岗还有很长的路要走。

程序员解放的道路仍然很漫长。

逐个完成开发任务显然很无聊。如果我不能完成,我只能加班。从这个角度来看,程序员(和高级工程师)的生活和养鸡场里的母鸡没有什么不同。无论如何,我必须每天完成氮蛋的生产指标。

不幸的是,“产卵”只能由母鸡完成,而“编程”目前只能由人类完成。原因也很简单,“人工智能程序员”仍然只存在于想象和研究阶段。

首先,机器写代码的能力远远不够。真正的效果需要验证。

code实际上是一个“动词”,它代表一个“动态”过程,需要很强的泛化能力才能完成。优秀的开发人员通常根据各种变化因素来构建代码,如新的需求、新的网络环境、错误修复、最新的操作活动、公司的战略意图等。在某种程度上,这也是区分普通程序员和天才程序员的一个重要标志。但是让机器根据过去的代码序列动态判断和预测即将到来的编辑内容,当前的性能完全不足以支持实际应用。

此外,即使达到了性能,机器也只能完成相对简单的任务,即装配线上的机械工作。如果你想开发更复杂和创新的产品,那么优秀的程序员和高强度的工作是不可避免的。

更重要的是,机器开发的成本并不低。例如,在这项谷歌大脑研究中,显式模型消耗了大量资源,其成本随着数据量的增加呈指数级增加。例如,长度为100的插入序列比真实数据集中的序列小十倍,但是在运行时已经有一个数量级的差异。

换句话说,如果可以雇佣一名程序员,为什么企业要花更多的钱和更高的风险来使用人工智能?

也许现在考虑这个问题还为时过早,但现实是显而易见的。程序员是否想在未来找到工作不是决定性因素,而是因为人比机器便宜。

因此,我们似乎能够感觉到谷歌的研究行动背后有一种不寻常的味道,这种味道会影响程序员等“高科技”工作。

关键不是996:互联网公司怎么了?

在反对996的全球风暴背后,焦点可能不是996是否合理合法,而是正视一个问题。互联网公司有什么问题?

让我们做一个简单的论证。

Known长期以来,程序员的高工作强度是由“高薪和高期望的技术理想”共同支付的。

高薪来自对互联网公司的高估值;

高期望值(股票、期权、股息、理想)将通过互联网上市和融资等商业模式的完成而兑现。

那么,在一个不可能进行真正估值的大资本环境中,当互联网公司回归正常估值空间时,程序员的“劳动工资”应该如何支付呢?

互联网企业在过去十年里奇迹般的成长都是在这样一个“一夜之间实现创造财富的梦想”的故事下完成的。总的来说,那些不赚钱,甚至找不到赚钱方法的人将能够得到大量的钱,希望“赚一点钱”。在行业繁荣时期,程序员,包括生产力的核心,也对“斗争文化”保持一定程度的沉默,甚至默认这是合理的。

但是现实是互联网的产业链和商业规则已经发生了巨大的变化。互联网公司的估值不再是一个“赌博游戏”,而是已经开始与传统实体持平(效率优势不复存在),甚至由于长期泡沫(高工资和低成本绩效)而稍微贵一点。在新故事的背景下,随着通过企业首次公开募股/融资“财务自由”神话的迅速实现,它开始成为一个遥远的前景。工人们自然会强调现金支付。这也是为什么关于“996机制”的讨论总是围绕“加班费与否”展开。

一些网民开玩笑说,“996的工资是10%人民币,90%祝福”。这曾经被称为“硅谷梦”,但现在看起来有点滑稽。

时代变了。一方面,传统互联网企业“靠流量赚钱”的增长模式无法继续,资本游戏已经结束(主要是没有钱)。互联网公司想要生存,他们不能再依赖廉价的价格(因为他们负担不起补贴),而是依赖创新、健康的利润模式和低劳动力价格的成本优势。

然而,在一个尽可能“挤压”程序员剩余价值的企业中,员工真的能在没有足够时间思考和优化工作环境的情况下生产创新产品吗?答案显然是否定的。

另一方面,员工和政府都在“强迫”科技公司放弃“为了效率而压榨”的想法。新一代员工希望自由、公开地工作,而不是像骡子和马一样一年到头忍受高强度的工作。高薪被认为是不值得的。然而,许多政府也开始干预。英国计划建立一个新的监管机构,以逐步结束科技公司的“自我监管”时代,保护高科技员工的权益。

‘人力成本空间’日益缩小,所以将想法植入机器是很自然也很受欢迎的。

程序员的职业未来是什么?

当然,一些‘斯德哥尔摩’程序员可能对此感到紧张。毕竟,机器比人类更宽容、更高效。别说996,只要愿意支付电费,这就是007(一周七天早上0: 00到晚上0: 00)模式可以“编程怪物”!

首先不要担心恐慌,因为担心‘996’的机会在将来会丧失。对大多数程序员来说,更现实的情况可能是这样的:“首先,大多数机械工作将在机器的帮助下更有效地完成。互联网公司需要通过越来越多的经营活动来实现收入。程序员的任务将变得越来越精简。人工智能可以更有效地完成基本的源代码开发,取代这部分机械劳动,减轻开发人员的工作压力。

与此同时,软件工程师的工作重心开始转向创造力和兴趣。过去,许多人选择做工业扩张者仅仅是为了高薪和荣耀。经过几个月的培训,他们可以上岗,但他们对研究技术和产品创新不感兴趣。未来,经过短期培训就可以开始工作的低技能程序员将被机器取代,而高技能和高创造力工程师的价值将空前增加。自然,他们不必每天坐在电脑前超过十个小时。

这样,程序员职业本身的“新陈代谢”会变慢,职业寿命也会延长。

长期以来,快速的技术更新和高强度的工作压力使得互联网公司更愿意招募年轻的开发者。然而,他们的职业生涯将很快达到瓶颈,发展速度将开始放缓(尽管实践经验也在增长)。然而,随着越来越多的机械工作将被完成,它将被更年轻的工人取代,然后被公司“优化”。

如果你把所有破旧和手工的工作都扔给机器,显然程序员的价值不再是产生代码的“生产工具”,评价标准也不再是KPI是否忠实有效地完成,而是“自由意志”和创造性思维的体现。

从这个角度来看,人工智能消除了那些非创造性的工作障碍。对于已经筋疲力尽的程序员群体来说,对技术的期望应该远远大于对被技术淘汰的恐惧。因为只有这样,我们才能摆脱胡萝卜加大棒的命运,追求工作和生活的乐趣和价值。

俗话说,不管是工作还是生活,让我们把文明赋予岁月,而不是文明赋予岁月。

[资料来源:钛媒体]