奇迹之流WonderfloW

Nothing Replaces Hard Work!

《黑客与画家》读书笔记

| Comments

这又是我读到的一本神奇的书,他坚定了我的世界观。

说起这本书,还是在活动室溜达的时候,无意中在黄典典桌上发现的。当时对这本书也是慕名已久了,然后随手一翻就发现停不下来了,就这样,连着两三天,每天一有空就看,不知不觉就看完了。这真是一本IT界思想盛宴的书啊。

说起这本书,不得不提一下本书的作者,本书其实是硅谷创业之父Paul Graham的文集。而Paul Graham又是何许人也呢? 他是世界上首个互联网应用程序Viaweb开发人之一,也是viaweb公司的创始人,后被雅虎收购改名为”Yahoo!Store”。开创了天使投资的模式,被《福布斯》杂志喻为“撼动硅谷的人”。目前为止扶持过的公司超过250家,这些创业公司的成功率也高达80%,Graham无愧为”硅谷的创业之父”。

《黑客与画家》的第一章讲的是“书呆子不受欢迎”,说聪明人爱读书,而他们小时候努力的方向往往是怎么使自己变得更聪明而不是如何让自己变得受欢迎,所以他们这样的聪明人常常被称为书呆子。

而在我看来,这章是告诉我们,聪明的人为了使自己变得更聪明,往往要花很多时间读书,学习。那么他们必然是孤独的。我就常常感叹世界的不公,为什么其他同学可以花很少的时间学、很多的时间玩、可以很轻松的活着,而我却不得不花大量时间看书、写代码,而且依旧每天压力巨大,深感自己的实力太弱,要学的还有太多太多。读完《黑客与画家》的第一章我明白了,世界上每个人的追求是不一样的,既然我的追求是变得更聪明、更强大,那么我就不该奢求其他的,我就该忍受这样的孤独。而Paul Graham在后文也提到了,其实这样类型的人很多,我们并不孤独。

第二章则描述了什么是黑客,其实在我看来,paul graham 描述的一类人更像是现在我们常说的“geeker”。那么下面我就不说“黑客”而改用“geeker”这个词了。他说,geeker(崇尚自由热爱探索的程序员)与画家、建筑师、作家等等一样,都是艺术家。而艺术家做的事情常常不被当世之人所理解,优秀的geeker所探索的东西,也常常被人认为不可思议,可能geeker本身就是“奇怪的人”的代名词。但是paul graham鼓励大家说,要坚定自己的信念,相信自己所做的事情是伟大的事业,即使自己的程序在设计之初就不被世人所理解,只要自己觉得有价值,就要坚定不移的去做。

第三章紧接着第二章,讲述geeker的脑中常常充斥这一些伟大的甚至夸张的“不可说”的思想。就像17世纪的欧洲伽利略因提出“日心说”而被当成异端送上火刑架.geeker们可以有这样古怪的思想,但是不必说出来。而在我看来,这章作者所要谈论的不是要不要有这些怪异的思想或是要不要把这些思想说出来,而是告诉我们,“要有自己的思想”。“你是一个随大流的人吗?”、“面对权威或者公认的东西,你会提出质疑吗?”是的,权威并不一定是对的,而大家都谈论的东西就更加不一定是正确的了。放到现在的互联网,人们纷纷在“人人”、“微博”这样的地方吹水,其实这样的地方,该是geeker最去不得的地方了,因为这里面充斥着大量让你大众化、平庸化的”转发”、“分享”,以及毫不用脑子思考纯粹跟风凑热闹的人,时间待长了,会让你变得跟他们一样的平庸。总而言之,看完这一章,作者最大的告诫就是,要时刻保持质疑,要有自己独立的思想。

第四章比较短,讲述的是geeker喜欢自由,而打破常规正是geeker成功的秘诀。

第五、第六章就开始讲到创业以及创业公司了。先是讲到viaweb如何抓住契机抓住互联网软件这个机会。讲到如何致富,而除了坑蒙拐骗偷抢、继承、结婚等等这样非正常途径,你所能选择的最快的致富道路,就是创业。创业公司的长处就是灵活,也许大公司正规资源充足,但是正是因为正规,它存在很多规矩,也许一个程序员常常会因为公司里的琐事将好不容易构建起来的精神建筑打碎,即停下手头的程序去处理一些跟事业不甚相关的烦人事。而创业公司正是因为人少,所以每个员工可以充分发挥自己的努力,少了《人月神话》中提到的沟通成本,快速迭代开发出一款优秀的产品在一群不要命的天才geeker手中成为可能。大公司可以安排聪明人做轻松的事情,安排普通人拼命做事,却很难让聪明人拼命做事,而精英聚集的创业公司可以,这就是创业公司的可怕之处。

这部分其实是这本书中我最喜欢的了。paul graham提到, 1. 财富不是分配得到的,而是创造出来的,我们满足了别人的需求,那么其实就是创造了财富。 2. 如果一个平庸的人在轻松的环境下工作50年,赚到里100万,那我们要在5年内赚到100万,该怎么办呢,那就必须在5年内承受正常人在50年内所要面对的压力。是的,上天在这一点上格外公平,想要赚的比常人加倍的多,那么必将经受比常人加倍的压力与痛苦,而这一点我也早已准备好了。 3. 然后关于这一点,paul graham也提到了可能在大公司里很难做到自己想要达到的那种努力程度,因为可能你的努力成果会被一帮跟你在一起工作的人平庸。 4. 这个时候就说到了,你是愿意跟一帮跟你一样努力的聪明人分享成果呢,还是愿意跟一帮平庸的人一起分享成果?换句话说,在大公司有可能打消你的积极性,可能让你无法比普通人十倍百倍的努力工作,因为即使你这样努力了,也很难看出来。 5. 然后作者又说到了工作的“可测量性”以及“可放大性”,只有具有这样性质的工作才让你具备了加倍努力工作而致富的条件。接着就说到“小团体”就等于“可测量”,“高科技”就等于“可放大性”。

最后,我觉得,这章所描述的几乎所有观点我都是极其赞同的,但是我还是要先去大一些的公司体验一下,或许这就是第三章所说的,要有自己的思考吧,我始终认为“拿得起、放得下”这句话是针对曾经“拿起来过”的人说的,如果没有体验过,又何谈自己选择过。

第七章作者谈到了财富分配的问题,他说社会的贫富不均正是社会的前进动力,这章的观点实际上我还是不太赞同,虽然我想赚很多钱,但是在我赚了很多钱后,我也愿意纳税。多的就不说了,社会贫富均不均也不是我能说了算的,我只需自己抓住机遇努力即可。

第八章开始话锋一转,开始谈起IT界自己的东西了,从“如何防止垃圾邮件”开始,告诉我们,要换一种方式思考和解决问题。如果垃圾邮件过滤器是专门针对邮件特性的关键字来过滤,那么你就不得不钻进垃圾邮件堆里面去思考那些发垃圾邮件的人的思想。但是如果我们从中跳出来,写一个程序通过统计那些词在垃圾邮件中出现以及哪些词在正常邮件中出现这样的方法,让程序达到自学习过滤的程度,那么我们就无需不断的跟垃圾邮件发送者斗智斗勇了。

第九章主要讲的设计者的品味,作者每个小结总结性的话足以说明本章: 1. 好设计是简单的设计。(还记得计算机界的KISS原则吗?) 2. 好设计是永不过时的设计。(艺术家的经典作品不都是永世流传的麼~) 3. 好设计是解决主要问题的设计。 4. 好设计是启发性的设计。(你永远不会知道你设计的工具的使用者会有怎样的天才出现,没有启发性,如何引人入胜?) 5. 好设计通常是有点趣味性的设计。(好设计并非一定要有趣,但是很难想象完全无趣的设计是好的设计。) 6. 好设计是艰苦的设计。 7. 好设计是看似容易的设计。(如果不是长期的训练,运动员如何成为世界冠军,钢琴手如何信手拈来一首名曲而成为钢琴大师,画师如何一气呵成一幅美妙的画卷而成为画家……) 8. 好设计是对称的设计。 9. 好设计是模仿大自然的设计。(因为自然界经过长期演化自然而然解决了很多设计问题。) 10. 好设计是一种再设计。(很少有人一次就把事情做对做好) 11. 好设计是能够复制的设计。(从模仿到原创,最伟大的大师都是这样渐进最终达到超脱自我的。) 12. 好设计常常是奇特的设计。(奇特不是瞎搞,奇特只是在追求产出好作品时不自主的形成的一种独特风格) 13. 好设计是成批出现的。(英雄都是伴生的,因为他们有那样一个环境让他们讨论,成长) 14. 好设计常常是大胆的设计。

第十章开始讲到编程语言,作者提到程序员的时间和机器时间的价值。如果A语言和B语言进行比较,实现一个相同的功能,A语言需要20行代码,B语言只要1行代码,但是A语言的效率是B语言的20倍。那么,毫不犹豫的,我们会选择B语言,因为根据摩尔定律,计算机的时间只会越来越便宜,而程序员的时间则往往是极其宝贵的,是生命。所以除非在一些特殊的环境下要求程序有极高的效率,那么我们自然会选择更高级的B语言。而且在相同的情况下,程序的行数越多,也越容易出bug。所以现在我们也很容易明白为什么用像汇编这样的机器语言去实现一些日常的程序被理解为是一件愚蠢的事情。

作者提到了高级语言的优势,说到了LISP语言,关于这方面我接触的实在太少,或许读过了也算不上深刻,只待过段时间闲下来可以有机会去学习一下。但是python我倒是用过,明白其强大之处。

第十一章及之后作者提到,如果在面临选择的时候,有一个选择较难,有一个选择简单,那么一定要选择那个难的,强迫自己选择难的,其实也是一种锻炼,因为你的对手今后也会面临同样的选择,如果你每次都是选择的难度较大的选项,那么你无形中也给竞争对手加到了难度,甚至到最后可能产生的就是技术壁垒。这就是拒绝平庸,因为只要你能在每次选择过后都坚持走下来,你就是这个行业最强大的。

作者还说到,时下最流行的语言,最流行的做法不一定是失败的,但一定是平庸的。就像一种编程语言,可能人们用惯了就不愿意去改变它,哪怕明知道有更好的语言代替。然后流行是因为用的人多,但是很难表示用的最多的就是最好的。

关于这一点,其实我倒是觉得,还是要针对特定情况要有自己的思考,每种流行语言流行其实也自有其道理,那么我们学习一下也没有什么坏处,geeker不是最不惧学习的一帮人麼~

最后作者说:研究和设计是有区别的,研究出来的东西一定要是新的,而设计出来的东西必须是好的,也就是设计必须站在用户的角度来思考问题。

当然,全文中其实还充斥着大量与“软件工程”相违背的很多观点,这些都是要融入自己的思考的,我觉得读一遍这样的书是远远不够的,但是下一遍读不是马上,而是要在经历过一些事情,有了更多阅历以后再来读,或许那时会有更多的体验吧。正好那时我再来读的时候,可以对照着这篇文章来看。

最后,不得不感谢一下本书的翻译者阮一峰,翻译过来如此精彩的文章。

最后的最后说一些题外话:最近读的书多起来,才越发的觉得以前真的浪费的好多时间,还有很多很多精彩的书没有读,那么,加倍努力的去阅读吧!