编者按:近日,《连线》杂志上发表了一篇文章,介绍了程序员的杀死低效率冲动,以及这种行为给他们和我们世界带来的影响。文章改编自克莱夫·汤普森的《程序员: 新部落的形成和世界的重塑》(Coders: The Making of a New Tribe and the Remaking of the World) ,于 2019 年 3 月 26 日出版。原题为:Coders’ Primal Urge to Kill Inefficiency — Everywhere。
一、
2010 年,谢莉·张(Shelley Chang)在一家计算机公司做业务分析师时,通过一些共同的朋友认识了杰森·何(Jason Ho)。 何身材修长,脸上总是带着狡黠的微笑,他们一见如故。
作为一名程序员,何在旧金山经营着自己的公司,他很喜欢旅行。在他们结识后不到一个月,何就买了一张机票去台湾接张,这让张颇感意外。
但很快,他们就开始谈论一起去日本旅行逛逛的事情。虽然张有点担心,毕竟他们彼此并不熟悉。但是她还是决定赌一把。
事实证明,何有一个非常严格和特殊的行程计划。
他喜欢吃拉面,为了尽可能多地游玩东京,他列了一张拉面店的名单,并把它们标记在谷歌地图上。
然后,他写了一些自定义代码来对餐馆进行排名,当他们去观光的时候,就可以去最好的餐馆吃饭。
他说,这是一个“相当传统的”算法挑战,就像在大学里学到的那种。何给张看了手机上的地图。
他告诉她,他还打算仔细记录每顿饭的质量。 “哇,”这让她印象非常深刻,她想, “这家伙是个疯子。”
何也很机智,博览群书,风趣幽默,这次旅行很成功。他们吃了很多拉面,在看相扑摔跤比赛时喝了不少啤酒,游览了东京很多有名的地方。这是一段七年关系的开始。
多年来,像“吃拉面优化器”这样的怪事,一直是何日常生活的一部分。何在梅肯长大,拥有一台德州仪器公司(Texas Instruments)的 TI-89 计算器。
他说,一天,在翻阅说明书时,他发现这个计算器包含一种 Basic 编程语言,然后自己自学了足够多的知识,煞费苦心地在计算器上重新创建了任天堂的萨尔达传说系列游戏。
后来,他在计算机上学习了 Java,高中毕业后到亚特兰大的乔治亚理工学院学习计算机科学。抽象的算法概念非常有趣,但真正让他着迷的是使用计算机避免重复劳动。
“每当我不得不一遍又一遍地重复某件事时,”他告诉我,“我就会觉得无聊。”
在大学的最后一年,何创办了一家公司,创建论坛,让在不同大学学习相同课程的学生可以互相交流,回答问题。但是它没有聚集足够的用户,最后他关闭了它。
虽然面试了谷歌和微软等几家公司,但在面试之后,他就陷入了恐慌。他不想为别人工作。 他觉得,从价值创造的角度来看,成为一名“打工者”是一个可怕的命题。
虽然,你可以得到一张支票,但是劳动的大部分价值都被创始人攫取了,或者是那些拥有股权的人。
对于何来说,他有能力创建一些东西,只是不知道该做什么。
几个月后,他忽然想到了一个主意。他和父亲一起去办事,他父亲是一名儿科医生,经营着自己的诊所,需要买两个计时钟,这是一种老式的打卡机器,员工可以在上面插入卡片,上面有当天开始和停止工作的时间。 每只计时器大约 300 美元。
何大吃一惊,难道关于计时钟的技术一直没有改变吗? “我不敢相信这还是一个问题,”他想。
他意识到,自己可以迅速做出一个网站,来完成同样的任务,而且能够做得更好:员工可以用手机登录,网站会自动计算时间。
“不要买这个时钟,”他告诉父亲。 “我给你编一个代码。”三天后,他做出了一个原型。他父亲的诊所开始使用这项服务,令何高兴的是,他们很喜欢这项服务。
这个系统比基于纸板的计时钟效率高太多了。
他整理了自己的网站,给它起了个名字——Clockspot ——四个月后,一家律师事务所成为了他的客户。
当第一笔付款到位时,何在佐治亚理工学院图书馆工作时,差点从椅子上跳起来。他在用他的软件赚钱!
九个月后,何的公司每月从阿拉巴马州伯明翰市的清洁公司、家庭护理公司获得约 1 万美元的收入。
他连续两年不停地改进和调试代码。最终他让它运作得非常好,以至于 Clockspot 基本上是在自动运行的。
除了自己,何唯一需要的员工就是一名兼职客户服务代理。他的收入不错,有足够的时间旅行和做其他兴趣爱好。 他优化了自己的生活效率。
Jason Ho
二、
用风险投资家马克·安德森(Marc Andreessen)的名言来说:就像任何有知觉的人一样,你已经注意到软件正在吞噬世界。
你已经看到 Facebook 吞噬了公共领域,Uber 彻底改变了城市交通,Instagram 重塑了自拍文化,亚马逊在 24 小时内让你完成购物。
技术创新者,通常夸耀他们的服务改变了世界或者使生活更方便,但是他们所做的一切都基于速度。不管你以前在做什么——打车、和朋友闲聊、买牙膏——现在都变得更快了。
硅谷的核心总是将人类活动转化为代谢的过度活跃。
也许你想知道,这到底是为什么?为什么技术人员坚持认为事情应该加速?优化?
当然,有一个明显的原因:他们这样做是受到了市场的支配。
任何人,只要能改进一个过程,挤出一些利润空间,资本主义都会给予他们丰厚的回报。但对于软件来说,还有其他的原因。
但对于程序员来说,效率不仅仅是一个商业工具。 这是一种存在的状态,一种情感上的驱动力。
程序员可能有不同的背景和世界观,但是我遇到的几乎每一个人都发现,做低效率的事情,并且把它的效率提高一个档次,都会带来很强的愉悦感。
消除系统中的摩擦,是一种美学意义上的乐趣。当程序员们谈到让某个东西运行得更快,或者他们如何从某个过程中消除了一些麻烦的工作时,他们的眼睛会“燃烧”起来。
这种对效率的热情,并不是软件开发者所独有的。长期以来,工程师和发明家一直受到它的激励。在工业化的早期,工程师们把日常工作的自动化提升到道德的高度。
正如工程师查尔斯·赫尔曼尼(Charles Hermany)在 1904 年所写的那样,工程师是人类“摆脱绝望、繁重劳动的救世主”。
泰勒弗雷德里克·温斯洛·泰勒(Frederick Winslow Taylor)——泰勒主义的发明者,为制造流水线奠定了基础——猛烈抨击了“人类笨拙、低效或者方向不明的流动”。
当今的许多程序员,在他们的青少年时代都经历过高效率的“顿悟”时刻。尤其是他们发现生活中充满了令人眼花缭乱的枯燥重复性任务,而且电脑真的很擅长做这些任务的时候。
对于和我交流过的一些程序员来说,数学家庭作业,以及一连串枯燥的练习,是激发了他们灵感的情况之一。
Perl 编程语言的创始人拉里·沃尔(Larry Wall)和几位合著者写道,程序员的一个关键优点是“懒惰”——懒惰是指,你不愿意执行死记硬背的动作,这会促使你去琢磨,怎么把这些工作自动化。
最终,这种对效率的追求,最后都会变得难以为继。
旧金山的一位程序员克里斯塔 · 马比(Christa Mabee)曾告诉我:我认识的大多数工程师,一生中都会发现到处都是效率低下的现象。无论如何,登机都是低效的。
他们会发现自己走在街上,希望人们在人行道和十字路口以一种更优的方式导航。
哥伦比亚大学数据科学研究所的计算机科学教授珍妮特 · 温(Jeannette Wing)普及了“计算思维”这个短语来描述马比所描述的情况。
它包括观察你周围世界中看不见的系统的艺术,有哪些规则设置和决定我们如何生活的设计等等。
何,有看到并试图完善这些看不见的系统的诀窍。几年前,我在旧金山的一家餐厅认识了何和张。
当时,何正在经营管理 Clockspot,它运行得非常顺利,以至于他每周只需要工作几个小时就够了。
“他说他一个月工作 20 个小时,但是我不认为我见过他工作那么多,”张说。 (这对夫妇后来分开了,但两人关系仍然很好。)
何花了不少时间旅行,有一次他甚至在珠穆朗玛峰上处理了一次宕机事故。
然而,他的优化和编码工作从未停止过。 当他决定买房时,他编写了一个软件,可以把市场上几十套房产的信息——它们的位置、价格和社区统计数据——输入软件,然后计算出这些房产的长期价值。
这个系统推荐的首选项目是 Nob Hill 的一套现代化公寓。 他相信了。 因为他讨厌购物,他买了几十件同样的T恤衫和卡其裤,这是程序员的经典策略,因为它消除了穿衣服时做决策的摩擦。
几年前,何决定健身,这带来了一个特别疯狂的优化挑战:他能有多强壮? 他会带着一个小秤去餐馆称量他的食物份量。
“他在电子表格中记录了他吃的每一样东西,”张说。 何向我展示了他手机上的电子表格,这是一个庞大的怪兽,每天总共摄入 3500 卡路里的热量。
他在健身房锻炼,但也想方设法把锻炼挤进他所做的任何事情中。 如果他经过一个厚厚的金属栏杆,他会用它做引体向上; 如果他经过一个垃圾箱,他会把它举到一边。
经过两年的训练,他在业余健美比赛中获得了第二名。他翻了翻手机,找到了那个时期自己的照片。
在一张照片中,他涂了少许油,穿着内衣在阳光明媚的窗前摆姿势。他看起来像一尊希腊雕像。 他说,自己体内脂肪含量降到了 7% 左右。看上去肌肉发达感觉很好,但主要还是想看看这是否可能。
何给我看了他画的另一张图表。
这个表格,可以说是一本人生指南,不仅是一种优化自己身体的方法,也是一种优化自己清醒时每一秒钟的方法。
他决定,只花时间做那些每一分努力都最有可能产生最大效果的事情。他标出了 16 种生活活动。其中包括: 创业、编程、吉他、星际争霸、购物以及“与朋友和家人共度时光”。
然后,在各个活动的栏中,他列出了各种标准,比如这项活动是否具有内在意义,而不仅仅是达到目的的手段(“自动完成”) ,它是否“可以被掌握”,它是否“影响生活的多个领域”。
对于“编程”和“创业”,何认为它们符合每一条要求。当他谈到“花时间与朋友和家人在一起”的社交领域时,他勾选了“影响生活的多个方面”因为“可以被掌握,”他写道。
对于很多人来说,这可能看起来很疯狂。将生活中的情感部分系统化,并将社交活动视为低效率的一个来源,这种想法令人崩溃。
何是外向的人,喜欢社交。但对于一些程序员来说,人们和他们不断的要求可能是一个痛苦的来源,在他们看来,人际关系也是每天都需要解决的麻烦。
在计算机早期时代,就有技术专家在带着一些焦虑不安来思考问题。
正如建造了第一台可编程计算机的德国土木工程师康拉德 · 祖泽(Konrad Zuse)所说:“与计算机变得像人类相比,人类变得像计算机的危险可能会更大。”
有一天晚上,当我全神贯注地阅读 Quora 上的一个帖子时,我想到了这件事。
在这个帖子里,几十个程序员分享了他们如何自动化处理日常生活中的细微差别的故事。有一些令人不安的,甚至是病态的行为,他们正在将社交活动变成一个一成不变的机器人化任务。
“我厌倦了朋友和家人说‘你从来不给我发短信’,”一名程序员写道,于是他创建了一个脚本,可以随机向他们发送短信。
短信的开头是这样的:“早上好 / 下午好 / 晚上好,嘿{ name } ,我一直想给你打电话”,然后在结尾列表中附加一个选项:“我希望一切都好 / 我下个月晚些时候会回家,爱你 / 我们下周什么时候谈谈,你什么时候有空。”
在旧金山的一次编程马拉松上,一位中年程序员兴奋地向我展示了他开发的一款应用程序,这款应用程序可以自动向伴侣发送浪漫信息。
“当你没有足够的时间去想她的时候”——是的,他认为情感上需要帮助的伴侣应该是她——“这个可以帮你解决问题,”他热情洋溢地说。
这些让社交更有效率的尝试一直延伸到最大的高科技公司:想想 Gmail 的自动完成功能,它鼓励我们通过一个算法为我们写回复,来加快发送电子邮件的速度。
长期以来,语言学家和心理学家一直在记录社交的价值。
社交是人们在日常生活中使用的各种情感手段,目的是让他人感到放松或听取他人的意见:“最近怎么样?天气很糟糕,是吧?你今晚有什么安排?”
我和程序员聊得越多,就听到越来越多的人说他们发现这些东西就像齿轮里的沙砾一样令人讨厌。
克里斯托弗·索普(Christopher Thorpe)是一位在六家以上科技公司工作过的资深程序员,他告诉我,他曾经与一位“极具天赋的工程师”共事,而这位工程师恰好符合上述条件。
“我们在所有的会议上讲笑话,他对我很生气,因为我们在浪费时间。为什么我们要花五分钟和办公室的 20 个人一起玩?现在是工作时间,每个人都在笑——但是,你知道,你在浪费所有这些宝贵的时间。
这个笑话浪费了 20 个人的时间!这个人会开始喋喋不休地说:‘5 分钟乘以 20,这就像,你知道,你在这些笑话上浪费了一个半小时的时间。’”
三、
事实是,我对程序员优化日常生活的狂热有些同情,因为我自己也尝过那些刺激的滋味。
三年前,我开始写一本关于程序员心理学的书,所以我决定重拾 80 年代写代码的感觉, 并涉猎一些现代语言,比如 Python 和 JavaScript。
我在写作上花的时间越多,我就越注意到日常事务中效率低下的时刻,并对此深感恼火。例如,在写作的时候,我发现自己经常查阅各种在线叙词表。
它们很有用,但是太麻烦了,以至于每次我搜索的时候,都要花大概两秒钟的时间来等待结果。 所以我决定使用一个提供了同义词库 API 的网站来编写我自己的命令行同义词库。
花了一个上午编写 Python 程序后,我有了一个脚本。 我会在命令行中输入一个单词,它会以闪电般的速度返回同义词和反义词。黑底绿字,朴实无华,但粗糙不堪。
但它速度非常快:不再等着浏览器加载一大堆跟踪脚本,看着 cookies 堵塞我的硬盘。
当然,这节省下来的时间并没有太大的影响。
假设我写作时平均每小时搜索两次同义词,并且假设我的代码在每次搜索时,为我节省了两秒钟的时间。每一年内,我就可以节省一个小时。几乎不值一提。
尽管如此,速度的提升也温暖了我的灵魂。 每次我搜索一个同义词,活泼的搜索结果都会产生一种愉悦感。这感觉很好。
不久之后,我写小的程序上瘾了。我做了一个用来清理我下载的 YouTube 视频的程序;一个是抓取和归档我在推特上发布的链接;还有一个用来不断查看我儿子小学的网站,并在老师发布作业时给他发短信的程序。 (他已经厌倦了按“刷新”键。)
我的许多小程序写得很糟糕,几乎不能正常工作;我选择了最简单、最“暴力”的方法来完成它。当我看到真正有经验的程序员的代码时,我会钦佩他们写得多么优雅。
我会想出一个庞大而丑陋的函数来筛选一些数据,然后发现一个有经验的程序员可以用几行简洁的代码来完成。(他们的代码运行得也快得多。)
新闻工作者有时会对谷歌庞大的代码库(20 亿行)惊叹不已,认为这是谷歌强大实力的象征。 但是程序员们并不为数量所动。
有时,最高效的程序员是那些减少代码库,使其更短和更密集的人。在 Facebook 工作了三年后,一位名叫 Jinghao Yan 的工程师检查了他对公司代码库的所有贡献,发现数字是负数。
“我增加了 391,973 行代码,并从主代码库中删除了 509,793 行代码,”他在另一个 Quora 编码帖子中写道。 (事实证明,Quora 上有很多程序员。) “因此,如果我每年编码 1000 个小时,那么大约每小时删除 39 条网络线路!”
编程,让人想起诗歌,压缩可以赋予力量。
正如程序员兼作家马特·沃德(Matt Ward)在 Smashing Magazine 上发表的一篇文章中所写的那样:“在一首精心创作的诗歌中,每一个单词都有其意义和目的。一个诗人可以花上几个小时来寻找恰当的词语,或者把一首诗放在一边几天,然后再回来寻找新的视角。”
2016 年,我拜访了 Instagram 的首席工程师瑞安·奥尔森(Ryan Olson)。他的团队刚刚推出了平台上的 Stories 功能。这是一次巨大的升级。
奥尔森告诉我,在更新发布后的几个小时内,他疲惫不堪地在旧金山闲逛,看到人们已经在使用 Stories 了。
“这是一次非常酷的经历,”他说。“昨晚我在健身房,我环顾四周,发现有人在使用这种产品。 我不知道历史上是否有其他方式可以让你接触到这么多人”,或者“很少有人能定义这么多人的经历”。
优化你的个人生活是一回事。但是对许多程序员来说,真正的兴奋剂是改变世界。
规模本身就是一种乐趣;看着你的新代码突然流行起来,从两个人到四个人到八个人,再到整个地球,真是令人着迷。
你已经加速了生活的某些方面——我们如何发短信、支付账单或分享新闻——你可以看到涟漪向外扩散。
这也解释了软件行业中的巨大财富通常是如何产生的。
风险投资家将大量资金投入到他们认为会像野葛一样发展的事物中,市场对此给予了回报。
对于热爱效率的硅谷工程师来说,这不仅会带来规模扩大上的快乐,还会带来对规模的绝对渴望。
事实上,在硅谷的权威人士中,经常有一种对无法规模化的东西的蔑视。渺小可能看起来像是软弱。
有几次在和科技大佬谈话时,我提到了何的公司,解释了我如何发现它是一个聪明而令人钦佩的业务,一个创业者满足那些未满足需求的完美例子。但他们对此嗤之以鼻。
对他们来说,何的 Clockspot 是一家“生活方式企业”。 他们说,这种产品当然没问题,但谷歌可以复制它,并在一秒钟内让他破产。
显然,我们从软件工程师的冲动中受益匪浅,他们本能地希望加快工作速度,创造出丰富的内容。但与此同时,对规模效率的无情追求有着令人不安的副作用。
Facebook 的 News Feed 加快了朋友向我们展示照片的速度,也加快了恶意动机者传播不实信息的速度。Uber 为乘客优化了叫车服务,但颠覆了司机谋生的经济模式。
也许我们——那些生活被如此无情地优化的人们——终于注意到了这些影响。我们当然更抱怨大科技公司,注意到它是如何带来更多问题的。
但我们不知道该怎么办;我们仍然喜欢效率,开发软件的公司不断声称,我们可以用更少的资源做更多的事情。但是怀疑已经刺痛了我们的心。
也许,我们会对过度优化感到不舒服。看看任何一条城市街道上的场景:员工在上班时以 1.5 倍的速度收听播客,戴着 Apple Watch 确保每天走 10000 步,在餐桌上看工作邮件。
我们变得像程序员一样,扭转生活中的每一个齿轮来消除摩擦。
像任何优秀的工程师一样,我们可以让我们生活中的机器运行得非常快,尽管不清楚我们是否对我们要去的地方感到满意。