编程和绘画一样,是一种艺术创作,而黑客(hacker)就是艺术家。如果想成为一个hacker,就必然包含着高度的革新、独树一帜的风格、精湛的技艺。也就是最能干的人,有精神追求的人,不仅仅是第一流能力的象征,还包含着求解问题过程中产生的精神愉悦或享受。

虽然大多数黑客看上去呆呆的,但是他们的大脑内部有趣的让人吃惊

为什么书呆子不受欢迎

书呆子一般来说与高智商有着强烈的正相关关系。但聪明并不是解释书呆子不受欢迎的原因,更好的解释或许是,书呆子其实是在想让自己变聪明和想让自己更受欢迎之间选择了前者,他们想要做伟大的事儿,并且所有心思都花在了上面。只有很少的学生能够达成共赢。

但是,书呆子不受欢迎的现象其实只存在于校园这个特殊的环境中,在大多数学生心智还没有完全成熟之前,他们都会通过欺负别人、创造等级来获得娱乐以及获得一个共同的目标,以便与其他受欢迎的学生关系更密切。而且老师们也并不知道孩子内部发生的事儿,很少有老师去探寻,他们只是想让学生呆在自己应该待的位置,然后让学生有东西吃,避免公开的暴力行为,然后才是教授给学生一些东西。

当进入到真实社会中后,每件事都能产生真正意义的效果,这才是书呆子发挥优势的地方,所以当书呆子觉得不适应周围环境的时候,他们其实是领先了一步,进入到了真实世界中。

黑客与画家

黑客与画家最像,黑客其实很难从事于研究型的工作,他们的目的是创作出优秀的作品,并且在过程中发现一些新的技术,计算机只是他们进行表达的媒介。科学家关注的是原创,工程师关注实现,而黑客关注的是主观上的优美。对于黑客的考核非常难,也需要考核者本人有良好的设计感,所以就像很多画家的画作在数十年后才得到人们认可。

大学和实验室强迫黑客成为科学家,而企业强迫他们成为工程师。黑客如果想要做自己喜欢的事情,就只能白天赚钱养家糊口,晚上为了一份爱好发电,也就是开源软件一开始的工作模式。

和绘画一样,如果黑客想要提升自己:

  1. 从头开始,而不是在一个项目上不断工作(可见与科学家的差别)
  2. 临摹他人的代码,从而学会编程
  3. 不断修改,从整体到局部,一开始不用太过于完美。但是大公司并不会提供这样的条件。

另外,优秀的黑客也需要有着对美的狂热需求,在任何一个无人知晓的细节都要做到极致,并且还要学会换位思考,这样才能与人打交道,了解人们的真实需要。

不能说的话

黑客需要永远保持质疑,绝不听信大流,因为每个时代的人们都会对一些荒谬的东西深信不疑,而自由独立思考对黑客至关重要。如何找出不能说的真话:

  1. 判断言论的真伪,特别是一些大逆不道的言论。
  2. 关注异端邪说,异端邪说的诞生只是因为时代贴上了标签而让他们是错的。
  3. 将当代观念与不同时期的观念进行对比,如果某个观点在大部分时空都不是禁止的,只有当下才把它当作禁忌,那可能就是我们做错了。
  4. 寻找那些一本正经的卫道者,看看他们到底在捍卫什么,他们想要什么和想要阻止什么进入大众的头脑中。
  5. 观察禁忌到底是如何产生的,一些观点不能说出口,或许只是一些没有绝对的自信的团体不允许我们说,他们的神经越紧张,所产生的禁止力量就越强大。

保持质疑能够训练大脑,保持好奇心,并且能够帮助诞生新的理论和产生优秀作品。但是对于不能说的真话需要做到守口如瓶,因为祸从口出,自由思考远比畅所欲言更加重要。如果想要说,找信得过的朋友说。对于他人的询问,聪明的回答方式(【隐喻】和【我还没想好】)能避免很多麻烦。

良好的坏习惯

浪漫主义至上的黑客是不服从管教的、不符合常规的,这会激怒很多人,但这也是黑客能成为黑客的原因,这样的性格无论如何依然是利大于弊。美国人的本性就是不服从管教,这也造就了美国当今的国家优势。

公民自由是国家富强的原因,而不是结果,因为言论自由和行动自由的社会往往最有可能采纳最佳方法。

另一条路

相比于开发桌面软件,服务端软件在未来更有希望引领潮流。服务端软件也就是互联网软件,运行在服务器上,用户通过浏览器上的网页与之交互,对于普通用户来说,这种新型软件将更容易、更便宜、更机动、更可靠,通常还会更加强大。

  • 服务端软件并不需要终端设备存储数据,终端设备也不一定是电脑,用户不需要担心版本升级、数据丢失、安装失败等一系列问题。
  • 开发者也并不需要考虑用户的终端设备配置,可以使用任何语言构建软件,在软件升级时用户是完全无感知的,用户总是使用的最新版本。
  • Bug管理和修复更加方便,大部分的Bug都能够被迅速发现并且重现,这样就能给客户提供迅速并且有效的客户服务。
  • 由于版本发布没有任何门槛,开发者能够立刻实现好的构思并且快速发布,一个构思还能够带来更多的构思。用户的。
  • 用户的行为都能够被记录下来,开发者能够前所未有的了解用户,而根据用户的行为来改进软件以及决定软件开发的方向。
  • 互联网软件运营商为了保证生存下去,也会竭尽所能的提供最好的服务。

互联网软件的开发非常辛苦并且压力很大,但是这也会带来更多的成功机会。

如何创造财富

自己创业或者加入初创公司是致富的可靠途径,创业就是一个压缩过程,将所有的工作年份压缩成了短短几年,在短短几年中高压力高强度的获得回报,回报还会随工作效率的提升进一步翻倍。但是,如果你想赚100万美元,就不得不忍受相当于100万美元的痛苦,创业并不轻松,巨大的获利可能也就存在着巨大的失败可能。

创造有价值的东西就是创造财富,也就是劳动变现,金钱只是财富流动的中介。按理说劳动的贡献越多,获得的金钱收益就越大,但是问题在于大公司无法测量每个人的共享,只能够让员工的贡献平均化。创业公司的意义就在于聚集了愿意努力的一群人,快速行动,解决用户关心的问题,选择别人难以解决的难题,寻求可测量性和可放大性,共同谋求更高的回报。

关注贫富分化

每个人的技能不同,导致了劳动和财富的转化率不一样(三个臭皮匠顶个诸葛亮并不现实),从而导致了收入不同,这就是贫富分化的主要原因。价格由买家的需求决定,薪酬差距本身就不能用公平来形容,因为这不是用成本衡量的,而使用成果衡量的。

技术作为杠杆加剧了生产效率差距,引起收入差距的扩大,但是其他差距在减小,因为人们的生活变得更好了,也就是说,人们整体富裕了,这是一种健康的信号,能够让社会保持繁荣。我们需要做的只是避免绝对贫穷而不是相对贫穷。鼓励有能力的人让社会变得更好。

防止垃圾邮件的一种方法

基于贝叶斯方法的过滤器以及白名单

设计者的品味

能力是一方面,我们也需要关心如何做出优美的产品。

  • 好设计是简单的设计
  • 好设计永不过时
  • 好设计解决了主要问题
  • 好设计能带来启发
  • 好设计有趣味
  • 好设计是艰苦工作的结果,但是需要是有用的痛苦
  • 好设计看似容易
  • 好设计与自然挂钩
  • 好设计是一种再设计
  • 好设计是能够复制的
  • 好设计是奇特的设计,但不要故意追求奇特,是自然而然诞生的
  • 好设计成批出现,时代赋予了机遇

编程语言解析

语言之间有差距,但是很难确定哪一种语言是最好的。语言百花齐放是一件好事

一百年后的编程语言

编程语言的进化速度更像数学符号的进化速度,而最终只有最小、最干净的语言才会存在于进化的主干上。一百年后的编程语言理论上在今天就能设计出来,设计出来后,很可能现在就适合编程(对于一些牛人来说

拒绝平庸

创业公司跟风,做平均水准,得到平均结果,就会倒闭,需要做一些独特的事情来保持竞争性,当对手无法理解技术优势的时候,胜算就会增加。如果有好几种方案可以选择,选择最强大的那一个,给竞争对手布下重重障碍,不让他们赶上来。

书呆子的复仇

一些经理常常对技术一无所知的同时又对技术有着强烈的个人观点。选择语言时并不要跟风选择大家认可的,《xxx最佳实践》将会导致失败,等待竞争对手做出自甘平庸的选择,选择一个最先进的打败对手。

梦寐以求的编程语言

被黑客喜欢的语言才是合格的编程语言。一个语言首先需要有用武之地,用来吸引人;其次需要有文档;然后有依附的系统,帮助它流行。

设计与研究

设计在于好,研究在于新。我们需要围绕用户设计,而不是迎合用户设计。设计时通过一个轮廓,在上面逐步加工,间接得到满足,才是最好的做法。