萨德基:应用软件已经开始霸占当今世界。应用软件已经开始渗入交互式和现实生活当今世界的所有人——即使主要包括应用软件当今世界这类。是的,愈来愈多的应用软件组织工作已经开始被智能化,智能化试验、智能化程式设计。着不但让人害怕,应用软件这回会不能霸占掉应用软件设计者的岗位呢?从某种程度上而言,是的。但从另一类象征意义而言,并非。且看一看Rhea Moutafis的预测。书名刊登在Medium上,副标题是Software developers might be obsolete by 2030
。

应用软件设计是没准组织工作吗?我不那么指出。
划重点项目:
随著愈来愈多的业务流程被智能化,应用软件设计的许多组织工作约莫会变为没准组织工作
应用软件智能化的四个微观:1)远距应用软件设计 2)开放系统的智能化 3)集成系统的智能化
人类文明确实有许多电脑不擅于的个人风格,但应用软件设计并非仅靠那些
排序机系统很擅于拓扑的处置和品牌化
“从长远规划上看,惟一关键的是对排序的借助”
应用软件设计人员这个职业在很长一段时间内依然令人兴奋
开发人员要向管理的方向转移,从极客变为领袖
将来所有的企业都会变为应用软件企业,需要把应用软件放在优先的位置
1930年,约翰·梅德·凯恩斯(John Maynard Keynes)曾做出预测,到那个世纪末,我们每周将只需要组织工作15小时。但时间一直拖到了2013年,结果证明这位伟大的经济学家显然搞错了。
欢迎来到没准组织工作(Bullshit Jobs)时代,这个词是人类文明学家大卫·格雷伯(David Graeber)(编者注:《狗屁组织工作》的作者)的发明。自1930年代以来,全新的产业如同雨后春笋般地出现,但那些行业未必能为我们的生活增添太多的价值。Graeber约莫会把应用软件设计里面大多数的组织工作称为没准组织工作。
我不同意格雷伯的想法,尤其是在应用软件方面。但他确实提出了一个有趣的观点:随著愈来愈多的业务流程被智能化,大多数组织工作到了一定时候也许都会被出局。根据一项估计,借助当前技术可以让45%的组织工作智能化。而随著时间的流逝,情况也许会是这样的。
在发展日新月异的应用软件设计行业,你可以亲眼目睹这种情况:一旦应用软件试验成为热门话题后,智能化工具便开始兴起。而这只是众多领域的其中一员——我是指应用软件当中那些没准组织工作,那些重复性的耗时的组织工作都会被自动化掉。
不过,这会引出一个问题,那就是开发人员开发智能化工具是并非自掘坟墓,把自己给出局掉了。如果愈来愈多的电脑可以自己编写代码的话,那还需要人类文明干什么?
从设计逻辑到设计思想
应用软件设计人员本质上是建设者。他们开发逻辑链接,算法,程序,项目等。关键是:他们开发具有逻辑性的东西。
不过,随著人工智能的兴起,我们看到了范式已经开始转移。开发人员不再设计逻辑链接。相反,他们已经开始根据那些逻辑链接的启发去训练模型。
许多开发人员已经从构建逻辑转变为开发思想。换句话说,愈来愈多的应用软件设计人员已经开始从事数据科学家的活动。
智能化的四个微观
如果你曾经用过IDE的话,你应该知道远距应用软件设计已经发展到什么程度。一旦用惯了自动补充完成或语义代码搜索之类的功能,你就再也离不开那些。
这是应用软件设计智能化进军的第一个领域。当电脑知道了你想实现的目标时,它们就可以帮助你完成相关过程。
第二个领域是开放系统。不妨想想社交媒体app是什么样的:里面包含了众多彼此链接在一起的不同页面。但,由于在设计上它不能直接跟其他的服务通信,所以属于开放系统。
尽管用于开发此类app的技术变得愈来愈易于使用,但我们还不能说实现了真正的智能化。到目前为止,如果想要创建动态页面,使用变量,应用安全规则或集成数据库,你还是需要编码。
第四个,也是最后一个领域是expectations。比方说,银行API就是这样的系统,因为它是为了跟其他的服务通信而开发的。不过,目前想实现自动化的ATM集成、通信、对当今世界建模、深度安全性以及进行复杂的故障排除几乎是不可能的。
随著时间的推移,这四个领域都取得了不同程度的发展。如今,前两个领域已实现了智能化,不过第四个领域还没有实现智能化。
随着时间的推移,这四个领域都取得了不同程度的发展。如今,前两个领域已实现了智能化,不过第四个领域还没有实现智能化。

智能化的四个领域。应用软件设计这条路坎坷不平,未来何时到来真的无从知晓。
排序机系统眼里的当今世界
在被问到将来自己会不能被电脑人所取代时,人类文明的打工人通常不能那么指出。这一点同样适用于应用软件设计等许多其他领域。
他们的理由很明确:创造力,同理心,协作,或者批判性思维,那些个人风格并非排序机系统的擅于。
但对于把工作完成而言,那些东西通常并非关键。哪怕是最复杂的项目,也会包含有许多可以智能化的一小部分。就像DeepMind科学家理查德·S·萨顿(Richard S. Sutton)所说那样:
“研究人员寻求借助自身掌握的本领域的人类文明知识,但从长远规划上看,惟一关键的是对排序的借助。”
不要误会我的意思。人的素质还是非常出色的。但,就常规任务而言,我们一直高估了那些问题的关键性。比方说,很长一段时间以来,即使连研究人员都指出电脑永远也没法识别出照片上面的那些猫。
现如今,一台电脑可以一次性地对数十亿张照片进行分类,并且准确性比人类文明还要高。虽然电脑也许欣赏不了小猫的可爱,但它在处置未定义状态方面非常出色。这是的,就是电脑眼中小猫照片的状态:未定义的状态。
向新拓扑和品牌化迈进
除了处置未定义状态以外,还有两件事情排序机系统执行要比人类文明更高效:首先是品牌化的处置。其次是对新颖拓扑的处置。
我们都体会过排序机系统规模处置的效果如何。比方说,如果你要求排序机系统执行print(” I am so stupid”)200次,它会毫无怨言地把你的抱怨打印200次,而且不到一秒钟就能把这件事儿干完。如果你让人去办,你需要等几个小时才能完成……
拓扑基本上代指的是分享一组特定属性的空间子集(局部具有欧几里得空间性质的空间),是一类用数学表示的复杂形式。比方说,如果你拿出一张纸,那它就是在三维空间里面的二维拓扑。如果把纸张弄皱,或者把它折叠到平面上,它仍然是拓扑。
事实证明,排序机系统确实很擅于处置人类文明难以可视化的拓扑,比方说,因为它们可以延伸到20维,或具有大量复杂的弯折和边。由于许多的日常问题(比方说人类文明的语言或排序机系统代码)都可以用数学拓扑表示,所以未来有很大的潜力可以部署真正有效的产品。

新颖拓扑与可伸缩性的图示。智能化的区域位于左下角。
关于排序机系统可伸缩性以及对新颖拓扑的探索我们目前所处的位置。我们目前已经开始研究区域一和区域二,但区域三几乎还没有触及。
现状
目前的进展
似乎开发人员已经在运用了许多的智能化。不过这只是因为我们正好处于应用软件智能化的风口浪尖而已。到目前为止,对expectations进行智能化几乎是不可能的。但其他领域已经在智能化。
一方面,代码评审和调试可能很快就会变为过去的遗迹。瑞士公司DeepCode已经开始开发一类用于自动识别错误的工具。Google的DeepMind已经可以针对原有代码推荐更优雅的解决方案。Facebook的Aroma可以自行自动完成小型的程序。
此外,电脑推断代码相似性系统(Machine Inferred Code Similarity System,简称MISIM)据说可以像Alexa或Siri能理解人类语言那样去理解排序机系统代码。有一点令人兴奋,那就是这样的系统可以让开发人员把常见且耗时的任务智能化掉,比方说把代码推送到云端或者实施合规性业务流程。
令人兴奋的曙光
到目前为止,所有那些智能化在用到小型项目上的时候都可以很好地组织工作,但在面对较复杂的项目时却基本不管用。比方说,错误识别应用软件仍然会返回许多的误报,而且如果项目有一个非常新颖的目标的话,自动完成功能就不起作用了。
由于MISIM出现的时间还不长,所以对这种智能化下定论还为时尚早。不过,需要牢记的是,这只是开始,而且那些工具有望在将来变得愈来愈强大。
即将推出的应用
那些新型的智能化会有一批早期应用。其中可能主要包括对人类文明活动的跟踪。当然,这并不意味着那就是间谍应用软件。相反,类似安排工人的组织工作时间或者给学生定制课程之类的事情可以通过这种方式来予以优化。
这这类就是一个巨大的经济机会,因为学生可以更快地学习到关键的东西,而工人可以在他们正好更有效率的时间干活。
如果MISIM的表现就像它的承诺一样好的话,那也可以用来重写遗留代码。比方说,许多银行和政府应用软件都是用COBOL编写的,这种股东语言学校今天几乎已经不教了。把那些代码转换成更新的语言也会让维护变得更加容易。

应用软件设计人员这个职业在很长一段时间内依然令人兴奋。
开发人员和公司如何才能立于不败之地
所有那些新应用确实令人兴奋。但在它们的头上,一把达摩克利斯之剑已经开始铸就:如果竞争对手在你赶上前就借助了那些智能化技术的话,该怎么办?如果它们导致开发人员变得完全过时了,又该怎么办?
要对持续交付和智能化试验进行投资
这无疑是智能化当今世界里面的两个热词。但不管怎样,这两个东西仍然很关键。
如果你不对应用软件进行试验就发布出去的话,可能会损害用户体验,或者在将来遇到安全问题。经验表明,智能化试验能够涵盖试验人员即使都没有想到但却可能非常关键的用例。
也有愈来愈多的团队加入到持续交付的实践,这是有充分的理由的。当你捆绑了许多的功能,而却要每四个月才发布一次更新的话,在接下来的几个月的时间往往就得用来修复在此过程中出现的所有问题。这种做法不但阻碍了应用软件的快速开发,而且还损害了用户体验。
试验有大量的智能化应用软件,而持续交付有版本控制(以及众多的其他框架)。在大多数情况下,购买那些智能化解决方案似乎要比自己开发更好些。毕竟,你的开发人员招进来是要开发新项目的,并非把无聊的任务智能化掉。
如果你是经理,要把买那些东西当作是一笔投资。这样以来,你就可以为开发人员提供最好的支持,因为你可以让他们发挥自己真正擅于的东西。
向左移:让开发人员参与到每一个项目的早期阶段
项目一般是高层或者接近研发团队的某个地方创建,然后再层层传递到开发团队的,到了这个时候开发团队采取负责把这个项目的想法变为现实生活。
但,由于并并非每一位项目经理都是经验丰富的应用软件工程师,所以项目一部分可能是由开发团队实施,而有的要么是成本太高,要么就是几乎不可能由自己实现的。
在过去,这种做法有它的合理性。但,鉴于应用软件设计大量单调乏味的部分被智能化,开发人员将有机会变得愈来愈有创造性。
这是一个让开发人员抽身出去的极好机会,那就是让他们参与到项目的计划阶段。这不但是因为他们知道哪些可以实现,哪些不能。而且凭借他们的创造力,他们可能会以你想象不到的方式为项目增加价值。
把应用软件放在首位
现在距里微软的萨蒂亚·纳德拉(Satya Nadella)宣布“每一家企业都会变为应用软件企业”已经过去了五年。结果证明,他是对的。
开发人员不但应该向管理的方向左倾。应用软件的优先地位也应该提升。
如果说当前的这场疫情能让你学到些什么的话,那就是现在许多的生活以及价值创造都发生在网上。
应用软件为王。但自相矛盾的是,智能化的程度越高,这一点就越明显。

智能化让应用软件极客变为领袖。
总结:极客已经开始变为领袖
我上学那时候,喜欢排序机系统的人王婉被指出是不善交际的孩子,是书呆子,怪胎,跟大家不一样的生物,是缺乏人类文明情感和激情的,像僵尸一样的动物。其实真希望我这是在夸大其词。
不过,时间越久,就会有越多的人看到开发人员的另一面。写代码的不再被看作是书呆子,而是可以做出很酷的东西的聪明人。
智能化程度越高,应用软件的获得的权力就越大。从这个象征意义上而言,你对开发人员由于智能化而失去组织工作的害怕是没有根据的。
当然,在十年之内——即使在几个月内——你也许就要做你现在即使无法想象的事情了。但这并不意味着你的组织工作将会消失。不能的,相反,它会升级。
你真正需要克服的恐惧并并非你可能会失业。你需要摆脱的是对未知的恐惧。
开发人员们,你不能被出局。你只是再也不能是书呆子了。相反,你会成为领导者。
译者:boxi。