你是一个高效的开发者吗?那么人工智能将会取代你的工作
如果你是高效的开发者,人工智能将会取代你
在我之前的帖子中,我写了关于在一个不断侵蚀的人工智能世界中作为软件开发人员找到竞争优势的问题。我相信在未来十年中会有一些更相关的问题,所以我想在本篇文章和下一篇文章中详细阐述这个主题。
只有当你专注于那些人类天生比机器做得更好的任务时,你才能保持这种竞争优势。软件开发有两个必要的属性,它们展示并与人类与计算机的相对优势和劣势相吻合。它们是效率和效果,并且将是今天文章的重点。我要感谢乌韦·弗里德里希森在最近的博客中指出了这种区别。
国际象棋和潜艇
在科学、艺术和体育方面,谁会是最受尊敬的人?1985年的一项调查可能包括物理学家理查德·费曼、演员梅丽尔·斯特里普、哲学家苏珊·桑塔格,当然还有年轻的俄罗斯国际象棋特级大师和新世界冠军加里·卡斯帕罗夫。
几年前,你已经可以对抗各种数字对手进行国际象棋练习。这些玩具设备中的算法现在可能看起来很简单,它们薄弱的计算能力可笑。但它们确实是早期的人工智能,即使它们在与严肃的人类选手对战时毫无胜算,更不用说特级大师了。摩尔定律迅速解决了这个问题。在短短十多年的时间里(1997年),同样的世界冠军输给了IBM的深蓝团队。
这场人类对机器的25年失败并没有让我们过度担心人工智能会在某个像终结者那样的末日世界中很快接管。事实上,它证实了国际象棋对人类来说很难,对计算机来说很容易。根据迪克斯特拉教授的说法:“一个计算机是否能思考的问题并不比潜艇是否能游泳有趣。”确实,你无法将计算机赢得国际象棋与马格努斯·卡尔森的方式相提并论。核潜艇排水的方式与鲨鱼的方式同样无法比拟。无论你如何定义机器智能,它只是外部类似于人脑的作用。重要的是效果。然而,我不同意认为计算机思考的问题是无趣的。
旅程与目的地
根据朗文词典的定义,效果是产生想要或预期的结果的事实;产生成功的结果的事实。将军被将死是一个成功的结果。 效率是以没有浪费时间或金钱的方式做某事的质量。在无限可能的比赛中,愚人将军是最高效的一种。
顺便说一下:注意在这个定义中纯粹的经济思维。只有“浪费时间或金钱”被考虑在内。如果能源是一个因素,与其生物学对应物相比,没有人类发明可以在原始能源消耗方面高效。
一旦计算机能够像人类一样有效地完成工作,人类从冷酷的经济角度来看,已经变得多余。你可以为了自己的享受而参与其中,但不要期望有一份薪水。人们仍然喜欢国际象棋,因为它从来不是生存的手段。我们不需要它来种植食物或建造房屋,只有少数最好的选手才能从中赚钱。如果国际象棋是一个生产资源(像土地和劳动力),人类国际象棋选手就没有竞争优势。
效果意味着达到令人满意的结果。我们要么有,要么没有。你可以超出预期,也可以在任何程度上惨败,但只有二进制的赞成或反对才是重要的。效率是关于如何执行各个任务的质量。它是一种允许更多余地的品质。过程的某些部分可能不够优化,但仍然有助于产生有效的结果。与这种二分法相吻合的其他术语有“什么(和为什么)”与“怎么”。它是做正确的事与做事情正确的方式。它是目的地与旅程。
两者都是必要的。持续低效将让你很快破产,但无效将连第一笔销售都得不到。因此,没有明确定义我们想要实现的效果的软件项目是不严谨的。只有即兴天才基思·贾瑞特可以在没有目标的情况下坐在键盘前,仍然能够创作出杰作 – 但那是钢琴键盘。
效率是相对的,效果是主观的
效果不确定、模糊且主观。Seinfeld、Monty Python、波西米亚狂想曲和Star Trek有什么共同之处?它们都是深受喜爱的经典作品,但大多数人,包括评论家,在它们刚出来时并没有太注意或欣赏。难怪许多产品失败,无论你投入多少市场调研。创造力没有公式,无法预测人们的口味会如何变化。效率则要好得多。顾客对Spotify应用程序使用的构建工具或IDE不在乎。这在最终产品中不留下痕迹。
现代产品是来自各个供应商的复杂组合。我们选择部件是因为它们的效率,希望它们能制造出顾客想购买的有效产品。但当每个部件在供应商销售时已经是有效的时候,它只有在成为正确的部件时才变得高效。这不仅适用于物理部件。
这是一个关于半导体巨头ASML的现实示例,它位于我家附近。早上去公司的交通拥堵,只有公交车提供服务。市政府想修建一条新的自行车道,以吸引居住在十英里半径内的通勤者骑自行车上班。目标是通过减轻那些无法选择自行车的拥堵,使每个人都能安全快速地到达办公室。建造这条道路的承包商对这种效率的推动没有紧迫的利益,更不用说自行车制造商Trek或为自行车提供齿轮和刹车的Shimano了。但他们都对新道路的效果做出了贡献。效率是相对的,而效果是主观的。
你明白了。软件也不例外。普通的企业产品主要由其他人的代码组成,你和你的团队无法控制(99.9%是个安全的赌注,特别是如果你计算部署的云栈)。任何组件在某些地方可能是高效的,在其他地方则是无用的。如果你只需要它记住五十个数字一个小时,那么由专用Oracle企业支持的高度优化的缓存机制仍然是浪费金钱。
效率涉及实验、进行小的调整,并用更高性能的组件替换慢速/昂贵的组件。这是一个复杂的、数据驱动的领域,计算机在其中感到亲切。另一方面,判断软件的效果是复杂的:这归结于它是否最终使接受者满意。除了其他人谁还有资格回答这个问题并做出决策呢?
在下一篇文章中,我将重点讨论需求/规格与实现之间的关系,以及它们与效率/效果的区别。在第三部分中,我将讨论著名的“对齐问题”。即使是人类也会在将软件目标与自己的利益对齐方面失败,并构建昂贵的失败案例。我们如何期望机器做得更好呢?然后在第四部分中,我将探讨我们对专业化的热爱、为了编码而编码的缘由,以及为什么这将不再是竞争优势。