读后感

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


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


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


<高效能程序员的修炼>中提到了很多话题,谈谈自己感触很深的。

  • 关于程序员的分类

作者将程序员分成了8大类,具体类别已经记得不是很清楚了,包括不朽的程序员,知名程序员,能胜任的程序员,业余程序员,糟糕的程序员。我觉得在有生之年自己的第一个目标是能胜任的程序员。这类程序员掌握专业技能,对于分配的任务都可以很好的完成。程序员,说得简单,但是这是一个十分残酷的行业,随着年龄的增长,也许也就是你被这个社会淘汰的时候。之前看网上一篇博文讲老程序员的工作问题。老程序员一方面如果具有较丰富的项目经验,别人会好奇你为什么还在找工作;如果别人不会好奇,可能会提问几个算法或者数据结构的题目,这些可能你都八百年没有去看过了,结果可想而知。我现在还处于一个知识积累的阶段,慢慢让自己像海绵一样吸收周围的知识,扩展自己的知识点,最后像知名的程序员看齐。

  • 关于代码评阅

代码评阅可以有效地降低BUG所占的百分比。这是个必然的结论,因为同行之间往往是互相挑刺的,他们相互协同工作,互相监督。代码评阅分为两种形式code review和peer review。peer review类似于极限编程中的结对编程,两个人共用一台机器,二人轮流执行程序员和监督者的角色。我觉得这种方法的效率很高,虽然我现在基本都没怎么实施过这种方法(失败!),但是我或多或少可以感受到这一点。就像和同学一起编程讨论的时候,两个人一起会对BUG的行踪看的更加清楚,而且讨论也比较有效果。不是每个人都适合做这个工作,在有资格可以做代码评阅之前,我们必须锻炼自己阅读代码的能力,可以看看《代码阅读》这本书。只有在源代码里摸爬滚打足够长的时间了,才会对各种惯用手法,常见错误具有一眼识破的本领。

  • 关于抵制诱惑

现今社会,诱惑无处不在。价格,外观,功能各种各样的新产品,每时每刻在发布着。作者提醒购买者要分清要购买的东西给自己带来的价值,而不是过多的关注于产品提供的很多附加的功能。产品对比是件好事,但是可能也是件坏事,也许对比后你会关注你本来不在乎的点,这样反而让自己得不偿失。某些产品的推出或者其价格的定位也一定程度上并不是为了反应器质量的优劣,有时候只是为了让以前的产品体现出物美价廉的特点,所以要警惕!另外一方面东西给自己会带来新鲜感,不要冲动,冲动是魔鬼,也许你期待已久的产品,可能由于快递等其他原因让你大失所望,所以要关注它能给你带来什么改变,提高生活品质或者改善生活质量。买大东西会给自己带来短时间较大的喜悦,但是这种喜悦也会很快的消失;与其让自己一下子兴奋过度,还不如想想如何分解,让自己总是处于一个较快乐的状态。

  • 关于网络安全

我们在互联网留下各种各样的踪迹,浏览网页,注册账号,发表facebook或者twitter等。我们如何确保自己的账号或者密码的安全?MD5或者SHA1吗?在GPU的高并行计算的前提下,首先短密码可以很快被攻破。因为加密算法在一定程度上就是计算hash值,hash值计算的越快,在短时间内试出密码的概率越高。这里首先要对密码的构造者提出一个要求,首先不要依赖于字典。因为基于字典的破解速度会更快,正本牛津字典也不过万条词汇;对于网站维护者,其需要对用户输入错误的次数与等待时间设定一个关系,防止恶意尝试密码。现在很多网站都形成一种联盟的形式,即可以利用第三方账号登陆。这里网站在签署这种协议时,一般会要求不允许记录用户的账号和密码,如果第三方的账号和密码安全做得足够好,你的网络安全就会得到更好的保障。这里主要是指利用Google,Facebook等可信度高的网站。


不得不佩服Jeff Atwood的博学多才,只有经历过许多事才会有更好的体会。Jeff Atwood创造了Stackoverflow,引起了很多网站的效仿,这是让他引以自豪的事,因为这说明他们做的好。Jeff Atwood正在创造Discourse,作者想改变用户一种阅读评论的方式。通常, 我们都会被提供第一页、第二页这种翻页的方式,不仅浪费时间,也会让用户不倾向于继续阅读。Discourse网站将改变评论加载的方式等。


我们做得技术都是为了改变生活,而不是去为了活着才去学习技术。


本文完。

你可能感兴趣的:(读书)