阅读笔记
为黑客正名
0黑客是一群什么样的人?一群试图攻破别人的计算机系统的反社会分子(看看吧,那群该死的黑客把Sony的PSN的用户数据都给搞走了)?一群一个星期不刮胡子,三个月不理发,穿得像一个民工头的土鳖(穿着拖鞋,头发像狗窝,双眼布满血丝)?一群不会说话,有交流障碍的书呆子(和他们在一起气氛可以让你尴尬地想马上找一个地缝钻下去)?
以上就是我臆想中的别人眼中的黑客的形象,当然,这些看法不能说它错,不过如果你想更准确地去了解一下黑客是一群什么样的人,那么你一定要看看硅谷的创业教父Paul Graham的写的《黑客与画家》。
最早接触到Paul Graham是一年多前在阮一峰的博客中,这也是我第一次意识到一个黑客(或者说程序员)可以做到那样的地步:创建Viaweb并且以3500万美元的价格买给雅虎,然后在网上写一些关于创业的文章,最后创办了Y Combinator,专门投资创业公司,其投资的公司包括像Reddit.com这样非常著名的公司。
后来看到阮一峰在他的博客中说他将翻译Paul Graham的著作《黑客与画家》,于是马上去网上找到了《黑客与画家》的英文版开始阅读,无奈因为英语阅读能力有限,只看了前面的几章便放弃决定耐心等待阮一峰同学翻译出来以后再读。到今年终于等到了阮一峰同学翻译完毕了这本书,我花了在飞机上的时间把这本书看了个大部分,然后在周末又把剩下地看完了,非常过瘾,不得不佩服Paul Graham的写作功力和阮一峰同学的翻译能力,文笔流畅又不乏幽默。那么,且来看一下Paul Graham是怎么看待黑客的:
黑客们在干些什么:Mark Zuckerberg,这个经常穿着个拖鞋晃荡来,晃荡去并且被《时尚先生》列入2010名人风格耻辱堂的土鳖黑客,创造了市值200亿美元的Facebook;David Heinemeier Hansson,简称D.H.H,是最有效率的公司37signals的创始人之一,并且创造了非常著名的Ruby on Rails框架,让Ruby开始在世界流行起来,现在在赛车逍遥着;Larry Page和Sergery Brin,创办了世界上最大的搜索引擎Google,改变了整个世界信息的流动方式;那么,你看出这些黑客们干了些什么事情吗?是的,他们正在改变这个世界,并且看上去正在接管这个世界,不是吗(开个玩笑,^_^)?
黑客们把聪明看得比外表重要:他们的大多数人大多数时候看上去都是不着边幅的,邋里邋遢的,这里面有一个很重要的原因就是黑客们把聪明看得比外观上的东西更重要,毕竟一个人如果想要精通一样东西,比如在这样东西上投入巨大的精力,所以你可以看到这一群一心要去精通计算机的黑客们总是不太注意自己的外表。(关于他们邋遢的外表,另一个解释是他们是一群懒人,一群什么事情都想要让计算机去干的人)
黑客们叛逆,崇尚自由:黑客是一群叛逆并且崇尚自由的人,他们对诸如封锁,专政之类的东西非常反感,所以你才会在Twitter上看到这么的程序员,因为对于他们来说,一堵把信息封闭起来的前对他们是一个极大的侮辱。 就这个品质来说,难怪世界上最优秀的黑客大多数都在美国,也只有那个开国元勋可以说出“反抗政府的精神,在某种场合是如此珍贵,我希望它永远保持活跃”的国家,才能够出现这么多优秀的黑客。
黑客像艺术家,而不是工程师,科学家:这个看上去挺奇怪,一群一天当晚对着冰冷的机器的家伙哪里有什么艺术家的气质了?黑客与艺术家之间的共同点在于他们都是创作者,他们都试图创造出优秀的作品。成为一个黑客必须要有灵感,这样才能创造出修复的作品,这正如艺术家一样。他们不是工程师,不是完成需求文档的机器;他们也不是科学家,他们去解决真正重要的问题,而不会陷入一些科学难题之中。黑客们的软件作品也和艺术家的艺术作品一样,需要不断地去雕琢;当然,艺术家现在看起来要比黑客酷多了,但是要是到计算机这东西出来也就几十年的时间,所以现在真是黑客们的黄金时代,在这个时代,必然会诞生黑客中的达芬奇。
这本书除了告诉你什么是黑客之外,还试图回答诸如创业方面的一些问题,介绍Lisp语言是如何地优秀等等(看了这本书你肯定会想去学Lisp),也都非常值得阅读;当然,毕竟这本书是写在2004年,其中的有些文章或者观点可能稍微过时了一点,但是这遮盖不了这本书的亮点。
怎样才算是足够好
0最近在读《The Pragmatic Programmer》,里面有一个小节写的是Good-Enough Software,顺着其思路,我也写一写如何才算是写出了足够好的代码。
莎翁在《李尔王》写道:“Striving to better, oft we mar what’s well”,在这一个不完美的世界里,我们永远来写不出完美的代码,但是我们总是需要努力写出更好更优秀的代码,然而越追求优秀的代码,付出的代价也必然越多,不知道怎么停下来的家伙只会让自己在追求更优秀的代码的路上累死,所以Andrew Hunt才说,我们要写出足够优秀的代码,但是,我们如何知道我们已经写出了足够优秀的代码吗?有没有什么普适的标准去衡量一个开发人员是否已经写出了足够优秀的代码呢?这里我觉得最重要的一点是“问心无愧”,听起来是挺玄乎的,但是你不妨问问试试在你的下一个项目中,当你提交代码的时候,你是否已经问心无愧了,觉得这样的代码已经是你所能够写出的最好的代码了,觉得没有必要再在这个上面浪费时间了。当然,每一个人都对一段代码是否是优秀的代码本身就有自己的标准,所以最重要的还是对自己的写出的代码问心无愧,这样便写出了足够好的代码。
在不同的情况下,你问心无愧的标准是不一样的,你可能会容忍一个马上就要上线的网站带着一个BUG上线,但是你不会容忍一架航天飞机带着一个BUG飞上了天。首先需要搞清楚当时的情况,为什么而写,为谁而写,等等,这样你才能够真正的做到问心无愧,如果没有想清楚这些问题,那么所谓的问心无愧就是可悲的自我解脱。
程序员职业规划之道读后感
0本书的英文名是《The Passionate Programmer:Creating A Remarkable Career In Software Development》,中文翻译成《我编程,我快乐:程序员职业规划之道》,第一次看到这个中文翻译的时候,感觉好山寨,心想大抵是某个国内作者写的畅销书,但是细细看了下注意到是某老外写的(唉,看来我的偏见真的很严重),于是下载了样章过来看,样章一共两章,一口气就看完了,后来又从当当买了这本书来看,整体来看,翻译的质量比较好,至少没有发现明显的翻译的错误,整本书读下来非常流畅。
从书名可以看出,这本书的内容讲的是关于程序员的职业规划,说实话,出于在大学中不休不止的职业规划的原因,我一看到职业规划一词就会产生下意识的反感,总感觉我连一天的时间都没有规划好,还要对职业进行规划。虽然我认为大部分的职业规划的讲座都是忽悠人的,但是这本关于程序员的职业规划的书,还是有一定的看头的,先不说他如何教程序员们进行职业规划,至少里面提到了许多作为程序员的一些通病,让我们对自己所从事的职业有一个更加深刻的认识。
本书一共包含五章,分别是选择市场,在产品上投资,执行,推销…..不仅仅是迎合,保持技术领先,我挑一些我觉得有作用的一些点来讲 :
- 做团队中最差的,永远和比你优秀的人在一起,那么你也会慢慢地变得和他们一样优秀。虽然每次都是团队最差的,可能让你感到难堪,让你觉得压力倍增,但是当团队中的每一个人都比你优秀的时候,那么久而久之,你就会以他们的思考方式去思考,慢慢地你就会变得和他们一样思考。
- 别把自己限定在一种技术上。这让我想到那些狂热的Linux迷,除了Linux以外什么都不用,并且强烈的抨击Windows的人,我个人感觉这些人真是对Linux理解最差的。虽然Windows的确有非常多的诟病,但是你中不会让你的老总去用Linux这样用户体验比较差的平台。当然如果你是个程序员,那么用Linux无可厚非,毕竟Linux有许许多多的非常强大的工具,而这方面Windows就差很多。总结一下技术只是解决问题的一种手段,你可以把技术可以作为一种信仰,但是不能把一种技术作为信仰,说白了一种技术无非是一个人或者一家公司或者一个组织创造出来的,大部分的技术随着技术的发展总会淘汰的,我们应该把眼光放开,学习各种不同的技术,找到各种技术的适用场景。
- 别自己一个人在那儿埋头苦干。作为一个程序员,可能我们习惯一个人在埋头苦干(就我自己来说是这样的),但是这样明显是不对的。团队中的其他成员都不知道你在干些什么?这样很可能造成你和别人在干着同样的事情。另外,你的老板也不知道你在干些什么事情,这样什么晋升加薪都是与你无关了,毕竟老板没有看到你为公司创造利润,不是吗?我们来公司是为公司创造利润的,那么我们就得让老板看到我们在为公司创造利润。另外显然和团队中那些聪明的家伙讨论可以比较快的提升你自己,而如果你一个人单干,那么你的进步速度要比别人慢很多。
- 8小时激情燃烧。我现在一周的工作时间是40个小时,每天8个小时,事实上,我每天工作的小时肯定是大于8小时的,但是真正在做事的时间又很难真有8小时最多,总有很多的事情在打扰你,总有脑子使不动的时候,总有太多的情况让我们每天的工作时间事实上是小时8小时的,显然如果你在这个8个小时内都是激情燃烧,那么显然你的工作效率将会是非常高的,而且加班的情况也显然会少很多的。在另外,做同一件事情的时间越长,那么效率会越低,加班的后果就是工作效率会比不加班还低,事实上你是花了更多的时间来做同样那个的事情。
看这一边的时候暂时就只能记下这些,希望能够在工作中注意到这几个点,以后还可以再翻翻这本书,或许又有另外的收获呢!
总的来说,这个书对于我这样刚进入职场的人来说还是挺有帮助的,除了中文翻译的名字土了一点,其他都不错。
卓有成效的程序员--关于如何提高程序员在工作中的效率
2花了一个多星期的时间把《The Productive Programmer》看了一遍,因为是介绍技巧性的书,所以看得比较快。
整本书一共分为两个部分,第一部分是Mechanics,第二部分是Practice。
第一部分着重介绍的是提高工作效率的通用的方法,提到了诸如VI编辑器,快捷键,宏命令的使用等等,其中介绍Mac平台下的QuickSilver印象特别深,之前我也在我的MBP上装过QuickSilver,但是使用了一把感觉和Spotlight差不多,就放弃使用了。然而按照这本书的介绍,重新试了一下QuickSilver,才感觉比Spotlight强大太多了,所以其实对于你所在使用的很多工具,你都可以通过某种方式来提高使用它的效率,很多时候我们只是不了解它。
第二部分着重介绍的一些和编程密切相关的提高工作效率的技巧,其中大部分也还都是老生常谈的东西,比如单元测试,奥卡姆剃刀,迪米托法则等等,在工作中也发现,虽然大家都知道这些东西好,但是却很少的真正地主动地去实践它。虽然第二部分大部分都是老生畅谈的东西,但是还是有一些比较新鲜,吸引人的东西,比如里面提到的Polyglot Programming,我不知道怎么翻译才好,姑且叫做多语言编程吧,其实这里的多语言我觉得更多的面向同一个平台的多种不同类型(领域)的语言,这里面有一个很好的例子就是Java平台,Java语言本身由于其诟病已经让很多开发者抱怨频频,但是Java做为一个平台通过借鉴其他的语言,却发展出很多种面向不同问题域的语言。比如Clojure,Jython,Scala,Jaskel等等,作者在本书中也预言了以后多语言编程的趋势。另外一个比较有趣的话题是Question Authority,翻译过来应该叫问题权威,里面以一个愤怒的猴子的故事开头,拿JavaBean的Setter Getter方法做了例子,提出我们应该对一些所谓的权威提出质疑,包括Java所谓的命名规范,我们要做的不仅仅是去遵守规范,而是了解规范出现的原因,理解在什么情况下可以打破这些规范,“因为每一个人都说这件事情就应该是这样的”并不是一个正确的答案。
其实本书介绍的大部分都是一些工作中的技巧,作者也说了,里面的大部分东西都是来自于自己或者同事在工作中积累的小技巧,作者只是对其进行了整理和分类。在工作中的小技巧多得去了,主要的不是去知道每一个技巧,而是当你工作的时候,明白什么时候需要使用一些技巧去更快速地完成这项工作,什么时候可以根据自己地需要去创造符合自己需求的技巧。重要的不是知道有很多很多的技巧,而是拥有一个懒惰的心(懒惰是程序员的美德^-^),不做重复的事情。
