赖勇浩(http://laiyonghao.com
)
经常听到和看到一些前辈提起搞编程这一行最大的痛苦在于知识的更新太频繁,如同逆水行舟,不进则退,稍一松懈,就跟不上潮流。的确如此,既然身在 IT 界,不学习是不行的,不管你写了多少年程序,职位到了技术总监还是 CTO,不去了解潮流,肯定就会被超越。10 年工作经验在这个领域算个屁,写代码的不是卖油翁,可以 10 年用一招,一招用 10 年。从业以后我自己的技术更新了好几代,还好没算落后太多,还是有一些方法的,今天公开一下,如果觉得有用,大家就去用用。
0、看网站
网站的信噪比太低,现在我花在网站上的时间是很少的,主要看一下 solidot.org、csdn.net、javaeye.com 和 infoq.com/cn。如果是看英文网站,我的英语水平又达不到母语的阅读水平,我觉得太花时间,所以除非由中文网站带过去,不然几乎不看。至于中文网站总是会有一定的消息延迟,自有解决方案,我后面会讲到。
1、读杂志
杂志,汇集了很多比较高水平的作者的思考和沉淀,另外一些比较有意义的新闻也会进入到杂志当中,这样可以加深记忆和体会。因为我是做网游的,所以常读的杂志是《程序员》、《游戏创造》和《互联网周刊》。其实这三本杂志中,技术的比例并不是很大,不过往往可以找到质量不错的文章,思考比较深入,总结比较中肯,能够引发思考。根据这样的文章再去找一些书、论文和博客来读一下,一下子就能够对一些新的趋势有所理解了。
2、读书
我读书主要读以下几种:
一、经典好书,这种书可能已经比较老,出版了一些年份,网上往往能够看到很多推荐。随便用“C++ 好书”或“Ruby 好书”这样去搜索一下,就可以找到一些线索,然后再通过 douban.com 或 amazon.cn 看一下评论和星级,基本上就可以扫一大箩框回来了。前面说过这些书往往出版了好久了,可能已经绝版,比较好的方案是办一张借书证,去那些面向市民开放的图书馆借。比如我有一张中山图书馆的借书证。
二、杂志推荐,比如《程序员》,每一期都会推荐 10 来本新出的“看起来不错”的书,每个月挑一两本买之,负担不会有多大,而且基本上能够买到质量真的不错的书。
三、网站排行榜,网上卖书的网站,都会分门别类做排行榜,各种行业网站,往往也会做一些年度榜,这上面的书,既然这么多人买就不会太差。另外就是它们做的新书上架推广,做广告都是要钱的,出版社花钱去推广,必定是有一定的自信啦,所以如果有合适自己口味的,不妨买来。
通过这几种方式买书,买到很差的书的可能性就很小了,我通常一年会买个 10-20 本,有些粗读,有些精读,有些留着做参考。
3、RSS订阅
读书不是每个人都喜欢的,很多人还是喜欢快餐文化,另外书是所有知识形式中延迟最大的一种,所以我常常用其它方法去补偿一下。这种方法就是 RSS 订阅。如果你初试 RSS,最好的方法是去订阅别人的 google reader shared items,比如我的(http://www.google.com/reader/shared/00355418323522099660 )。因为网络上的消息信噪比太低了,如果你直接随便订阅一堆 RSS,往往会被铺天盖地的垃圾文章给逼得无所适从,而别人的共享项目内容往往是比较高质量的文章(不好的文章谁会去分享啊?),所以初哥最好由此手入。然后你可以通过那些被人共享了很多文章的项目中发现知名博客,通常文章质量高就会变得知名,吼吼,反过来越知名的博客文章质量越高,这时可以尝试扩展一下,把这些高质量的博客订阅过来。还有一种发现高质量博客的方法是遇到问题时 google 一下,解决方案往往是在一些高质量的博客里,解决完问题之后,可以顺手把它用 RSS 订阅一下。最后就是大家要订阅一下不喜欢的内容,我的订阅比例大概是 15% 左右。比如我从来没有学会过 java 和 ruby,也没有开发过 web(webgame 不算),但我还是订阅了一些这方面的博客,并从中受益良多。
4、读论文
读论文无疑是加强技术修养的最佳实践。我读论文有两个驱动力:一是项目,项目遇到问题了,你不解决不行,看完博客、看完杂志、看完书之后,仍然解决不了的问题,只有去读论文;二是在前面的知识来源中,往往会找到一些有用的关于参考文献的痕迹,找过去就是论文了,如果特别感兴趣,则读之。
读论文是最 TMD 难的事情,论文这东西,只有十页八页,但往往都是英语的,理解上一句也错漏不得,所以论文我通常不会在电脑上看,而是打印出来,拿枝笔坐在那里慢慢读,字斟句酌地把自己的理解写在缝隙当中,当然,也包括遇到不认识的单词时查到的解释。:)
这玩意儿虽然读得辛苦,但却非常有效,一篇论文胜数十篇博文不止矣,如果时间少的人,就多读论文少花时间去读网文。
5、参加技术讨论组
之前说到中文的网站,往往会有消息延迟,我的补救方案就是加入到技术讨论组(如 google group, maillist)甚至是 twitter 上去。这里面的 geek 人士都对业内的消息非常敏感,而且有很多读英语像读母语一样流利的人,他们会非常及时地给大家带来国际社区最新的动态(这时候就要要勇敢地接受英语文章了),所以如果加入这里,能够比只关注 IT 类网站更早知道最新趋势。
就国内来说,我最关注的 google group 主要有这几个:TopLanguage、python-cn、dev4server。
twitter 上大部分都是 IT 技术人员,几乎国内稍有名气的程序员都有一个 twitter 账号,上去以后 follow 几个比较知名的,然后从他们的发言中去找线索,引申出去,就很容易找到许多的新知识了。什么,你不知道该 follow 谁?呵呵,那去 google 一下“推荐twitter用户”,有一堆人等着你来 fo。