## 发现效率的眼睛

你在生活中有没有那种感觉？就是总能发现各种“低效率”的场景，总受不了这样的场景，总想给提一个改进的方案。比如说，当你和一群人一起排队的时候，你的内心会不会发出一个呐喊：这太愚蠢了！这么多人就这么傻傻地等着？我们肯定有更好的办法！

想要增加效率、减少摩擦，想让一切以最顺畅的方式运行，这也是一种美学追求，是生活黑客、工程师、特别是程序员的价值观……甚至是一个情感需求。

像排队这样的事儿是有学问的。我们在超市排队，都是有多个收款通道，每个通道排一个队，这种方法的效率并不是最高的。人们自动选择当前看上去最短的一队，但这其实是一种赌博：有的队里赶上一个买的东西特别多、或者遇到付款技术问题等待时间特别长，后面的人都会受影响。银行的排队方法就更公平一些：只排一个队，轮到哪个窗口服务就去哪个窗口，减少了不确定性。当然超市的特殊情况是人们都推着购物车，只排一个队摆不开。不过有的超市仍然会做一些改进，比如说给买的东西少的顾客提供快速通道。

凡是低效率的地方，都可能是信息技术的应用机会。你可以给每人发个号码，然后各个窗口按顺序叫号；你可以接受电话或者网上预约；有些餐馆会给等待的顾客发个无线的、会亮灯的排队器，到现在也没被手机APP取代。我看还有人专门建立数学模型模拟比如说一个大学食堂的排队情况，寻找平衡了效率和运营成本的最优解。

我们这一讲要说的不是具体问题的解法，而是这个精神。你看到一个效率问题，应该想想能不能优化它。你应该有一双随时能发现效率应用的眼睛。

*

《连线》杂志专栏作家克莱夫·汤普森（Clive Thompson）是科技圈的长期观察者，他不但观察技术而且观察发明和使用技术的人。汤普森 2019 年出了一本专门讲程序员的书，叫《编码者：一个新部落的形成和世界的重塑》（Coders: The Making of a New Tribe and the Remaking of the World）。我感觉这个书名中的“coder”，是比“程序员（programmer）”更雅致的一个说法：程序员强调的是职业，编码者 —— 或者叫“写代码者” —— 强调的是行为。

写代码是一种能定义你的身份的行为，因为这个行为会改变你的想法和眼光。汤普森在书中讲了很多程序员的故事，特别是在著名公司工作的那些最新一代程序员的工作和生活，可以说是一部程序员文化大观，全书都非常值得读。我最感兴趣的是书中提到程序员思维有一个最大的特点，那就是对效率的执着。

*

汤普森讲到一个住在旧金山的华裔小伙儿，叫杰森·何（Jason Ho）。小何是个编程高手和极端意义上的生活黑客。

小何说他小时候有一个德州仪器的 TI-89 计算器，他发现这个计算器提供 BASIC 语言编程功能，就自学了编程，然后竟然在这个计算器上实现了任天堂的《塞尔达传说》游戏！我听着感觉不太可能，也许他只是实现了游戏的一部分功能，但不管怎么说这也挺厉害。

小何喜欢对生活做各种优化。他喜欢吃拉面，去日本旅游的时候就在地图上找到东京的各家拉面馆，自己写了个程序，按照拉面馆评分和距离自己旅游路线的远近，使用算法找到了每顿饭的最优解。他买房子的时候写了个程序，按照自己设定的方式根据地点、价格和周围信息计算了每个房产的“长期价值”，然后他忠实地买下了这个软件中排名分最高的房子。他是“量化自我”的坚定执行者，记录了自己做的每一件事、花费的每一分钟，分析了每一顿饭的营养，并且据此搞了一个健身计划，而且实现得很成功。

而小何最大的特点就是干什么都追求效率。他把能让计算机自动完成的事儿全都自动化，他忍受不了自己做需要重复的、“无聊”的事儿。

恰恰是这个特点给小何带来了财务自由。小何的父亲是个儿科医生，有一次为了记录办公室人员考勤，打算去商店买个员工打卡用的表。小何一听怎么都这个年代了还有人这么落后的方法考勤呢？手机 + GPS 不就解决了吗？他让父亲别买那个表，自己花了三天时间写了个自动考勤程序，父亲一用果然好使。小何就把这个应用做成了一个网站（clockspot.com），专门给各个公司提供考勤服务。结果这个网站火了。他开了个公司，只雇了一个兼职客服人员，自己只做做程序的技术维护。这个程序给小何带来了足以整天在世界各地旅游的收入，而他号称每个月只需要工作 20 个小时。

我看小何这个商业模式有很强的运气成分，他不但发现了一个点，而且抢在别人前面占据了这个点。有人认为像 Google 那样的大公司只要随便动动手就能把小何的市场抢走，但是毕竟目前这个点还在。

不过这个故事的精神可不是“市场提供机会” —— 市场里一直都有各种机会 —— 更不是“知识改变命运”“时间就是金钱” —— 而是自动化。你找到一个效率的痛点，写个程序帮人们解决这个痛点，因为程序是自动的，你基本上就一劳永逸了。

这个精神是效率的精神：你不是通过自己多工作而挣钱，你是通过让别人和自己都少工作而挣钱。

*

但程序员追求效率并不只是为了挣钱……可以说主要不是为了挣钱。而是为了爽。

汤普森采访了很多程序员，效率是他们的一种情感驱动。他们看到各种事物都想着能不能自动化一下，能不能让程序替人做。

这帮人从小写个数学作业都会编程做。有个女程序员说她走在街上，看见街头的行人，都忍不住想象能不能设计一个传送带代替他们走路。她排队上飞机会充满挫折感，被时代的低效率所震惊。有个男程序员有感于自己的亲戚朋友经常抱怨他不联系，就写了一个自动脚本，时不时地、随机地向亲友发送问候短信。还有个哥们把给女友写情书也自动化了。

追求效率几乎是程序员的职业病。有个程序员抱怨领导总爱在开会的时候讲笑话：你知道你讲一个笑话会耽误多少人的工作时间吗？咱们有事儿不能快点说吗？

这不是传统意义上什么“眼里总有活儿”的事儿，更不是受不了自己闲着 —— 而是受不了低效率，受不了别人的笨，受不了局面的愚蠢。这也不仅仅是能让机器做的就不应该让人做，而是一种美学，是一种欣赏，一种自得：哪怕这个方法只能提高一点点效率，我也感到很愉快。

汤普森不是专业程序员，但是他自己也喜欢编程，写了不少自动化脚本。他有个项目是这样的。作为作家，汤普森为了让文章的词汇量显得更有文采，会经常查阅同义词词典，看看能不能找到好的替代词。电子版的、网上的同义词词典很多，你要做的就是用浏览器访问一个网站，输入一个词，按回车就行，这够简单吧？汤普森认为还不够。他通过搜索，发现有个网站提供可以用程序直接调用的词典查询的 API 接口。他写了一个脚本，只要在自己的终端直接输入一个命令，就能返回一个词的同义词。

这个做法跟在网页上查询有本质区别。脚本返回的只是同义词，而网页返回结果的时候会附带各种看得见和看不见的东西。网页查询要耗费多出很多倍的计算机时间。

但是你能感觉到那个节省下来的计算机时间吗？这个脚本的作用有多大呢？汤普森估算了一下，假设他写作的时候每小时查询两次、每次节省2秒钟，他每年大约因此节省了一个小时 —— 远远抵不上创造这个脚本花费的时间。

但是他每一次用自己的脚本查询同义词，都会感到一阵快感……“就如同效率的毒品流过血管”。

计算机科学家、Perl 语言的发明人，拉里·沃尔（Larry Wall），有句名言：『懒惰是程序员的一个核心美德。』

*

好，那既然懒惰是程序员的美德，为什么有那么多程序员整天加班，中国程序员还流行“996”呢？

从追求效率这个角度来说，程序员加班是个听起来有点荒诞的事儿。这就好像厨师营养不良、作家抱怨找不着书读、警察担心自己的人身安全一样 —— 这些事儿都有可能是真的，很多厨师自己吃的营养配比真的有问题……但你可是厨师啊！你肯定不是没有条件做，你是没做好，你是缺乏这个意识，你的职业荣誉感受到了威胁。

美国程序员不流行加班。大部分人上班晚来但是不晚走，很多人每天实际工作时间根本不到八小时。硅谷有些公司爱加班，特别是创业公司会很忙，但是总体来说，编程是一种比较轻松的工作。

编程不但是脑力劳动，而且是一种技艺，甚至可以说是一种艺术。你得看谁聪明，不能看谁工作时间长。好的程序员必须对效率极其敏感，他会强烈地在意代码够不够简洁够不够高效，而不是写了多少行。

汤普森讲到 Facebook 公司一个叫 Yan Jinghao 的程序员。他一年的总编程时间大约是 1000 个小时 —— 相当于每个工作日 4 个小时。他在 Facebook 工作三年总共写了 39 万行代码，但是他给公司删除了 50 万行代码：相当于每小时删除 39 行。他对公司代码库的贡献是“负”的。对此他感到很自豪，因为他提升了公司代码的效率。

所以编程这个事儿，你不能比谁写的代码多，而应该比谁写的代码少。你不能看谁最后一个离开公司，应该看谁最先把活做完。

中国程序员为什么 996 呢？我看过一些程序员的讨论，没有人认为真的是活儿太多做不完，也没有人认为中国程序员比美国程序员笨。大家都抱怨是管理的问题，是对工作的评估方式的问题。

我理解这可能是因为中国公司没有建立一个讲效率的文化。但是这不要紧，我相信局面会好转的，因为程序员自带讲效率的种子。关键是管理者应该尊重程序员，搞一个工程师说了算的企业文化。

效率是程序员的个性发挥。这是你让世界按照你的想法稍微变一变，往你喜欢的方向稍微转一转。这是程序员的自我实现。

### 💡 精华要点
- 想要增加效率、减少摩擦，想让一切以最顺畅的方式运行，这也是一种美学追求，是生活黑客、工程师、特别是程序员的价值观……甚至是一个情感需求。
- 你应该有一双随时能发现效率应用的眼睛。
- 效率的精神：你不是通过自己多工作而挣钱，你是通过让别人和自己都少工作而挣钱。

![图片](https://piccdn3.umiwi.com/img/202011/18/202011181321304528146869.jpg)
