<<高效能程序员的修炼>>读后感

Posted by chunyang on March 31, 2014

不知道我是何时关注codinghorror这个网站的。可能是我开始想使用RSS的时候吧。载Google上搜索了一些程序员必读的RSS源,在知乎上也有相关的回答。等收集了一大堆后,发现了codinghorror,但是好像它很长时间都没有更新,所以在手机端的软件中根本没有新的文章提示。

这里来个小插曲:为什么有的RSS软件无法获取很久之前的文章?RSS软件需要从类似Google Reader这种信息聚合的网站下载信息,不然的话就要自己一个一个添加网站的订阅。自从Google Reader关闭了以后,很多替代的产品出现:鲜果?Feedly?Feedburner?这些都是比较好的产品。但是他们相对于Google Reader还是存在差距,因为他们查阅很久之前的文章能力有限,因为Google的爬虫已经记录了很多页面,很多内容,它可以轻松查询一个博客,不论多久的文章(理论上Google之后的都没问题)。但是其它替代产品都没法做到这点,国内的鲜果阅读器做得还行,但是它的客户端做得不够好,显示内容以及排版还是存在差距,缺少审美观点。

直到最近看了codinghorror博客的一些精华收集翻译版本<高效能程序员的修炼>这本书,才觉得恍然大悟。作者Jeff Atwood时[stackoverflow](http://www.stackoverflow.com)的联合创始人,还有一位是软件界的教父级别人物(Jeff称的)Joel([他的博客](http://www.joelonsoftware.com))。这本书的内容很多,毕竟作者博客已经维持了十多年,基本每周一篇(当然出去开发stackoverflow和[discourse](http://www.discourse.org)的时间)。不得不佩服作者的毅力,当然作者也从写博客中得到自我价值的提升。就像左耳朵耗子说得一样,把复杂的事情说得简单是一种能力,长篇累牍反而说明你的理解不够深入,表达欠缺技巧。作者在博客十周年的日子发了一篇感悟,博客伴随了很多人成长,但同时也说明他已经老了(^\_^)。但是他奉献给读者的远远超过他的想象,充实的内容,用句话叫都是干货和硬货。

<高效能程序员的修炼>中提到了很多话题,谈谈自己感触很深的。 + 关于程序员的分类 作者将程序员分成了8大类,具体类别已经记得不是很清楚了,包括不朽的程序员,知名的程序员,能胜任的程序员,业务程序员,糟糕的程序员。我觉得载有生之年自己的第一个目标是能胜任的程序员。这类程序员掌握专业技能,对于分配的任务都可以很好的完成。程序员,说得简单,但是这是一个十分残酷的职业。随着年龄的增长,也许也就是你被这个社会淘汰的时候。之前看网上一篇博文讲老程序员的工作问题。老程序员一方面如果具有丰富的项目经验,别人会好奇你为什么还在找工作;如果别人不会好奇,可能会提几个算法或者数据结构的题目,这些可能你都八百年没去看过了,结果可想而知。我现在还处于一个知识积累的阶段,慢慢让自己像海绵一样吸收周围的知识,扩展自己的知识点,最后像知名的程序员看齐。 + 关于代码评阅 代码评阅可以有效地降低BUG所占的百分比。这是个必然的结论,因为同行之间往往是互相挑刺的,他们相互协作,相互监督。代码评阅分为两种形式code review和peer review。peer review类似于极限编程中的结对编程(pair programming),两个人共用一台机器,二人轮流执行程序员和监督着的角色。我觉得这种方法效率很高,虽然我现在基本都没有实施过这种方法(失败!),但是或多或少可以感受到这一点。就像和同学一起编程讨论的时候,两个人一起会对BUG的行踪看得更加清楚,而且讨论也比较有效果。不是每个人都适合做这个工作,在有资格可以做代码评阅之前,我们必须锻炼自己阅读代码的能力,可以看看<代码阅读>这本书。只有在源代码里摸爬滚打足够长的时间了,才会对各种惯用手法,常见错误具有一眼识破的本领。 + 关于抵制诱惑 现今社会,诱惑无处不在。价格,外观,功能各种各样的新产品,每时每刻载发布着。作者提醒购买者要分清购买东西给自己带来的价值,而不是过多的关注于产品提供的很多附加功能。产品对比是件好事,但是可能也是件坏事,也许对比以后你会关注你本来不在乎的点,这样反而让自己得不偿失。某些产品的推出或者其价格的定位也在一定程度上并不是为了反应其产品质量的优劣,有时候只是为了让以前的产品体现出物美价廉的假象,所以要警惕。另外一个方面东西会给自己带来新鲜感,不要冲动,冲动是魔鬼,也许你期待已久的产品,可能由于快递等其它原因让你大失所望,所以要关注它能给你带来什么改变,提高生活品质。买大东西会给自己带来短时间较大的喜悦,即这种喜悦也会很快的消失;与其让自己一下子兴奋过度,还不如想想如何分解,让自己总是处于一个较快乐的状态。 + 关于网络安全 我们在互联网留下各种各样的踪迹,浏览网页,注册帐号,发表facebook或者twitter等。我们如何确保自己的帐号或者密码的安全?MD5或者SHA1吗?在GPU高并行计算的前提下,短密码可以很快被攻破。因为加密算法在一定程度上就是计算hash值,hash值计算得越快,在短时间内试出的概率越高。这里首先要对密码的构造者提出一个要求,首先不要依赖于字典,因为基于字典的破解速度会更快,整本牛津字典也不过万条词汇;对于网站的维护者,其需要对用户输入错误的次数与等待时间设定一个关系,防止恶意尝试密码。现在很多网站都形成一种联盟的形式,即可利用第三方的帐号登录。这里网站载签署这种协议时,一般要求不记录用户的帐号和密码,如果第三方帐号和密码安全做得足够好,你的网络安全会得到更好的保障。这里主要针对Google,Facebook等可信度较高的网站。 不得不佩服Jeff Atwood的博学多才。只有经历许多事才会有更好的体会。Jeff Atwood创造了Stackoverflow,引起了很多网站的效仿,这是他引以自豪的事,因为说明他们做得好。Jeff Atwood正在创造[Discourse](www.discourse.org),作者想改变用户阅读评论的方式。通常,我们都会被提供第一页,第二页这种翻页的方式,不仅浪费时间,也会让用户不倾向于继续阅读,Discourse将改变这种评论的加载方式。 技术是为了改变生活,而不是为了活着去学技术,这样会累。 本文完