《黑客与画家:硅谷创业之父paul graham文集》主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代、迫使读者独立思考。
计算机程序只是文本而已,你选择什么语言,决定了你能说什么话,编程语言就是程序员的思维方式。如果你仅仅是要养家糊口,那么劝你最好选择市场流行的以及未来一段时间内仍然会流行的语言,这样你才不会被市场抛弃,而且可以更容易的找到工作。但是如果你要做的是黑客级别的技术高手,那么一个锋利的工具对你会更有帮助。
最优秀的苹果机为什么在市场上表现不佳?还是那个老生常谈的问题:成本太高。微软公司把所有精力都集中在软件上面,微软到现在依然是靠它三个最赚钱的部门即Windows、Office和服务器三大部门来支撑它的整个商业帝国,这些都是微软之根本所在,如果你想要打败微软,那么首先想想这三个里面你能消灭掉哪个,如果你最多消灭两个,那么劝你早日投降,因为结局已定。所以我不反对企业做大做强,但是正如李嘉诚所说的,你一定要有一个支柱性产业,当你的其他方向的发展还没有实现盈利的时候,你的支柱性产业的利润就可以用来培育那些将来可能盈利的方向。同时一旦出现大的金融动荡,你依然能够保证进退自如,因为你始终有一个可以为公司带来利润的产业。所以很多厂商只要专攻硬件就可以了,把硬件成本降了下来。单单是微软的软件或者第三方厂商的硬件都不足以赢得市场优势,但是它们结合起来,就在个人电脑出现后一段关键时期中主导了市场。苹果公司同时做软件和硬件,所以成本上没有优势。IBM的PC机也面临类似的问题,它的PC机卖的相当的贵,质量也很好,但是却没能统治市场,为什么?因为IBM的机器设计的所使用的都是可以用十年甚至更久都不会出现问题的部件与材料,但是现在的电子消费品更新的如此之快,用户干嘛要花那么多钱去买一个他只准备用两年或三年的产品,但是这个产品却可以用十年都没有质量问题,所以说成本是产品占领市场不得不考虑的一个问题。
1998年,当时的搜索市场由雅虎统治,许多人认为再推出一个新的搜索引擎已经太晚了,互联网世界已经定型了。谷歌证明了这种看法是错误的。如果新事物真的有重大改进,那么它总是可以找到生存空间的。就像中国的人人网,模仿的是facebook,但是在人人之后,不是依然有程炳皓做出来的开心网吗,当初为什么开心败在了人人的手下,最根本的问题就是程炳皓根本不是陈一舟的对手,陈一舟是一个在商场里浸淫n年之久的老江湖,而程炳皓呢,仅仅是一个技术了得的技术员而已,所以开心的域名是kaixin001,当年有人劝程把kaixin这个域名买过来(因为创办开心网的时候,这个域名被老外注册过了),但是程根本不把此事放在心上,所以当人人对开心发起攻击的时候,陈一舟做的第一件事就是把kaixin这个域名买到手,然后利用许多用户的无知,把大量的用户引入到了这个假的开心网之上,即便后来陈一舟输了官司,关闭了kaixin,但是依然有大量的用户访问这个域名,而结果就是访问之后页面自动跳转到renren上了。所以对于开心输给人人之事,我不想多说,根本原因就是你不是人家的对手,所以输给别人也是再正常不过的了(说真的我很欣赏程炳皓这个人,一个许多人都应该学习的典范,一个中专学历的人,凭着自己对技术的钻研,到创办开心网,差点功成名就,只不过是由于不太懂得商场的残酷,而最终失败)。
别老是想着去赚世界上的钱,而是应该想着为世界创造财富,当你真的能为世界创造财富的时候,金钱也就会找上你了。假设你拥有一辆老爷车,你可以不去管它,在家中悠闲度日,也可以自己动手把它修葺一新。这样做的话,你就创造了财富。世界上因为多了一辆修葺一新的车,财富就变的更多了一点,对你尤其是如此。财富和金钱完全是两码事,请大家不要混淆一谈,你拥有财富,比如技术、人脉、后台等等,这些都是可以帮你赢得金钱的,但是你拥有金钱不一定比财富来的稳固,如果被政府没收的话,你还能不能赚到这么多的金钱,但是拥有财富的人是不一样的,财富是别人无法夺走的,哪怕你现在是个穷光蛋,你都有可能随时变成百万富翁。
程序员创造财富的速率存在巨大的差异,一个优秀的程序员连续工作几个星期就可以创造价值100万美元的财富。同样的时间内,一个平庸的程序员不仅无法创造财富,甚至还可能减少财富(比如引入了bug)。这就是为什么如此之多的最优秀程序员都是自由主义者的原因。我们这个世界,你向下沉沦或者向上奋进都取决于你自己,因为最顶尖的5%的程序员写出了全世界99%的优秀软件。
如果创业就是比别人工作的更勤奋、赚到更多的钱,那么很显然人人都想去创业。而且一定程度上,创业也比较有趣。但创业是有一些潜规则的,其中一条就是很多事情由不得你。比如,你无法决定到底付出多少。你只想更勤奋工作2到3倍,从而得到相应的回报。但是,真正创业以后,你的竞争对手决定了你到底要有多辛苦,而他们做出的决定都是一样的:你能吃多少苦,我们就能吃多少苦。另一条潜规则就是,创业的付出与回报虽然总体上是成比例的,但是个体上是不成比例的。对于个人来说,付出与回报之间存在一个很随机的放大因子。你努力了30倍,最后得到的回报在现实中并不是30倍,而是0到1000倍之间的一个随机数。假定所有创业者都是努力30倍,最后他们得到的总体平均回报是30倍,但中位数却是0。大多数创业公司都以失败告终,其中并不都是很烂的项目,一种很普遍的情况是,某个创业公司确实在开发一个很好的产品,但是开发时间长了一点,结果就是资金用完,关门散伙。创业公司如同蚊子,往往只有两种结局,要么赢得一切,要么彻底消失。
创造财富不是致富的唯一方法,在人类的历史长河中,它甚至不是最常见的方法。就在几个世纪前,财富的主要来源还是矿石、奴隶、农奴、土地、牲畜,而快速获得财富的方法只有继承、婚姻、征服、没收。
我要纠正一个常识性的错误,几乎我碰到的所有的人都说虽然编程语言不同,但是你会了某种语言,其他的也就会了。我从来就没有这么认为过,首先不说他们的语法特点设计不同,就是语言的设计思想也没有一样的,另外每个语言都有每个语言所擅长的方向,经常看到有人拿Java和C++比速度,我觉得这种人就是无知,就像你拿男人和女人比谁的胸大是一回事,对于那些攻击java速度的人,你怎么不比较Java和C++的跨平台能力呢?让我们复习一下Java的口号--“Write once, run ererywhere (WORA)”。请你们多多读书,提高修养。另外一点就是人们经常拿链表和数组比添加删除元素时候的速度,但是你有没有想过,你要添加删除某个元素是需要先找到它的,而数组的查找比链表要快的多的多,链表的添加删除是比数组快,但是如果我有几百万个元素,而我想删中间一个元素,数组可以直接定位,但是链表要查找将近一半的元素。谁快谁慢一目了然。如果你长期使用某种语言,你就会慢慢按照这种语言的思维模式进行思考。所以,后来当你遇到其他任何一种有重大差异的语言,即使那种语言本身并没有任何不对的地方,你也会觉得它及其难用。缺乏经验的程序员对于各种语言优缺点的判断经常被这种心态误导。一种编程语言能否流行并不取决于它本身,大多数程序员也许无法分辨语言的好坏。但是,这并不代表优秀的编程语言会被埋没,专家级的黑客一眼就能认出它们,并且会拿来使用。一种真正的优秀的编程语言应该既整洁又混乱。“整洁”的意思是设计得很清楚,内核由数量不多的运算符构成,这些运算符易于理解,每一个都有很完整的独立用途。“混乱”的意思是它允许黑客以自己的方式使用。