文摘 · 2024
「文摘」栏目 2024 年汇总,共 45 期
第 331 期:你可能是一个 NPC
1、长期软件开发
有些领域的软件会持续运行几十年,比如发电厂、起搏器、飞机、桥梁、重型机械的软件。它们可能几年都不会改动,然后推出一个新的大版本。
如果一个软件的开发周期长达几十年,需要长期维护,那么最好做到下面几点。
(1)尽量减少依赖。
软件的依赖项越多,长期越难以维护。依赖包括开发时依赖和运行时依赖,都是越少越好。
现在,很多软件在运行时会调用云服务,这也不利于长期维护。
(2)完备的测试用例。
测试对于重构、删除/添加功能,会提供极大的帮助。当你中断3年后,重新开始开发,测试也会让你快速了解系统。
(3)减少复杂性。
复杂性是软件开发的头号敌人,会让最好的程序员和团队都铩羽而归。
由于熵增定律和人类行为,除非你有意识地遏制,否则复杂性总是会增加。
因此,你需要养成严格的开发习惯:尽早和频繁地重构,删除不必要的或重复的代码,花时间简化。
(4)编写简单无趣的代码。
代码越简单越好,重点是代码的运行逻辑要显而易见。你永远不会后悔编写了简单的代码。
那些看上去很聪明、很高深的代码,会让后期的调试和理解变得复杂。特别注意那些高性能代码,只有当你正确理解它们时,它们才有效。
另外,那些眼下时髦、被热炒的明星技术,如果没有得到充分验证,也需要规避。
你最好只使用至少有10年历史的可靠技术。有一条规则是,某项技术的寿命与它们当前的年龄成正比,即存在越久的东西越可能继续存在。
(5)日志、遥测和文档
如果软件不是持续更新,开发者的注意力就会转到其他地方,不会立即跟进,所以需要有日志和遥测,能把运行过程记录下来。
文档则可以帮助我们理解几年前、甚至十几年前,编写原始代码时的想法。可能的话,记录所有事物,不仅仅是代码,还有理念、想法和为什么。
(6)团队
团队人员变化是很常见的。在许多地方,在一个团队呆三年,就已经很久了。虽然你可以用良好的文档和出色的测试,来抵消这种人员变化,但这很困难。
软件长寿的最简单办法之一,就是让开发成员长期稳定,保持工作十年。这意味着,你必须给你的程序员提供良好待遇,否则人们会离开。
在某些地方,软件是外包公司或咨询顾问写的,他们将代码丢到你的系统中后离开。对于长期运行的软件,这是非常糟糕的安排。
(7)开源
让你的代码暴露在外界的眼光,是保持代码可靠的好方法。一个有趣的事实是,只有质量良好的代码,人们才愿意对外分享,也就是说,如果不开源,人们会愿意在组织内部接受质量更差的代码。
开源代码有更高的标准、更多的测试,这是让代码不过时的绝佳机制。
第 330 期:李开复梳理人工智能
正如马丁·福勒(Martin Fowler)所观察到的那样,程序员的编程生产力无法有效地衡量,因为它不存在。
软件开发并不是一项必然会产生任何东西的活动。
假设你有两个开发人员在同一个项目上工作,并且偶然地,他俩在同一天接受了相同的任务。
甲写了一个1000行的框架,完美地解决了这个问题。代码编写良好,并经过充分测试,每一步都有详细记录。
乙则是当天去了公园,一边喂鸽子一边思考问题,然后漫步回到办公室,删除了100行代码,部署了更改……问题就解决了。
请问谁的生产力更高?
回答是,这不重要。重要的是乙解决了问题,同时降低了团队的长期维护成本。甲也解决了这个问题,但是他通过增加代码,增加了维护成本,因此(在其他条件相同的情况下)他的解决方案较差。
我们能说,乙具有更高的生产力吗?显然,很难找到编程生产力的正确衡量指标。
我认为,优秀的软件开发者所做的就是解决问题。但是,生产力的衡量指标,比如代码、文档、数据等等,都只是解决问题的工具,并不是解决问题本身。
第 329 期:示意图利器 D2
1、大众审美
人们眼中的美和丑,其实都是受到社会的影响,很少有人拥有自己独立的审美标准。
1990年代初期,两位俄罗斯艺术家委托一家美国市场研究公司,进行市场调查,向1001位美国人询问下面的问题。
- 你最喜欢的颜色是什么?
- 你喜欢锐利的曲线还是柔和的曲线?
- 你喜欢光滑的笔触还是厚重的笔触?
- 你喜欢裸体还是穿着衣服的人物?
- 你喜欢休闲的人物还是工作的人物?
- 你喜欢室内场景还是室外场景?
- 你喜欢什么样的风景?
调查完成后,两位艺术家根据大多数人的偏好,绘制一幅画。理论上,这幅画应该受到最多社会大众的喜爱。
后来,他们又在其他国家做这个调查,得到一个惊人的结果:每个国家的调查结果(即大众偏好),几乎都是一致的。
“人们想要的都是风景画,周围有几个人物,前景是动物,主要色调是蓝色。”
他们根据11个不同国家的调查结果,画出来的11幅画看上去几乎一样。

这证明了,全世界的大众审美正在趋同。从电影到时尚,从建筑到广告,全世界的人们喜欢差不多的东西,各国审美越来越接近,独特性越来越少。
举例来说,AirBnB 上面的公寓,不管是哪个国家,装潢风格很多都是雷同的,可以称为 AirBnB 美学:白墙、原木、胶囊咖啡机、扶手椅、裸砖、木搁板、灯泡。

这种 AirBnB 美学既有工业主义的粗犷原始,又有古典主义的优雅极简。
这种风格还影响到了咖啡店。
世界各地的咖啡店(包括餐厅),也慢慢变得相似:粗糙的木桌、宽大的窗户、朴素的吊灯。

总之,随着互联网连接全球,全世界正在形成统一的大众审美。以后,无论去到哪个国家,旅馆和咖啡店可能都是一样的装修。
第 328 期:AI 模型不是一门好生意
1、10亿次心跳
哺乳动物随着体型变大,心跳逐渐放慢,这是为什么?
比如,仓鼠的心跳是每分钟450次,猫是150次,猪是70次,大象是30次,鲸是20次。
原因可以这样理解,假定猫的体积是仓鼠的10倍,那么猫的新陈代谢率(它燃烧能量的强度)也应该是仓鼠的10倍,毕竟猫有10倍的细胞在消耗能量。

但是这不可能,如果真的这样,猫就会因为体温过高而死亡。因为新陈代谢会产生热量,需要散热,但是猫的表面积并没有仓鼠的10倍,必定有一部分热量无法散发出去,导致体温过高。
为什么猫的表面积没有仓鼠的10倍?
中学数学告诉我们,表面积增长的速度,慢于体积增长的速度。举例来说,如果球体的体积增长一倍,变成原来的两倍,表面积只是原来的1.59倍。
既然无法散发所有的热量,所以大型动物的新陈代谢必然慢于小型动物。相应的表现就是心跳放慢,降低新陈代谢的强度。
这就是为什么体型越大,心跳越慢。
动物学家还发现一个有趣的现象,哺乳动物不管体型大小,一生的总心跳大概在10亿次左右。
仓鼠的寿命是3年,猫是15年,猪是25年,大象是70年,鲸是80年。
结合它们的心率,不难算出,仓鼠一生的总心跳是7.1亿次,猫是11.8亿次,猪是9.2亿次,大象是11亿次,鲸是8.4亿次。
这些动物的总心跳都在10亿次左右。
奇怪的是,人类不符合这条规律。人每分钟心跳60次,平均寿命70年,总心跳是22.1亿次。
第 327 期:没有链接的互联网
1、高效率时段
一天24小时,你无法每时每刻都保持专注。

一个人每天的高效率时段,只能持续一会,然后就会消失,无法再恢复。
所以,如果某个时候,你不能保持专注了,那就不要再反复尝试,接受这个事实,转而去做一些更简单、不需要那么专注的事情。
亚马逊创始人杰夫·贝佐斯,就曾经说过:“我喜欢上午10点举行重要会议。如果到了下午五点,我的脑子就什么也想不了,只能把事情推迟到第二天上午10点。”
所以,你最好的选择就是,每天尽早完成尽可能多的工作。这段时间要限制外界的干扰,多做困难的事情,直到你感到疲劳为止。
当你觉得疲劳、无法保持专注了,那就不要抵抗它,把还没做完的事情推迟到第二天,转向更简单的任务,或者干脆什么也不做了。
有些人为了专注工作,会每天早起。我的一个朋友则是习惯在晚上11点到凌晨4点,全力工作。
他们都会避开白天的高峰时段:炎热的天气,每个人都在忙,消息满天飞。即使你的能力再强,此时都无法逃脱外界的干扰。
请记住,每天你一醒来,时间就在一分一秒流逝,你不知道自己的精力能维持多久。你需要做的,就是问自己:在你无法保持专注之前,能做多少事情?
第 326 期:世界没有那么多财富
1、燃烧 NeXT
1990年,乔布斯决定推出新型号的 NeXT 电脑,外壳要用镁合金制作。
镁是一种相对昂贵的金属,非常坚固且重量轻。乔布斯认为,这样的外壳不仅美观,而且可以节省搬运和制造成本。
我当时是一名报道计算机行业的记者,但以前学的是化学。我对这个决定很感兴趣,我知道镁燃烧时会发出明亮的白色火焰,我不禁好奇地想,如果 NeXT 烧起来会是怎样。
1991年秋天,我采访了 NeXT 的硬件副总裁。采访结束后,我提出,能不能送给我一个 NeXT 的外壳,让我烧烧看。他笑着同意了。
第二天,我开车去工厂,拿到了电脑外壳。
我很快就发现了问题:镁合金需要高温才能点燃,普通火焰点不燃,但是我无法制造这样的高温。于是,我无可奈何,只能把电脑外壳寄放在朋友家里。
一年后,朋友告诉我,她厌倦了保留这个玩意。而且,NeXT 已经决定停产这个型号,于是我开始认真考虑怎么烧掉它了。我想,它燃烧的照片正好配合停产新闻,作为杂志封面。
设计燃烧方案时,我考虑到,镁燃烧时会发出明亮的白色火焰和大量的白烟,虽然烟雾无毒,但可能引起警察或消防部门的注意。于是,我给消防部门打电话,询问有没有燃烧许可证。但是,他们不清楚这些事情,没人烧过这么多的镁。我还被告知,必须获得空气污染的许可证。
最后,我沮丧地决定执行原来的计划:开车去沙漠深处,然后把它烧掉。
但是最后一刻,我想到了加州的劳伦斯·利弗莫尔实验室,这是一个隶属于能源部、由加州大学伯克利分校管理的实验室。很多武器在那里实验,我确信那里肯定有燃烧几公斤镁的设施,而且也有必要的许可证。
我打电话给他们,他们同意了借给我照明弹的实验室。这让我的摄影师特别高兴,因为室内燃烧更容易拍出好的效果,阳光直射下几乎不可能看到火焰。
正式燃烧的前一天,我又找了一台旧的 NeXT 电脑作为备用。
到了正式燃烧时,我们用气焊枪点燃了它。气焊枪的蓝色火焰,接触到了电脑外壳,半分钟后,它开始发出独特的橙色光芒,然后慢慢融化。突然间,一道耀眼的白光闪过,然后是稳定的白色火焰。
我知道镁燃烧得很明亮,但我不知道有多快。我想至少会持续一分钟,但事实证明,镁的燃烧速度非常缓慢。当火焰最终熄灭时,剩下的只是一些块状的奶白色灰烬——氧化镁。
下面我们那一天拍到的照片。



第 325 期:VS Code 编辑器的下一站是 Zed?
AI 的发展,使得语音可以成为用户界面,这称为“语音 UI”。

有人认为,语音 UI 将是终极 UI,因为当你可以直接说出命令,为什么还要费心使用键盘和鼠标呢?
我不相信语音会成为通用界面,原因有很多。
(1)声音本质上无法表达抽象思想。很多时候,我们的大脑里面只有零碎的意识,很难找到正确的词语,将它们表达出来。
(2)语音让很多事情变得更难而不是更容易。理论上,说出“叫一辆网约车去机场”似乎是完成任务的最简单方法,但是如果你还有其他要求,比如指定车型和限价,口头表达就会很麻烦。
(3)语音侵犯隐私。你说出指令的时候,愿意被别人听到吗?
(4)视觉 UI 可以展示软件的局限性,语音 UI 就不行。很多事情,软件无法做到,视觉 UI 可以帮助我们了解软件的功能。如果没有视觉 UI,你很难发现软件不能做什么事。
(5)用户不喜欢一直说话。使用语音完成简单的任务是可以的,但要完成所有事情很快就会变得烦人,难道你要一直说个不停吗?
(6)语音无法解决现实世界中的歧义。语言表达可能存在大量歧义,无法通过纯语音界面轻松解决。人工智能可能无法正确理解你想要完成什么。
当然,视觉 UI 也有歧义,但是这会更困难,因为你的操作有视觉反馈。
第 324 期:人类已知的最大质数
寻呼机是上个世纪的通讯工具,现在已经淘汰了。

但是,近80%的美国医院还在使用寻呼机,这是为什么?

这有几个原因。
(1)信号问题。
寻呼机使用的是类似调频广播的信号,不是手机的 3G/4G/5G 信号,穿透性更好,覆盖范围更广。医院的某些死角,收不到手机信号和 Wi-Fi,但是寻呼机依然有信号。
这使得寻呼机比手机更可靠,如果发生灾难,寻呼机比手机更不容易断网。
(2)续航。
寻呼机的电池寿命很长,可以两周充电一次,而手机一般是每天一充。
(3)简单性。
寻呼机比较简单,不易被攻击或破解。即使落在别人手里,泄漏的信息也很有限。
第 323 期:技术公司的口号比拼
很多人听到“自由职业”,想到的就是自己当老板,穿着睡衣工作,在咖啡馆喝拿铁咖啡,在海滩散步,同时赚大钱。

根本不是这样,自由职业压力巨大。

(1)你的每个月都是一场赌博。这个月,你拿到高薪;下个月,客户就不来联系了,你不停刷新收件箱,什么也收不到。
自由职业是不可预测的。客户随时会消失,你可能尽了最大努力,还是连续几周没有一个项目。
除非你有很厚的家底(大多数人没有),否则,没有客户会让你晚上难以入眠,不知道怎么偿付房租和账单。
(2)自由职业不会带来财务保障。全职工作所拥有的健康保险、退休储蓄、带薪休假,甚至可能还有休息室里的一些免费零食,自由职业全都没有。
作为一名自由职业者,你赚到的每一分钱都不容易。你不仅要设法赚钱,还要搞清楚你自己的税务、健康保险、退休计划。你只要请假就意味着没有收入。
你某一次的报酬可能看起来不错,但一旦考虑到税收、保险和费用,你很快就会意识到,自由职业并不具备传统工作所具有的财务缓冲。
(3)自由职业不具有扩展性。你一个人就是整个公司,销售、会计、客服都要管,这意味着你能承受的工作量很有限。
你想多做几个项目,很可能会精疲力尽。你也很难提高收费。
到了某个时候,你会意识到,无论你多么努力工作,多么忙碌,一天的时间就只有这么多。自由职业者稍微忙碌,就会达到自己的上限,如果没有资源来雇人,你会感觉自己就是一只困在轮子上的仓鼠——不断地奔跑,但永远不会真正到达任何地方。
(4)自由职业听起来像是自由,但它可能会变得非常孤独。在家工作意味着没有同事可以交流,没有办公室文化,也没有饮水机八卦,只有你和你的电脑。
这种孤独会比你想象的更快地导致倦怠。你很容易感觉自己一直在工作,因为没有下午5点的下班时间,你可能午夜还在回复电子邮件,周末还在接听电话,不断感受到必须更加努力工作的压力,因为如果不这样做,可能会没有收入。这让人筋疲力尽,从长远来看是不可持续的。
(5)结论:自由职业并不适合所有人。如果你能够承受不稳定的收入和心理压力,并且能够像专业人士一样管理自己的财务,那么你可能可以尝试自由职业。但是,你必须时时刻刻准备好,事情一旦出现问题,你有可靠的后备计划。
第 320 期:乒乓仓
巨型光学望远镜,指的是透镜直径超过10米的望远镜。

为了建造下一代巨型望远镜,美国政府准备拨款不超过16亿美元。这是很大一笔钱,但可能还不够,这样的望远镜预计将耗资30亿美元或更多。
但是,我有不同想法。我认为,巨型光学望远镜不值得建造,应该用小型光学望远镜(直径 0.5米~1米)的组合取代它。
巨型光学望远镜的建造,需要削平整个山头,建立牢固的地基和同样巨大的配套设置。为了运送建筑材料,要先在山上开辟公路。一条两车道的公路只有5米宽,怎么运输这面10米直径的透镜都成了大问题。
我们这个时代,技术设备正变得越来越小,计算机从房间大小变成了口袋设备,摄像头可以做到微米级的像素产品,为什么望远镜要越做越大呢?
(1)小型望远镜成本更低。在美国购买一台0.5米直径的光学望远镜,价格是56,000美元;一台性能优秀的直径1米的光学望远镜,价格现在是57万美元。即使购买100台这样的望远镜,也不过几千万美元,而一台巨型望远镜需要投入30亿美元。

(2)天文学图像的重点,已经从光学照片转移到了软件处理。完全可以在多个夜晚对天空的同一区域进行多次曝光,然后用软件将它们组合成一张图像,而不需要更大更清晰的镜头。
以上两点,使得我们完全可以将许多小型望远镜组合在一起,而不是建造单个巨大的望远镜。我们可以让望远镜组合扫描整个天空,再拼成一张巨型照片。
这种向小型望远镜的转变,将从根本上改变望远镜工程。天文望远镜将从结构和机械工程,变成一种软件开发。
这种转变很有吸引力,因为软件可以渐进式改进,天文学家还可以轻松利用各种软件工具,处理大量数据。


此外,小型望远镜的组合也更灵活。使用巨型望远镜,你只能指向一个方向,但使用许多小型望远镜,你可以将视野分开,还可以每个镜头使用不同的滤光片。
最后,如果某个零件发生故障,巨型望远镜需要整个停机,而小型望远镜的组合只需要停掉那一台,其他还能正常工作,这样更方便系统维修。
第 319 期:如何拍出爆款视频
英国科学家约翰·斯特拉特(1842—1919,又称瑞利男爵)是第一个计算分子大小的人。

人们很早就发现,油会在水面上形成一层油膜,让水面光滑如境。

1890年,瑞利男爵取了少量橄榄油,准确地说是0.81毫克,滴在水面上。橄榄油很快扩散开来,形成了一层极薄的油膜,他精确测量了油膜的面积。
他假设,油膜的厚度就是一个油分子,那么已知油膜的体积和面积,将体积除以面积,就可以算出油分子的大小。


计算结果是1.63纳米,这比其他测量分子大小的方法早了许多年,而且非常简单。
这个故事告诉我们,最简单的科学实验,不需要复杂的材料和仪器,只需要一滴油和科学头脑,有时候就可以得到深刻的科学见解。
瑞利男爵最出名的,并不是这个实验。他是第一个光的散射模型的发明者,解释了天空为什么是蓝色的,他还发现了惰性气体氩,并因此于 1904年获得诺贝尔奖。
第 318 期:创业咖啡馆的记忆
下面是著名程序员、Rails 框架的作者 DHH 的最新文章。

几周前,我看到一条推文问道:“如果 Linux 这么好,为什么没有更多的人使用它?”
这个问题听上去很有道理。你们都说 Linux 好,它甚至是免费的,那为什么没有大规模采用呢?
但是,如果你仔细想一想,就会发现生活中到处是这样的情况。
如果锻炼如此有益健康,为什么没有更多的人去做呢?
如果阅读如此有教育意义,为什么没有更多的人这样做呢?
如果垃圾食品对你如此有害,为什么还有那么多人吃它?
……
世界上充满了值得尝试的事情和事物,但大多数时候却被大多数人忽视。现实世界的真实情况是,变得肥胖和无知要比保持健康和学习更容易。
大多数人总是选择最容易、最不需要努力的事情。
Linux 就不容易,比微软和苹果的商业产品对使用者的要求更高。为了用好它,你需要学习一些东西,还要自己尝试解决问题。
我完全理解为什么大多数计算机用户对 Linux 不感兴趣,因为他们只想浏览网页或使用应用程序,并不希望成为计算机的高级用户。
但是,程序员不一样,对于他们,深入了解计算机是工作必需。这就是为什么程序员往往使用 Linux,也应该使用 Linux 的原因。
Linux 就跟生活中很多其他事情一样,选择它不是因为容易,而是因为它值得。
第 317 期:驴子、老虎和狮子的寓言
1、谷歌的工程师等级
谷歌的工程师有明确的等级制。

1级是 IT 支持人员,2级是刚从大学毕业的学生,3级通常拥有硕士学位。
4级需要你工作几年时间,或者需要博士学位。大多数工程师停止在5级。
6级工程师非常有能力,属于所有工程师的前 10%,是项目成功的主要原因。7级是资深的6级。
8级是首席工程师,一般会负责主要产品或基础设施。
9级是杰出工程师,受到业界景仰。
10级是谷歌研究员(Google Fellow),属于终身荣誉,通常是各自领域的世界领先专家。
11级是资深研究员(Google Senior Fellow),目前为止只有两个人:桑杰·格马瓦特(Sanjay Ghemawat)和杰夫·迪恩(Jeff Dean)。他们都是谷歌的创始员工,参与架设了谷歌的搜索服务。
商业公司的软件,最终都会患上一种叫做“功能蔓延”的疾病。

有人曾经说过的:“新功能是软件开发和营销的货币。”意思是,只有添加新功能,商业公司才能让客户和投资人为软件掏钱。
这种说法是有道理的。最根本的原因是,没有用过某种软件的人,会根据功能数量来判断软件的价值。
因此,为了最大限度地提高初始销售量,公司倾向于打造多功能的产品,将新功能源源不断地添加到软件之中,直到它们把整个产品淹没。
问题是太多的软件功能,会带来沉重的负担。拥有的功能越多,维护成本就越高。
这有几点原因。
首先,因为不断添加新功能,软件就不可避免地需要重新设计,软件设计就一直在变,永远无法完成。
其次,每一项推出的新功能,都需要错误修复、客户支持,以及验证是否兼容以前的功能。这些都是巨大的成本。
再次,新功能往往意味着,产品团队将短期价值置于长期价值之上。因为新功能通常会给开发者带来荣誉、晋升和影响力,而维护旧功能是没有奖赏的。产品的长期发展,并没有得到充分考虑。
另外,太多功能会带来软件的易用性问题,让软件的口碑变差。
由于上面这些原因,越来越多的软件功能不可避免地会阻碍公司未来的发展。公司陷入了自己造成的功能困境,无法快速满足新客户和市场需求。
第 316 期:你一生的故事
1、鲍尔莫的面试题
微软的前 CEO 鲍尔莫曾经在采访中透露,他会问面试微软的候选人一个问题。

我要跟你玩一个游戏。
我在心里选择一个1到100之间的整数,你来猜这个数字。每次猜完,我会告诉你,答案比你猜的大还是小。如果猜错,你可以接着猜,直到猜中为止。
如果你只用一次就猜中,我给你5美元,用两次猜中我给你4美元,三次3美元,四次2美元,五次1美元,六次0美元。
你还是没猜中的话,就要倒贴钱了。七次猜中,你给我1美元,八次2美元,九次3美元。
请问你应该玩这个游戏吗?
回答这个问题,需要算出游戏结果的期望值,以确定哪一方获利的可能性更高。计算过程和结果可以看链接。
2、安灯线
安灯线(Andon Cord)是丰田公司在流水线引入的一种质量控制方法。
丰田公司的装配线上方,有一根长绳。任何一个员工发现产品缺陷时,就拉一下这根绳子。警报器就会响起来,整个装配线都会停下来。


生产经理听到警报以后,就会跑过来,了解产品缺陷并解决问题,然后生产线才会重新开动。
这种制度的目的是,谁发现问题,谁拉绳子,直到解决为止,不要把问题留给下一个环节。
第 315 期:一份谷歌离职报告
地球的总人口,目前是81.7亿。
10年前的2014年,总人口是73亿。
当时有人做过计算,73亿看上去是很大的数字,但并没有大家想象的那么大。
如果每个人用一粒米来代表,73亿粒米刚好填满一个边长为6.1米的立方体,大约相当于一栋两层小楼的体积。

如果每个人用一粒沙来代表,总体积将取决于沙粒的大小。最极端的情况下,73亿粒细沙刚好填满一个2升的饮料瓶。
在地球眼里,人就是一粒米或一粒沙的大小。每天喧闹无比、仿佛宇宙中心的人类社会,不过就是一栋小楼,或者一个饮料瓶里面发生的事情。
第 314 期:《黑神话:悟空》可以产业化吗?
1、隐性知识是危险的
隐性知识又称为“部落知识”,指的是有些知识没有文档,只掌握在团队成员的头脑里面。

如果你想掌握这些知识,只有去询问团队成员。
隐形知识的优点是,省去了文档成本,而且询问相关成员比自己阅读文档更快,当然前提是那位成员能够快速响应。
隐形知识的缺点是,一旦团队扩大规模,它就会失败。对于掌握知识的团队成员来说,回答问题所占用的时间是一个拖累,影响了生产力,也拖慢了团队的开发速度。
另一方面,随着团队规模的扩大和知识变得更加分散,你自己阅读文档和观看视频讲座,会比向他人寻求帮助更快速和方便。
所以,团队越是大,就越要避免“隐形知识”,所有知识尽量文档化,让团队成员能够方便地查阅。
第 313 期:如果新加坡没有空调
1、冰航母
二战时,英国轮船经常被德军击沉。当时又缺乏金属,造成船只短缺。
英国政府非常头疼,希望科学家能够造出无法被击沉的船只。
一个发明家提出了匪夷所思的解决方案:能不能使用冰块,造一艘航空母舰?

冰块无所不在,只要能够防止其融化,就能用来造船。一旦造成,这艘船就总是浮在水面上,永远不会沉,而且就算在海上有破损,也能用海水修补。
发明家找到了一种木浆和水的混合物。木浆对冰块起到加固作用,就像混凝土里面的钢筋。而且,木浆可以使冰融化得更慢。
为了防止冰块融化,船底需要放置制冷机。

英国政府最终同意了这个计划。1943年,原型船开始在加拿大制造,长9米,宽4.5米,重达1,000吨。
这艘冰船成功建造出来了,但是英国政府发现,它还是需要巨大数量的钢材,用作甲板和内仓,而且当时已经建造了很多新机场,减少了对航母的需求,并且远程油箱已经可以帮助飞机飞得更远,所以这个计划后来还是被取消。
但是,原型船证明这个设计可能是可行的,它在加拿大度过了三个炎热的夏天,才完全融化。它残骸至今还沉在建造地的湖底,水下还有一块纪念牌。


第 312 期:从英特尔看“美国制造”
Netlify 公司希望给用户发邮件,让用户回信提供产品反馈。
但是公司知道,群发邮件的回复率很低。他们就请了一个营销顾问,希望他设法提高邮件回复率。
这个顾问认为,用户不回邮有两个原因:(1)邮件篇幅太长,大多数人懒得读。(2)群发邮件都是模板格式,用户觉得这是机器发送的,没必要理睬。
他决定,缩短邮件内容,采用口语表达,看看能不能提高回复率。
他设计了一个 A/B 测试。A 格式是传统样式的邮件,150多个单词。

结果,邮件回复率是1%,100个收信人有1个回复。
B 格式是一封更短的邮件,只有37个单词。

结果,回复率上升到了4%。邮件长度减少到了四分之一,但是回复率变成了四倍。
他一不做二不休,索性将邮件删到14个单词,就是直接了当的一个问题。

这一次,回复率进一步上升到了8%。
因此,营销邮件提高效果的最简单方法,就是删除任何的多余词汇,尽可能短。
第 311 期:低利率与长期项目
我喜欢的技术博客,都有一些共同特征:
(1)解决困难,或者帮助读者理解一些令人困惑的话题。
(2)带有清晰可理解的代码或例子。
(3)让事情变得更简单。
(4)定期写作。
(5)不回避所介绍的技术的代价和缺点。
(6)不使用网络俚语、咒骂、讽刺和咆哮。
2、搜索引擎发展史
以前,世界各地的图书馆帮助人们查找资料。
后来,互联网搜索引擎出现了,能够快速、方便地找到正确的资料。20年后,几乎没人去实体图书馆查资料了,大多数人都使用搜索引擎。
获得主导地位后,搜索引擎不甘于只提供搜索功能,决定自己提供信息,不再链接到其他地方。
搜索引擎开始自己写所有主题的书,质量要比原始书籍差一些,但是它让人们更容易获得它写的书。由于搜索引擎不是特定主题的专家,因此它写的书只是对原始资料的简单解释,有时甚至就是逐字逐句的复制。
谷歌现在就是这么干。它采用了一种人工智能,从人类创作的内容中提取数据,并在没有专业知识或权威支持的情况下自己生成内容。
多年来,用户都在抱怨“内容农场”,这类网站大量制作各种主题的低质量文章,以便在搜索引擎中获得较高的排名,从而获得流量。然而现在,谷歌看起来就要变成世界上最大的内容农场,由机器人实时生产无限数量的定制文章。
第 310 期:内容农场的 AI 赚钱术
1、我的编程信念

下面是我目前对计算机编程的一些看法。这些看法都是基于我自己的经验。
(1)当面临一项艰巨的任务时,我会问自己:“如果我根本不做这件事会怎么样?”
大多数情况下,这是一个愚蠢的问题,我必须做这件事。但大约 5% 的情况,我意识到我可以完全跳过一些工作。
(2)“简单”和“容易”之间的区别很重要。简单是复杂的对立面。复杂性来自多个东西捆绑在一起。
容易是另外一回事,复杂的东西也可以很容易。理解“简单”和“容易”的区别,可以让你开发更简单的软件。
(3)消除无效状态(NULL)。如果我可以设计数据/类型防止无效状态,那么就可以消除大量的错误来源。类型系统或数据库架构的一点麻烦是值得的。
(4)代码的可测试性,基本上与代码模块化是一回事。
(5)软件最重要的问题都是非技术性的。现实世界的问题往往是最重要的,我所构建的东西帮助对象是谁?我的团队在健康运作吗?
(6)制作无用的东西可能是学习新事物的好方法。我曾经花了很多时间,为一个业余项目编写自定义 PNG 编码器。我从未想过它会有用,但几个月后,我的另一个项目需要用到某个功能时,我确切地知道如何去做。
东亚商人经常出去喝酒,在酒桌上讨论生意。世界其他地区并不如此,这是为什么?
这跟东亚文化有关。东亚地区强调集体主义和等级制度,不提倡面对面直接说出想法,更喜欢通过隐含和间接的方式表达。
人们避免直接的冲突,压制自己的情绪,使得我们很难了解别人的真实想法。
饮酒是一种弥补方法。酒精会降低人们的抑制力,从而促进了人际关系和信息共享。
饮酒提供了宝贵的机会——无论在公司内部还是外部,让参加者放松下来,说出自己的真实感受并建立融洽的关系。
第 309 期:无人驾驶出租车的双面刃
我是一名工程师,负责管理公司的亚马逊云服务(AWS)。

我喜欢 AWS,每年都去参加他们的开发者大会。2022年的大会真是太棒了,有非常多的云服务内容。
2023年的大会出现了生成式 AI,从客户交互到内容创建,从重构到运营,有很多 AI 的内容。虽然我认为这是炒作,但是说实话,我也对生成式 AI 带来的机会感到非常兴奋。
2024年的大会,不知何故,AWS 对生成式 AI 的关注变得歇斯底里,至少80%的内容都与 AI 相关,除了 AI 很少其他内容。
这仿佛告诉开发者,AWS 现在专注于生成式 AI,似乎不再关心其他任何事情。

我感觉 AWS 和我的分歧越来越大,我看重的东西不再是他们看重的东西。他们越是谈论 AI,就越是含蓄地表明,在他们眼里,数据库不重要,可扩展的基础设施不重要,可维护的应用程序不重要,只有 AI 才重要。
这意味着我喜欢的产品的预算将变少,也可能无法获得下一个我想要的功能,或者只能以较慢的速度获得。
总之,AWS 正在隐晦地告诉开发者,不要再关注核心基础设施,而应该把时间花在生成式 AI 上。我相信这是错误的。因为只有底层基础设施在运作,AI 才能存在。我们开发者使用 AWS,只是因为我们想要构建和支持自己的业务,并不是为了未来让 AI 解决所有问题,我们知道 AI 做不到。
我希望 AWS 不要忽视它的根源,向我们表明你仍然重视你过去支持的业务和产品。通过倾听开发者的意见并解决他们的痛点,帮助他们构建更好的应用程序。
我是你的客户,我恳求你:请让我再次成为一名云工程师。
第 308 期:工作找不到,博士能读吗?
2018年1月1日,我决定写一个应用程序。
几天后,最小可用原型写好了。我不是一个优秀的程序员,但是这个程序很简单,所以写得很快。我把版本定为 0.0.1 alpha。
我本可以发布它,但是我想再加一个功能,用户可能会更喜欢,就没发布。
后来,我断断续续加了几个功能,是时候发布了。我又犹豫了,我想不如把手机 App 也一起做出来,否则留不住用户。于是,我花了几个月,去学习 React Native,来开发手机 App。
转眼两年过去了,我在 Web、React Native、Expo、GraphQL 这些技术的迷宫里面徘徊,总是感觉技术堆栈不顺手,许多地方需要改动,没有好的解决方案。
最终,我灰心了,停止开发,放弃了发布该应用程序的想法。
最近,我又把这个程序找出来,开始使用它。我马上意识到,它缺少很多功能,我要么重新开发它,要么去找别人写的替代方案。
我决定使用别人写的程序。当我滚动他们的登陆页面时,我既高兴又愤怒。高兴的是,有人解决了我想解决的问题,仿佛他们读懂了我的想法并实现了出来。愤怒的是我放弃了,如果我坚持下来,现在这个程序应该是我写的。我没有及时发布,我行动太慢了。
现在我不再需要编码了。世界永远不会看到我的程序,但我在上面浪费了很多时间。这种感情真复杂。
然后,就是最悲伤的部分。我在他们的程序里面注册了一个账户,仔细看了帮助中心,觉得他们做得很好。等到30天试用期结束了,我默默拿出了信用卡,成为了付费用户。
想到我是一个从未发布的失败者,我不禁流下了眼泪。
这个故事的教训就是。不要觉得自己的应用程序还不完善、笨重、有缺陷、缺少功能、没有人会使用等等。如果它可以运行,可以完成基本功能,你就发布它。
第 307 期:不要看重 Product Hunt
地球是一颗很罕见的星球,它的大小刚刚好。
如果地球再大一点,比如直径增大一倍,那么我们可能就无法离开地球,探索太空。

因为直径增大一倍,星球的质量可能会增大10倍左右,引力可能会强两倍以上,具体取决于行星的成分。
这时,额外的重力一方面有利于生命的形成,因为会产生更厚的大气层,保护地表生命免受有害宇宙射线的伤害。
另一方面,也将难以发射火箭离开地球。10倍重力的情况下,发射同样负载,火箭燃料需要增加三倍左右。

如果要发射45吨负载(相当于阿波罗登月任务),那么火箭重量将达到大约400,000吨,相当于大金字塔的大小。
想象一下,把金字塔那样的庞然大物发射上天,这只在理论上是可能的,实际上很难做到。
因此,我们寻找外星生命的时候,如果发现重力很大的星球,它上面即使存在智慧生物,也很难飞离这颗星球。
第 306 期:信息就像糖一样上瘾
互联网行业有一个共识,就是寻找 10x(10倍效率)的工程师。

这样的工程师很难找,现实生活中不一定能遇到,你反而可能遇到 -10x(负10倍效率)的工程师。
所谓 -10x 工程师,就是他不仅不能为团队节省时间,反而每周要浪费团队 400 个小时的工作。
-10x 工程师有以下特征。
(1)他会创造出大量的无效工作。最常见的就是,他会推动建立毫无意义的流程,以及让大家忙于幻灯片、图表、报告、工单管理等等。
(2)他会鼓励团队追求优雅,而不是实用主义。
(3)他会使得团队无法一锤定音地做出任何决定。
(4)他写出冗长的消息/文件,并尽可能广泛地分享,让所有人发表意见并参与讨论。
(5)他编写很慢的程序,比如避免数据库索引、在16核机器上运行单线程程序、不压缩文件。
(6)他编写只有自己看得懂的脚本,并且没有文档。
(7)他编写缓慢的构建,以及缓慢的测试。
(8)他编写无意义的测试用例。
(9)他添加需要大量时间维护的依赖项,迫使工程师单独学习每个库。
(10)他将10名工程师困在一个艰难的项目中,吸引并浪费他们的才智。
(11)他让管理层低估项目的难度,并夸大项目的实用性,直至最后延迟完成或根本无法完成。
(12)他雇用其他毫无生产力的工程师。
第 305 期:随机数,这是一个问题
编程语言有小有大。
一些语言只提供最核心的功能,另一些语言无所不包。

还有一些语言,开始时很小,后来不断添加功能,变得越来越大,甚至庞大到难以使用。
Python 语言的初始版本很小,前几个版本故意保持这种特色,添加功能的建议都被明确拒绝,理由是它们会使语言太大。
某个时刻(也许是在 Python 1.6 和 Python 2.0 之间),事情发生了变化:功能建议不会因为使语言变大而被拒绝,只会因为没有解决重要问题而被拒绝。
从此以后,Python 就走向了庞大语言的道路。

在我看来,一旦语言的设计者不再担心语言的大小,这种语言的无限制增长是不可避免的。
很多语言都是如此。尽管 Java 从来都不是小型语言,但在泛型添加到 Java 1.5 之前,它的变化相当小。泛型似乎是 Java 大型语言之旅的起点。
JavaScript 本来是一个周末设计出来的小型语言,现在变成了一种相当庞大的语言。
Rust 是一种已经很大的语言,但它正在考虑添加更多功能,变得更大。
为什么那么多语言都走上了变大的道路?
我的看法是,因为没有一种编程语言是完美的,总有不能很好支持的用例。许多情况下,添加新功能有助于更好地支持这些用例。
由于潜在用例是无限的,因此我们总是加入新的设计,让语言变得“更好”,副作用就是每次都让语言变得更大一点。
第 304 期:最受欢迎的颜色
1、合成氨的作用
摘自书籍《Numbers Don’t Lie》,作者是加拿大科学家 Vaclav Smil。

德国在第一次世界大战中,坚持打了四年。能够坚持这么久,主要原因之一是德国发明了合成氨。
战争需要炸药,而炸药的主要成分是硝酸钾、木炭和硫磺。其中,硝酸钾的比重最大,大约占到75%。
德国不产硝酸钾,需要进口。从战争一开始,英国海军就切断了德国从智利进口硝酸盐的路线,眼看德国的炸药供应就要断了。
巧合的是,1909年卡尔斯鲁厄大学的弗里茨·哈伯教授(Fritz Haber),发明了廉价的合成氨方法:氮气和氢气在高压和催化剂的作用下,结合生成氨(NH3)。

1913年10月,巴斯夫公司(当时世界领先的化工集团)将该方法成功工业化,生产的合成氨可以用来生产硝酸钠或硝酸铵等固体肥料。
1914年7月,第一次世界大战爆发。不久之后,巴斯夫公司就将合成氨生产线,从生产肥料转变为生产硝酸,然后再用于合成炸药。它的产量足以满足德国的炸药需求,直到战争结束。
合成氨技术就这样解决了德国的炸药短缺问题,拖长了第一次世界大战,增加了数百万人的伤亡。
第 303 期:技术封建主义

AI 最擅长做下面的事情。
(1)快速创作低价值的书面作品,比如一篇博客文章的草稿,里面包含你想说的内容的总体思路。
(2)完成低级编码任务,比如初级程序员从一个项目复制到另一个项目的代码,或者从 Stack Overflow 复制代码。
(3)对会议、论文和数据库进行总结和排序。AI 非常擅长干这个,因为它本来就是围绕从大量无序数据中提取有用信息的概念构建的。
(4)从大量数据——天文观测、蛋白质相互作用、临床结果——发现其中的模式。AI 虽然本身并没有做出任何发现,但研究人员可以利用它们来加速自己的发现。
(5)AI 是令人惊讶的健谈者,可以永无止境地谈下去,而且对每个话题都很了解,不带评判性,并且反应迅速!
AI 最大的风险在于,它们不知道如何说“我不知道”。
当 AI 遇见以前从未遇见的东西时会发生什么?由于没有现成的模式可供遵循,它只是根据以前模式所反映的一般规则进行猜测。因此它的反应可能很笼统、很奇怪或不恰当。我们将这种现象称为幻觉。
令人不安的是,AI 不会告诉你,哪些是它的幻觉,哪些是事实。
如果你要求 AI 总结一些研究并给出引用,它可能会编造一些不存在的论文和作者,你根本分不出来。
而且,按照目前 AI 模型的构建方式,没有任何实用的方法可以防止幻觉。
第 302 期:创业虽然好,不敢推荐了
1、钻石立交桥
汽车靠右行驶的国家(比如中国、美国、德国),大多数的交通事故都发生在十字路口左转时。
这是因为左转时,会遇到两侧的来车,驾驶员可能来不及反应,就容易发生事故。

为了解决这个问题,美国现在流行钻石立交桥(diverging diamond intersection)。
这种立交桥可以使得,左转时只有同向车流,没有异向车流,完全消除了车辆迎面碰撞的可能。

上图有两个方向的车流,南北向和东西向。正常情况下,这里会有一个十字路口。
现在,为了避免十字路口的碰撞,这里造了一个南北向的立交桥。如果南北向的司机想要左转,必须走立交。
立交桥上,分成两条路,北向车流(下图的红色箭头)和南向车流(下图的绿色箭头)各走一条路。

北向司机先走左边那条路,会有一个专门的左转路口(下图的红色箭头),此时完全没有对向车流,就避免了迎面碰撞。

过了这个左转路口,会有一个交叉路口,北向车流和南向车流交换道路(下图)。

经过这一步,北向车流会从左边的路换到右边的路,南向车流亦是如此,为后面两条路重新合成一条路,做好准备。
目前,这种设计的立交桥在美国30个州已经建了200多座。
第 301 期:OpenAI 的图书馆工位
一家陷入困境的公司,聘请了一位新的 CEO。
即将卸任的前 CEO 私下会见了他,并向他赠送了三个有编号的信封。“如果你遇到了重大麻烦,请打开这些信封,每次只能打开一个。”前 CEO 说。

三个月过去了,公司的销售额和利润仍然在大幅下降,新任 CEO 受到了很大的压力。
他开始惊慌,但随后他想起了那些信封。他从抽屉里拿出第一个信封,上面写着:“责怪你的前任。”
新任 CEO 就召开新闻发布会并解释说,前任给他留下了烂摊子,清理它的时间比预期要长,但一切都在正确的轨道上。媒体和华尔街对他的解释感到满意,做出了积极回应。
又一个季度过去了,公司仍在苦苦挣扎。吸取了之前的经验,他就打开了第二个信封,上面写着:“重组。” 因此,他解雇了员工,整合了部门,尽可能地削减成本,华尔街和媒体都对他的努力表示赞赏。
三个月过去了,公司的销售额和利润仍然裹足不前。他在财报电话会议前,走进办公室,关上门,打开第三个信封,上面写着:“准备三个信封。”
第 300 期:三十年,解决人生三大问题
我曾经遇到过一个超过11,000行的源码文件,它是 VBScript 代码的电子表格应用程序,公司所有员工需要的各种表格都在这个程序里面。
这个文件包含了你能想到的软件开发的所有噩梦。
多年来,无数人对这个文件进行了更改,但他们不是程序员,而是从 IT 支持到业务分析师各种人都有。你无从追踪每个人更改了什么地方。
整个文件看起来是从上到下执行,但我从未真正确认。代码的大致逻辑是,获取一些用户数据,然后检查数据是否满足某些条件,再执行各种动作,包括显示表单、访问共享驱动器上的文件、运行 SQL 查询、向硬编码地址发送电子邮件等等。
文件里面许多变量似乎没有从未使用到,变量名也难以搞清楚含义,同义词到处都是。
有趣的是,一个变量可能在第200行-210行使用,然后突然又在第8544行再次使用,其他地方就找不到踪迹了。
很多逻辑似乎是多余的,可能是复制粘贴进来的,然后从未清理过。一旦我清理它,代码突然就出错了,直到今天,我有时躺在床上还想知道是什么原因造成的。
它没有版本控制。关于代码更改的唯一线索,是看它抛出的错误提示和代码注释,但是我学会了不要信任那些注释。
它没有测试环境。如果我进行了更改,就必须在生产环境中对其进行测试。程序的所有状态都基于用户的权限,我们只有冒充报告错误的人,才能看到他们看到的内容。
它没有单元测试。如果我修改了一个地方,也没法知道会不会出错,可能要等到一周后,才有用户报告遇到了一个错误。
这个故事的寓意是什么?
我不知道,也许是它告诉我们,现实生活中真的有这样可怕的代码存在。
第 299 期:AI 的关键是语料
1、饱腹感指数
什么食物最能够消除饥饿感?
一个澳大利亚科学家发明了“饱腹感指数”。他选出38种食物,每一种的热量都是240卡路里。
实验者依次食用每一种食物,每吃一种,就要在随后的两小时中,每隔15分钟为自己的饱腹程度打分。

最后发现,碳水化合物(面包、炸薯条、煮土豆)的效果最好。其中,煮土豆的饱腹感指数最高。
这是因为食物中含有的纤维、蛋白质和水越多,消化时间就越长,从而产生更久的饱腹感。而且,碳水化合物会立即升高血糖,从而使得身体马上知道已经饱了。
煮土豆含有大量的纤维和水,同样热量的情况下,体积又很大,还会升高血糖,所以产生了长时间的饱腹感。

水果的饱腹感指数也很高,因为水份和纤维含量大,但是水果的热量低,同样热量的情况下,水果的份量最多,不容易全吃下去。而且,水果的胃排空速度很快,第二个小时饱腹感就会消失。
高脂肪食物的饱腹感很差,因为它们的胃排空速度也很快。所以,吃肥肉容易饿。
因此,水果搭配高碳水、高蛋白的食物一起吃(比如全麦面包 + 瘦肉 + 橙子),是一个比较好的饮食方案。
第 298 期:轮到硬件工程师吃香了
1、五趾袜
我过去八年一直穿五趾袜,非常推荐它们。

(1)五趾袜更适合脚趾。脚趾可以伸展并自由活动,如果束缚在一起,是很不舒服的。
(2)五趾袜站得更稳。脚掌的表面积越大,站得就越稳。即使普通的运动鞋配上五趾袜,我也觉得稳定性更好。
(3)脚趾间不会出汗。普通袜子使得脚趾之间会捂出汗液,五趾袜就没有这个问题。
(4)走长路的时候,脚趾之间不会互相摩擦出水泡,这对长跑运动员或徒步旅行者很重要。原来是脚趾间的摩擦,现在是袜子与袜子之间的摩擦。
(5)五趾袜更牢固一些,袜子不容易滑落。
目前,五趾袜目前还不常见,因为它们的制造工艺更复杂,成本更高,人们还没有习惯它们。我已经说服了很多人尝试五趾袜,每个人都感觉很好,所以你也可以试试。
第 297 期:饮水鸟玩具
1、高速摄影的诞生
以下内容摘自科学作家瓦科拉夫·斯米尔(Vaclav Smil)的著作《数字不会撒谎》(Number Don’t Lie)。
1867年,美国加州的前州长找到了摄影师迈布里奇(Eadweard Muybridge,1830-1904),请他来解决一个古老的争议:马的四条腿在奔跑时是否都离开了地面?
摄影师发现很难证明这一点,当时的快门不够快,他拍了许多照片,都看不清楚。
他不得不设法缩短快门时间,最终在1878年造出了快门速度1/1000秒的相机(每秒钟拍1000张),可以用来拍高速移动的物体。
1878年6月19日,结论性的一天来到了。摄影师在斯坦福大学的帕洛阿尔托农场,把底片装在一个高速滚动的圆盘上,拍摄了一系列奔跑的马。

显然,在疾驰时,马的四只蹄子都离开了地面。
这种高速摄影的技巧被继承了下来,不断改进,速度从每秒1000张很快变成了每秒10000张。
1940年,旋转镜面相机的专利设计将速率提高到每秒100万张。
1999年,艾哈迈德·泽维尔(Ahmed Zewail)因开发一种光谱仪而获得诺贝尔化学奖,该光谱仪可以在飞秒(10-15秒)上捕获化学反应的过渡态。
今天,我们可以使用强烈的超快激光脉冲来捕获仅相隔阿秒(10-18秒)的事件,这种快门速度使得人们甚至有可能看到电子的运动。
第 296 期:xz 后门的作者 Jia Tan 是谁?
1、环岛的作用
开车时,你可能已经遇到许多环岛。
你有没有想过,这些路口为什么要造环岛?没有环岛,行车面积不就更大了吗?

本质上,环岛上是一种交通控制措施,相比交通灯控制的传统交叉路口,它们具有多种优势,最重要的一个是安全性。
首先,环岛迫使司机放慢速度,为了调整车头方向,司机不得降速。
其次,环岛减少了潜在冲突点的数量。冲突点就是车辆与车辆、车辆与行人可能发生碰撞的位置,它的数量越多,就越容易发生碰撞。
根据一项研究,环岛只有8个潜在冲突点,而传统的四向交叉路口有32个。
最后,环岛的车道都是紧密相邻的同心圆,并且还有很多进口和出口,迫使车辆减速让行。
根据美国公路管理局估计,环岛取代传统的交叉路口时,可将严重交通事故减少80%到90%。
除了安全性,环岛还有一些其他优点,比如让交通更有秩序,不会出现车辆在交叉路口乱成一团的情形,也能让司机更轻松地掉头。
第 295 期:巧妙的灯泡钟
载人飞行最长可以持续多少时间?
1958年12月到1959年2月,两个飞行员乘坐一架小飞机,一共在空中停留了64天22小时19分钟,这个记录至今无人打破。

大家可能想不到,这两个飞行员不是科学家,也不是军方人员,而是美国拉斯维加斯一个娱乐城的员工。
当时,为了吸引顾客,他们想出一个点子,如果开着画着公司标志的小飞机,创造在空中不间断飞行的纪录,就可以提升公司的知名度。老板觉得是个好主意,就同意了。
1958年12月4日下午3点52分,他们起飞了。公证员驾驶一辆敞篷车在跑道上追赶飞机,起飞的一刹那,他们在轮胎上涂上白油漆,防止飞机偷偷降落。
为了长时间在空中停留,这架小飞机必须定期接受补给。它平时在空中飞,但是每天有两次贴近地面,让卡车来加油,同时补给生活物质。

65天的飞行过程中,卡车一共为飞机加油128次。
两个飞行员轮流驾驶飞机,休息的那个人会阅读漫画和玩游戏,还会数下面道路上有多少辆汽车,以此打发时间。他们的生活垃圾会打包,从空中扔到无人的沙漠中。
有一天凌晨,驾驶飞机的那个飞行员实在过于疲劳,不禁睡着了。等他醒来,飞机已经自行飞行了一个多小时。除此以外,总体上没有大的事故。
随着时间的推移,这架飞机的故障越来越多,发动机和仪表都开始出现各种小问题。他们又坚持了几天,最终决定在1959年2月7日降落。
今天,这架小飞机陈列在拉斯维加斯的麦卡伦国际机场,就挂在旅客行李大厅的上方。

这架上个世纪50年代的小飞机,它的发动机能够连续运行1500个小时,非常了不起。更了不起的是,两个飞行员能够在充满噪音的狭小机舱里面生活两个多月,这不是常人可以忍受的。可能正是因为这个原因,该记录至今未被打破。
第 294 期:崖门海战的感想
1、磁星
很多人的印象中,黑洞是宇宙最可怕的东西,会吞噬一切,没有东西可以逃出黑洞。但是,天文学家现在知道了,还有比黑洞更可怕的东西,那就是磁星(Magnetar)。
磁星其实很小,只有一个小城镇的大小,直径大概20公里左右。但是,它具有宇宙已知最大的磁场,距离它1000公里以内的所有物质,都会立刻被分解,而且是立刻被分解成原子。

地球的磁场强度,在北极测量的话,大约为半高斯,最大不超过1高斯。即使这么一点强度,就已经是太阳系里面磁场最强的行星了,足以在全世界驱动指南针。
家里冰箱上的那种冰箱贴,磁场强度大约是地球磁场的100到200倍。太阳黑子的磁场强度约为4,000高斯,是太阳系中最强的。
如果你曾经做过核磁共振的检查,那么你就亲身经历了大约10,000高斯的磁场。人类能够制造的最强磁场是几万高斯,没法再高了,再高就会破坏制造它们的设备。
磁星的表面磁场强度,大约为10的14次方到15次方的高斯,内部的磁场强度还要再大10倍。这就是说,磁星的磁场比地球强100亿倍。
这么大的磁场,只要进入距离它1000公里的范围内,你就会立刻被分解成原子。因为磁力这时已经超过了将原子聚集在一起的分子力,强迫电子轨道跟磁场线一致。
典型的磁星直径只有20公里左右,但在这么小的体积内,它可以达到两倍于太阳的质量,使它们成为宇宙中已知密度最高的物体之一。一茶匙的磁星材料重约1亿吨,这么大的重量就会产生灾难性的引力坍缩,所以磁星的寿命都很短,只有10,000年左右。在整个生命周期内,它都会向外大量发射 X 射线。
天文学家现在只知道大约24颗磁星,几乎都在银河系。因为它们的寿命很短,所以能够观测到的很少,天文学家估计仅在银河系内就有大约3000万颗死去的磁星。
第 293 期:一周是一年的2%
1、乔布斯的遗照
苹果创始人乔布斯的遗照是如何拍摄的?

2011年10月5日,史蒂夫·乔布斯去世,苹果网站用苏格兰摄影师艾伯特·沃森 (Albert Watson) 在2006年拍摄的这张照片来纪念他。
许多人知道,乔布斯并不太喜欢被人拍摄,这对摄影师是一种挑战。
拍摄当日,摄影师被告知拍摄时间只有一小时,然而他却胸有成竹地说,只要三十分钟便能完成。
艾伯特·沃森建议史蒂夫·乔布斯稍微前倾,说道:“想象一下,桌子对面有四五个人不同意你的观点,但你知道自己是对的。”
Steve Jobs 凝视着镜头,眼神十分坚定,给人一种充满信念与智慧的感觉。这就是这幅肖像照的创作过程。
离开时,史蒂夫·乔布斯看了一眼照片,问他是否可以拥有它,并说这“也许是我拍过的最好的照片”。

五年后,艾伯特·沃森接到苹果公司的电话,问他是否仍保留那张乔布斯的照片。他当时感到十分惊讶,同时意识到事情的紧迫性,随即找到照片并发送给苹果公司。
当天晚上,苹果在官网宣布乔布斯去世的消息,并附上艾伯特·沃森拍摄他的肖像,这张照片在网站上刊登了一个月,之后也成为乔布斯传记的封面,成为21世纪最广为人知的人像照片之一。
第 292 期:所有代码都是技术债
大家都说 ChatGPT 像人,但是我觉得,还有另一方面,那就是有些人很像 ChatGPT,尤其是在学术界。

ChatGPT 不理解任何材料,但可以利用这些材料,快速找到问题的合理答案。它会综合和模仿,有时表现得非常令人信服,就像某个知识渊博的人在谈论某个主题。
学术界的很多人也是这样,他们很聪明,吸收了说话和构建理论的方法,并且善于听起来令人信服。
但是,如果你问一个探索性的问题,就会发现他们的理解很少,一切侃侃而谈都是表面的,没有深度。这都是模仿而不是真正的思想,他们只是故意让别人觉得似乎有道理。
许多领域的许多人,表现得就像 ChatGPT 的真人版,特别是在那些不做太多实证工作、不涉及对事实或假设进行检验的学科。他们制造的文本越多,就越危险。
这种人有很多明显迹象,比如使用非常笼统的术语,以及听起来巧妙的表述或行话,内容里面很少有事实,例子也很少或者很随意,没有真实的感受,而且通常也不会足够清楚地说出他不同意什么。
我现在意识到,我不理解某人在说什么,有时很可能是他们不知道自己在说什么,表现得像 ChatGPT。
我将其称为“吹泡泡”,即没有实质内容但能让他人信服的说话能力。这是很多大学领导的重要技能。
现在,ChatGPT 向我们展示了尽管不理解,但将大量材料合成为可信的文本流,是完全可以做到的。也许这是不可避免的,但真是一种非常不健康的恶习——人们应该走出去,观察事物,清晰说出自己的真实感受。
我明确意识到,自己更愿意被那些行为不像机器人的人包围,更愿意倾听那些有原创思想的人的声音。
第 291 期:AI 没有护城河
1、康威定律
几乎所有我喜欢的软件架构师,都认同康威定律(Conway Law),认为这个定律非常重要,足以影响到所有系统。而且,你没法与之抗争,想要抗拒康威定律注定要失败。

康威定律的最好表述是:“任何系统的构成,都反映了设计这个系统的组织结构。”

它的出处是 Melvin Conway 在1968年写的一篇文章。后来,弗雷德·布鲁克斯(Fred Brooks)在著名的《人月神话》(The Mythical Man-Month)引用了这条定律。
Melvin Conway 观察到,软件系统的架构看起来与构建它的开发团队的组织结构非常相似。
最初的描述是,如果一个团队编写一个编译器,那么它将是一个单通道编译器;但是,如果两个团队共同开发,那么它将是一个双通道编译器。这个描述后来被发现,广泛适用于大量系统。

正如我的同事 Chris Ford 对我说的:“软件耦合是由人类交流促成的。” 如果我可以轻松与代码作者交谈,那么我就更容易对代码有更深入的了解,因此我的代码更容易耦合到该代码。
应对康威定律的第一步是不要与之抗争。我仍然记得一位技术主管,他刚刚被任命为一个大型新项目的架构师,该项目由分布在世界各地不同城市的六个团队组成。“我做出了第一个架构决定”,他告诉我:“就是这个系统将有六个主要的子系统。我不知道它们会是什么子系统,但肯定会有六个。”
为了适应康威定律,现在有一种策略,就是一旦定下软件架构,就相应改变组织结构,让紧密耦合模块的开发者更容易沟通。
第 290 期:苹果头盔的最大问题
1、 B 道选手
几年前,我参加了一个游泳训练营。
所有人在一个泳池训练,按照水平分在四个泳道:A 道(游得最快的人)、B 道(次快)、C 道(次慢)和 D 道(最慢)。

我从 D 道开始,接受了大量的指导。周围的人都对我很好,我慢慢进步,终于进入了 C 道。那组的人也热情欢迎我。
但是,我注意到,旁边 B 道的人并不像 C 道那样友善。A 道选手都非常友善,慷慨给予鼓励、表扬和提示。
我怀疑这是普遍现象:A 道、C 道和 D 道的人都很友善,大家几乎都乐于助人;B 道的人则是对 A 道和其他 B 道选手友善,但对 C 道和 D 道则不然。
因为我后来发现,其他运动领域也是如此。那些仅次于顶级选手的运动员,往往对不如自己的选手很苛刻,害怕别人超过自己。
学术界也有这种现象。真正伟大的研究者慷慨而热于助人,许多普通水平的研究者也是这样。然而,那些有一定知名度、但又没有做出顶尖成果的研究者,对不如自己的人就不友善了。
当你是最好的 A 组时,很容易表现得宽宏大量,你确信自己会有成果,这让你安心无忧。
当你处于平均水平或低于平均水平(C 组或 D 组)时,表现得友善也很容易。远离顶尖水平,意味着竞争压力不大,所需要付出的努力可能也不大,你会有一种“放轻松”的心态(反正我到不了顶峰,就当作玩呗)。
那些仅次于优秀水平的人,感受到最大的竞争压力。你离顶峰如此之近,追赶却又艰难无比,放弃又不甘心。最令人沮丧的是,没有人记得第二名。同时,后面的人还可能超过你。所有这些因素,都可能导致一种不友善的态度。
第 289 期:宽容从何而来
1、金星有卫星吗?
我为两岁的儿子买了一张太阳系海报,贴在他卧室的墙上。

我无意中发现,海报有一个地方很奇怪。
它标示金星有一颗卫星,叫做 ZOOZVE。这个名字我从来没有听说过。

我查了维基百科和美国宇航局的网站,都明确写着“金星没有卫星”。
ZOOZVE 这个词,甚至在搜索引擎也搜不到,只有零星的捷克语结果。
我还问了一位天文学家朋友,她确定地告诉我:“金星肯定没有卫星”。
难道是出版社的错误?但是,出版社也没有理由,故意为金星添加一颗卫星啊。
我联系到了绘制这张海报的那位英国画家。他告诉我,这不是他编造的,而是来源于一份资料,但他现在找不到这份资料了。

我相信他没有撒谎,那么 ZOOZVE 到底从何而来呢?
这时,那位天文学家朋友又联系我了,说她搞清楚这是怎么回事了。
原来,那颗卫星的真正名字不是 ZOOZVE,而是2002VE,插画家可能不慎将名字看错了。它是金星附近的一颗小天体,在2002年被发现和编号。

新的问题来了,既然它在金星轨道上被发现,为什么不能算作金星的卫星呢?
我联系了它的发现者:亚利桑那州天文台的一位研究员。他发现过许许多多小行星,早就不记得20年前发现的这颗小行星了。

他告诉我,2002VE 其实围绕太阳运转,经过金星轨道时,受引力影响,也会围绕金星运转。但是,过了一段时间(也许几千年后)就会脱离金星,继续沿着自己的轨道运行。
下面就是这种受多个引力影响的小天体的复杂运行轨道。


我终于搞清楚一切了。我现在有一个大胆的计划,就是推动将 2002VE 正式更名为 ZOOZVE。
第 288 期:技术写作的首要诀窍
2010年的某一天,我接到一个电话。
客户想在内网部署几个服务(dhcp、内部 DNS、Apache + PHP 服务器、NFS 和 Samba 件服务器),需要架设一台服务器。
我建议客户购买企业级硬件,但是他们坚持使用已有的服务器,那是一台消费级电脑:没有双电源,没有远程管理功能,硬盘也是消费级的。
客户原计划安装 Windows 2008 Server,然后在上面部署这些服务。我考虑到只有两天时间,就建议改成安装 NetBSD 系统。客户同意了。

我安装完以后,就移交给了客户。后面的一个月,除了一些网络延迟问题,客户的反馈基本是正面的。
接下来的两三年里,我偶尔对这台服务器进行了一些调整,随后就与客户失去了联系。
2021年2月,我又接到了那个客户的电话,他们想要一个新的防火墙。这意味着那台 NetBSD 服务器还在运行!出于好奇,我接受了这个任务。
我惊讶地发现,这台服务器的工作完全正常。它不再对外网提供访问了,但在内网运行顺利。NFS SMB、DNS、SMTP 都是正常运行,它正在执行大约80%的原始任务。
最让我惊讶的是它的正常运行时间。上一次重启是在2012年,那时发生了一次小地震。客户有备用发电机,因此服务器始终拥有不间断电源。
谁能想到,这台机器当初只花了几个小时安装,而且全部都是消费级硬件,但是正常运行了九年没有重启,并且这些年基本上是无人管理的。
我现在明白了,为什么我没有——也永远不会——发财。我以前的老板抱怨,我偏爱为客户推荐稳定可靠的解决方案,这等于较少的长期利润。据他说,需要频繁维护的不可靠解决方案,才能带来最多的收入。但是我觉得,出色的工作应该是持续有效的,不需要不断的修复。
现在,我不确定这台服务器是否仍在运行,如果有机会我一定会检查一下。我很感激 NetBSD,它值得信赖,是一个轻量级、稳定、安全且高效的操作系统。在我看来,它至今仍然没有得到应有的赞誉和地位。
第 287 期:禄丰恐龙谷记行
我,30岁出头,已婚,没有孩子。
我每年都会从事 2-3 个大型业余项目,并沉迷于这些项目,不眠不休地工作。
但是,去年我对业余项目的兴趣急剧下降,因为 LLM(大规模语言模型)出现了,让我患上了“LLM 厌倦综合症”。

有了 LLM,我的业余项目还有什么意义呢?
我写出来的代码,会被 LLM 拿去训练,最终变成它的语料库的一部分。过了5年以后,我做出来的东西就会被它取代,因此消失。
即使这没有成为现实,LLM 还没有能力取代我,但是所有人的注意力都已经被它吸引了,再没有人真正关心传统的软件构建。
不管你想要解决什么问题,人们会说:“哦,你可以接入 ChatGPT 试试看。”
除非你正在研究 LLM,否则没有人真正关心你在软件领域做什么,你所做的看起来徒劳无功。
一想到我花费数百个小时,做出来的项目,最后可能货币价值为0。我就陷入了一种想要做某事,但又愤世嫉俗的状态,完全失去了写代码的动力。
第 286 期:蓝色指示灯的解决方案
今年6月,我和家人在海滩度假。
由于一个意外,我的膝盖受伤了。我立刻就知道大事不好。
我躺在沙滩上,无法站起来,任凭海浪拍打着我。喝了几口海水之后,我拖着身子从海浪里面,向着岸上爬行。
现在过了三个月,我走路还是一瘸一拐。我的身体正在好转,但康复速度很慢。医生告诉我,“可能还需要几个月。”

这些日子里,我发现自己比以往任何时候都更需要“无障碍”设施:楼梯栏杆、入口坡道、电梯等等。

这些东西我以前很少注意到,但是现在变得对我至关重要。
我脑海中不由浮现了以前听到的一句话:“我们都只是暂时的健全人。”
你知道吗?世界上现在有五分之一的人,患有某种形式的残疾。即使那些100%健全的人,在他的一生中,最终都会经历或大或小、暂时性或永久性的残疾。
我知道自己很幸运。我的膝盖每天都在康复,而且我是办公室工作,不需要走动。
我现在很感激,我所拥有的健全人的能力,感激我世界上那些让我可以正常生活的人们,我以前忽视了他。
我们需要帮助残疾人,努力建立一个对残障人士友好的生活环境,最终这就是在帮助我们自己。
第 285 期:为什么 PPT 不如备忘录
团队成员之间,经常会因为不同意见发生分歧。
有些分歧,最终会达成一致意见;另一些分歧,谁也无法说服谁,难以达成一致。
团队内部无法达成一致时,可能会出现四种决策方式。
方式一:我不同意,但一旦决策定了,我就会一起努力。
亚马逊创始人贝佐斯说:“当我跟一个主管反复讨论后,他不同意我的看法。虽然我不认为他正确,但我愿意陪他赌一把。我们认识几十年了,我觉得他可能比我更接近真相。其实我也不知道自己的决定是否正确,干脆照着下属的想法走。”
这样有几个好处:
- 至少产生了一个大家同意的决策。
- 事后不会互相埋怨。
- 有利于形成真正的团队精神。
方式二:双方各退一步,互相“妥协”(Compromise)。
这种做法是在双方立场之间,找一个中间点作为决策。这个房间我认为12尺高,你认为11尺高,最后大家同意把它的高度定为11.5尺。
这种决策方式很糟糕,因为11.5尺根本不是真相,只是因为找出真相需要耗费太多的能量,“妥协”让大家以一种节省能量的方式达成共识。
真正可取的做法是,凡是可以找到真相的事情,都不应该妥协。
方式三:比谁更固执。
争论的双方进行持久战,最先坚持不下去的人就会投降。
这种决策方式既没有得到真相,又大伤团队元气。所以,必须禁止这种方式,不允许用消耗对方的方式达成协议。
方式四:提供给上级,由上级决定。
这种方式可以外包决策过程,也不会伤害团队成员之间的感情。缺点是大家没有去尽力找寻真相,团队思想也没有真正达成统一。
总结:建议采用第一种决策方式“不同意、但尽力去做”。
这种方式不一定是正确决策,但是对于企业来说,有一个速度问题:决策速度必须要快,不能拖延,团队要始终保持高速度。第一种决策方式,至少可以保证决策会在短时间内产生,把事情向前推进。