利用零散时间读完了《黑客与画家:硅谷创业之父 Paul Graham 文集》这本书,收获颇多。不过说是读书笔记,其实只是把一些觉得好的段落记录一下而已。这里不得不吐槽一下 Kindle 自带的标注功能:

  • 所有标注内容都以纯文本形式存储在一个 My Clippings.txt 文件里;
  • 记录格式很神秘,得用特殊工具处理(Clippings),比较蛋痛;
  • 只是个本地功能,不会自动同步到云端;
  • 无法在 Kindle 上舒爽地查看所有剪贴内容;
  • 就算你在书中把原标注删除了也还会留一份在 My Clippings.txt 文件里;
  • 最近 Kindle 固件升级,段落标注体验更屎了……

不过阅读体验还是很不错的,所以原谅你。

Amazon

▲中亚上 Kindle 书籍大多数都很便宜


在一个人产生良知之前,折磨就是一种娱乐。

在任何社会等级制度中,那些对自己没自信的人就会通过虐待他们眼中的下等人来突显自己的身份。我已经意识到,正是因为这个原因,在美国社会中底层白人是对待黑人最残酷的群体。

没有什么比一个共同的敌人更能使得人们团结起来了。

你把整个程序想清楚的时间点,应该是在编写代码的同时,而不是在编写代码之前,这与作家、画家和建筑师的做法完全一样。

看到代码前面的缩进乱七八糟,或者看到丑陋的变量名,都会把我逼疯的。

黑客就像画家,工作起来是有心理周期的。有时候,你有了一个令人兴奋的新项目,你会愿意为它一天工作16个小时。等过了这一阵,你又会觉得百无聊赖,对所有事情都提不起兴趣。

普通黑客与优秀黑客的所有区别之中,会不会「换位思考」可能是最重要的单个因素。有些黑客很聪明,但是完全以自我为中心,根本不会设身处地为用户考虑。这样的人很难设计出优秀软件,因为他们不从用户的角度看待问题。

判断一个人是否具备「换位思考」的能力有一个好方法,那就是看他怎样向没有技术背景的人解释技术问题。

为了写出优秀软件,你必须假定用户对你的软件基本上一无所知。

软件的使用方式最好能符合用户的直觉,别指望用户去读使用手册。

程序写出来是给人看的,附带能在机器上运行。

类似的思维机制存在于每个人的头脑中,很多看似叛逆的「异端邪说」,早就「潜伏」在我们的思维深处。如果我们暂时关闭自我审查意识,它们就会第一个浮现出来。

人们喜欢讨论的许多问题实际上都是很复杂的,马上说出你的想法对你并没有什么好处。

举例来说,「政治正确」(political correctness)就是一个「元标签」,是许多特定现象的总称。这个词现在被广泛使用,其实这恰恰意味着「政治正确」的时代正在开始消亡,因为它使得你可以从总体上攻击这个现象,而不会受到指控,不会被说成支持某一种特定的“政治不正确”现象。

不过,想要摆脱你自己的时代的流行,需要一点自觉。没有了时间所产生的距离,你不得不自己创造距离。你不要让自己成为人群的一分子,而要尽可能地远离人群,观察正在发生的事情,特别注意那些被压制的思想观点。

一个人们拥有言论自由和行动自由的社会,往往最有可能采纳最优方案,而不是采纳最有权势的人提出的方案。专制国家会变成腐败国家,腐败国家会变成贫穷国家,贫穷国家会变成弱小国家。

极权主义制度只要形成了,就很难废除。

黑客对于公民自由是非常敏感的,因为这对他们至关重要。他们远远地就能感到极权主义的威胁,好比动物能够感知即将来临的暴风雨。

高级使用者对 bug 的容忍度比较高,尤其如果这些 bug 是在开发新功能的过程中引入的,而这些新功能又正是他们所需要的,他们就更能理解了。

不管你的软件定价多少,有些用户永远都不会购买。如果这样的用户使用盗版,你并没有任何损失。事实上,你反而赚到了,因为你的软件现在多了一个用户,市场影响力就更大了一些,而这个用户可能毕业以后就会出钱购买你的软件。

但是在现实中,财富是用工作成果衡量的,而不是用它花费的成本衡量的。如果我用牙刷油漆房屋,屋主也不会付给我额外工资的。

好设计是看似容易的设计。优秀运动员比赛时,让人觉得他轻轻松松就获胜了,优秀设计师也是如此,他们的工作看上去很容易。大多数时候,这是一种错觉。作家的文章读起来流畅自如,但是背后其实经过了反复修改。

有意思的是,劫持飞机与「缓冲区溢出攻击」有类似之处。在一般飞机上,乘客区与驾驶舱是相通的,就好像C语言中数据区与代码区是相邻的一样。劫机者一旦进入驾驶舱,实际上就相当于把自己从数据提升为代码。

黑客欣赏的一个特点就是简洁。黑客都是懒人,他们同数学家和现代主义建筑师一样,痛恨任何冗余的东西或事情。

我认为,语言设计者应该假定他们的目标用户是一个天才,会做出各种他们无法预知的举动,而不是假定目标用户是一个笨手笨脚的傻瓜,需要别人的保护才不会伤到自己。如果用户真的是傻瓜,不管你怎么保护他,他还是会搬起石头砸自己的脚。

如果目标用户群体涵盖了设计师本人,那么最有可能诞生优秀设计。如果目标用户与你本人差别很大,你往往会假定目标用户的需求比你本人的需求更简单,而不是更复杂。低估用户(即使出于善意)一般来说总是会让设计师出错。如果你觉得自己在为傻瓜设计产品,那么很可能不仅无法设计出优秀产品,而且就连傻瓜也不喜欢你的设计。

(完)