很偶然的,逛了一会关于 Unix 设计哲学的文章,看到一个很有趣的东西。
我们都知道接口简单很重要。
但事实上 Unix 的设计哲学中,实现的简单和接口的简单同样重要,而且这种简单性比系统的任何其他属性(正确性、一致性和完整性)都要重要。1 2
这很奇怪。
我不知道为什么这种简单性那么重要,它们是如何起作用的。
直到我读到下面这段话:
尽管 UNIX 系统引入了许多创新的程序和技术,但没有任何单一的程序或想法可以使其运行良好。相反,使其有效的是编程方法,一种使用计算机的哲学。尽管这种哲学不能用一句话来写下来,但其核心思想是,系统的力量更多地来自于程序之间的关系,而不是程序本身。许多 UNIX 程序单独做一些非常微不足道的事情,但是,与其他程序结合起来,就成为通用且有用的工具。
Even though the UNIX system introduces a number of innovative programs and techniques, no single program or idea makes it work well. Instead, what makes it effective is the approach to programming, a philosophy of using the computer. Although that philosophy can’t be written down in a single sentence, at its heart is the idea that the power of a system comes more from the relationships among programs than from the programs themselves. Many UNIX programs do quite trivial things in isolation, but, combined with other programs, become general and useful tools.
– The Unix Programming Environment, Brian Kernighan and Rob Pike
也就是说,系统的力量更多来自于程序间的关系,而不是程序本身。
也就是说,联系是更重要的。
这就解释了,为什么实现和接口都很简单,是一个非常重要的原则,因为那会使程序间的相互关系变得简单。
接口的简单,使得程序易于被调用;而实现的简单,不仅使它更可靠,也使程序本身易于被其他人理解,只有理解了,才会与其他程序结合。
来自 2023/12/5 的补充: 朋友向我推荐了《能量,性,自杀》中的 “细菌为何如此简单” 章节,我大受震撼,和本文讲的事情很像。我应该另写一篇记录下来,但是最近太忙,没有时间了。
做了个奇妙的梦。
其中有一段是这样的,一个有点像冯小刚的人,闯进一个人家。那人家经常做一些法事,用一个铁浴盆似的容器,献祭一些肉之类的东西。
冯小刚来,说你这不行,要健康一点,然后给他全换换成了蔬菜水果。那人看到都傻眼了。
画面切换到几千年前。好像是印第安原始部落,也是一个好像冯小刚的人,他们在做某种祈神的仪式。
之前都能求到肉,这次求来一堆蔬菜水果。
把他们气坏了。
看完波斯王子的 访谈 后,我又看了 Diablo 之父、北方暴雪的创始人 David Brevik 的 访谈,也很有趣。
也有两件事让我印象深刻。
一个是他一直想做 Diablo,跟很多投资人和公司 pitch 过 Diablo 的想法,大家一听是个 RPG 游戏,都马上没兴趣了,因为当时所有人都认为,RPG 游戏已经衰落,以后人们不会玩 RPG 游戏了(1994 年)。
这个事情让我很震撼,因为我们知道的几乎所有经典 RPG 游戏都是在那以后诞生的,而那会的人却认为 RPG 游戏已经到头了。如果他们可笑的话,那今天觉得某个游戏类型到头了的人们,也是同样可笑的(比如很多人都觉得 MMORPG 到头了)。
另一个是从回合制到即时战斗的转变。
当时北方暴雪在做 Diablo,南方暴雪在做魔兽争霸。南方因为一直做即时战略游戏,他们给北方暴雪的建议是把 Diablo 从回合制改成即时战斗,那样可能会更好玩。
创造 Diablo 的这哥们就觉得很被冒犯,对他来说,回合制的紧张感是他做这个游戏的初心,这怎么能丢呢,搞成即时制后,乐趣不都没了吗。
然而,他们团队内部搞了个投票,结果大部分人都支持改成即时制。他很无语,决定自己改个即时战斗版本出来,告诉大家这真的不好玩。
于是他周五一个人留在办公室里加班改代码,很快就整了个 demo 出来,结果自己把自己震撼到了,点怪、砍怪、掉宝物,就这么简单的过程,他连续玩了一个小时,因为实在是太好玩了。
等到大家周一上班的时候,他已经把整个游戏都改成即时战斗的了。
这个事情有意思的地方在于,做出来体验它,要比想象中的感受更真实。即使你 100% 确定一个东西要这样,不要那样,那也不一定是你真实的感受。做出来,体验到,才是真实的。
看了一个波斯王子的开发历程的 访谈,很有趣。
有几个事情让我印象深刻,
一个是,他在开发过程中的情绪感受,我太有体会了,一会感觉这是杰作,一会又感觉这会是一坨屎,来回横跳;时不时遇到难题,觉得要过不去了…… 就是这种感觉。后来人们看到的波斯王子,那么丝滑和有趣,实际上克服了重重困难的做出来的。
另一个是,波斯王子第一版是为 Apple II 开发的,他做了两年时间,还没发布,自己已经急得不行了;但与此同时,Apple II 这个机器正在衰落,有各种新的、其他品牌的、性能更好的机器出现,他就有点痛苦,因为如果切换过去的话,会消耗更多时间,但继续在 Apple II 上做,可能到时候就没人玩了。
最后他决定回归初心,他选择继续在 Apple II 上专心把最初想做的东西都做出来。
后来发布后,确实因为平台过时,而销量一般,但因为游戏本身很精彩,它随后被移植到了各种平台上,包括各种游戏机和 PC 机,成为了经典 IP。
还有一个是 Shadow Man 的设计,堪称经典。
由于 Apple II 的内存只有 48KB,所有的动画、音效、游戏全部都要放进这一点点空间里,根本没有多余的地方来放敌人和战斗。
最后他用了一个很巧妙的方法,创造了一个和主人公长得一样(这样比较省内存)、但是是黑色的人,叫 Shadow Man。
它是主人公照镜子时,从镜子里出来的。
当你和他战斗时,每次攻击他,你自己都会掉血;
而当你把剑收起来时,他也会把剑收起来;
你走向他,他也会走你,你们合二为一,变成一个人,所有 Shadow Man 曾经从你这边偷走的生命值,都会在那一刻回来。
几周前给 Mac 版微信提了个建议,没想到今天更新后,那个功能就出现了,让我大为震撼。
这让我想起许多年前用多看阅读时的情形。我很多次反馈希望他们增加朗读速度,但几年里从未得到回应。后来我被迫使用微信读书,提出了同样的反馈,短短几天后,新版本上就出现了更快的朗读速度选项。
你问多看是如何衰落的,他们内部大概会说对手更有资源。但对我来说,仅仅是微信读书更在意他们的产品和用户而已。
有那么一瞬间,我忽然领悟到,或许没有时间概念才是对时间正确的用法。
你穿了一双新鞋,去和朋友玩,结果你整个一天,注意力都在这双鞋子上。你担心它有没有弄脏,有没有被人看到,却忘了你们今天玩了啥。
时间就像这个鞋子,如果你一直在注意它,担心它不够用,不停做着计划,想着过去,想着未来,那你就注意不到真正的内容物了。
“时间是稀缺的” 这种观点,或许恰恰导致了对时间真正的浪费。
Hayden 写了篇谈无偿损失的帖子,很有意思。
我自己从中get到的一点(未必是作者的原意)是,当你做了个很新很新的东西,想要介绍给大众时,保持它的简单很重要。
如果你想做一些体验上的改进,但代价是增加其复杂性,那至少在这个阶段,这个改动可能是不必要的。
昨天晚上和女友在楼下吃烤串。
喝了点啤酒,不知道为什么,我沉默了一会,问她,你外婆是个怎样的人。
在那之前,我们很少聊到她外婆。
她就和我讲了一些外婆的故事,很有趣。
结果刚吃完饭没多久,她妈妈发来消息,说外婆晚上过世了。
很久以前我把博客迁移到这,一个原因是之前那个太卡了,另一个原因是我不想写标题。
标题是一种总结,它迫使你去理性思考,但这会打断你的感受。而且,有时我只想写一两句话(因为这就是想法的全部),这个时候再给它一个类似长度的标题,看起来会非常奇怪。
Email 的标题也常让我觉得奇怪。古人写信是没有标题的,发明 Email 协议的那个人,somehow 觉得信件应该有个标题,于是 80 亿人每次写信时都要绞尽脑汁写一个标题。我觉得发明协议的那个人是有责任的。
我甚至觉得,今天即时通讯的量远大于 Email,有一部分(可能是大部分)原因是 Email 要写那个操蛋的标题。
2023-09-23 中文 | English
By chance, I came across an article from ‘07, discussing why iPhone would fail. There’s a section goes like this:
…the iPhone is going to fail because its design is fundamentally flawed. The designers and technophiles who encouraged development of the iPhone have fallen into the trap of all overreaching hardware and software designers; thinking that their users are like themselves. As I expound in great detail in my book Why Software Sucks (Addison-Wesley, 2006) your user is not you. The iPhone’s designers have forgotten this fundamental law of the universe. The market will severely punish them for doing so.
This serves as a hilariously counterexample to my feelings from a couple of days ago (only make what you want).
Besides the article being amusing, the comments below are very interesting. You can see how fiercely the users are rebutting him, calling him stupid. The users see far more clearly than him because users are the ones who are using and feeling, not analyzing with their brains like the author.
One guy mentioned that he had used all Nokia and BlackBerry devices, and their browsers were almost unusable, Apple was the first one to make it usable:
This is where Apple is fundamentally different. It’s not about features; it’s about simplicity and focusing on the things that you want to make work.
There is a reason why the iPhone has a camera but won’t let you take video (I don’t know what it is – but they decided to skip on that). Most Nokia’s with camera’s can take movie clips now. …
iPhone skimped on a lot of features when compared to equally priced Nokia’s and Sony Ericsson’s – but ultimately it’s the whole package that counts - Steve Jobs will never let a product out of the door that has a browser that works mediocre at best regardless how good the hardware is. That is the price that you pay when you buy Apple.
There was also another user comment that somewhat moved me (not sure why):
I work in IT. I had my first iPhone support call yesterday. I asked the user what they thought of it as I looked up how to set an SMTP port–add a colon after the server name–and got this response:
“This is probably the coolest thing I have ever owned.”
2023-09-21 中文 | English
It's okay to Make Something Nobody Wants
Products seem to be made for users, but I think this might be an illusion; they are more like a medium for self-expression.
Different expressions, conceived by various minds, undergo a form of natural selection, with the surviving expression being the one that resonates most with users.
I mean, the process unfolds like this: you create something not because “I think they might need this,” but because “I find this so fucking interesting.” Then, when others use your product, they feel the same emotions you did, and they say, “I find this so fucking interesting.”
From this perspective, a product is like a container for emotions; the creator puts them in, duplicates it a thousand times, and users extract them from the product.
You can’t be devoid of emotion and expect users to experience emotion after using it.
I think it’s okay to make something that nobody wants. All you need to do is to make sure you’ve fully expressed your emotions in this product.
But in most cases, people care too much or think too much, and end up making something even they themselves don’t like it.
If everyone made things they really liked, we’d have a lot more cool stuff.
This is tougher than it seems. Because if you have expectations, you get worried, stressed, and lose your feelings right away.
In simpler terms, people can’t make something they don’t like and hope others will like it.
Maybe that’s why a lot of cool stuff started as side projects. People don’t expect much from side projects; they do it more for fun or for themselves.
We humans are machines that only understand ourselves. The only way we could understand someone else is through ourselves. We really don’t get how a flower feels because it doesn’t have a brain or eyes, and we don’t have leaves.
Given this, I don’t think any “I don’t get it, but I know you need it, so I made it for you” would actually work.
Later, when talking with my girlfriend about this, I suddenly understood Steve Jobs, and others like him, much more deeply.
People often complained about Jobs: when his team showed him their work, he would say “It doesn’t feel right,” and when they asked how to fix it, he said “I don’t know, make it better and show me again, and then I’ll know.”
This confused a lot of people. He found problems but didn’t know how to fix them or why they were problems.
Now, I totally get where Jobs was coming from.
When we make something and want users to feel what we feel, we first have to feel it a lot ourselves. Jobs was this kind of “feeling detector,” and this is the real deal.
I believe the real skill in making products isn’t some “making products” skill, but rather a skill in feeling your own subtle emotions.
Can others feel what Jobs felt? I think so. After the iPhone came out, everyone loved it, showing that they felt it.
The only difference is that during the making of this emotional medium, Jobs could perceptively sense those subtle emotions, while most participants might not perceive their own emotions due to various reasons.
This also explains why reducing expectations and bringing attention back to the present is crucial for making product. Because this helps you perceive those subtle emotions. If your mind is filled with external chaos, it would be harder to notice those emotions.
昨天在路上,女友说,她很喜欢大自然的一点是,它们不是为人类而长的,人在里面可能舒服也可能不舒服,但它们是活的,丰富的。泳池是造给人的,它的各项指标都控制好,让人觉得舒服,但它是死的。
我忽然意识到,可能 crypto 也是如此。今天每个项目都在迎合更多用户,那可能只会让整个生态越来越死。
遛狗时,我忽然意识到,世界和我是对称的 —— 我就是世界的 “世界”。
我就像是一台机器,世界就像是机器前面的操作员。
他输入给我一些东西,然后我肚子里咕嘟咕嘟,吐回给她一些东西。
他接收到这些东西后也进行了一番咕嘟咕嘟的思考,最后又变成我的输入…
随后意识到,从拓扑上讲,如果反过来,世界也可以看作是包在我里面的。
所以理论上讲,世界和我肚子里的一个细菌,可能没有差别。
因为如果你足够仔细地看那个细菌,它也可以像世界那么大那么复杂。
如果粗略地看世界,它也可以像细菌那么小。
Holy fuck!
从这个角度来说,世界上所有东西都算是对称的。
也就是说,
你沿着一条路往前走,走过各个景点,实际上就是成为一切
Oh my god…
在看 Render 的文档时,看到它推荐用一个叫做 Magic Wormhole 的工具在服务器间传输文件。
我心想这是啥玩意儿,没听过。
结果试了一下,实在是太好用了。有点像一个不限距离、不限设备的 Airdrop。只需要对方机器输入两个单词即可,比如 7-crossover-clockwork
,传输完成后通道就会关掉。很丝滑,零配置。
同时它的安全程度很高,你甚至能用它来传密码。这里有作者 2016 年在 PyCon 上的分享。
每当我看到一个好用的命令行工具,我都会眼前一亮,因为这说明即使是开发者用的东西,也可以被设计得好用。大部分的命令行工具,要么需要大量配置才能使用,要么有无穷多种命令,要么就是文档冗长却没有示例,很可怕。