书山有路勤为径--一个程序猿书虫的进阶之路

学以致用

记得初来乍道的时候,师傅丢给我一本字典一般的《光同步数字传送网》,叮嘱我要像看金庸的武侠小说一样看。我当时不明就里的接过书,意想不到的是,这开启了我的软件阅读时代。

《光同步数字传送网》封面,转自百度百科


此后,陆陆续续的看了不少书,从《Effective C++》系列到《设计模式》,从《程序开发心理学》到《大教堂与集市》。游历其间,受益匪浅,故而乐此不疲。通过书,得以身临其境的聆听可望不可及的大牛们的谆谆教诲。他们为我的指明了前进的方向,帮我一览方塘上的天光云影。

以前读过一本名为《如何阅读一本书》的书,此书堪称meta book。其中罗列的阅读原则和技巧让我受用不尽。此书开宗明义的要求读者要主动的阅读,作者好比棒球的投手,称职的读者则要接好来球。“尽信书不如无书”,读者要提问题,并努力在书中找到答案。我习惯在书上作笔记,有时把令我茅塞顿开的句子勾勒出来,有时在书的空白处写几句自己的看法,权当是跟作者争论一番。

不同的书读的方式也不尽相同。《设计模式》要脑洞大开般反复研读,时常回头再读会有新的体会;《Clean Code》适合浮光掠影般通读一遍,待用时仔细查阅。除了读书,好网站也不能放过。订阅code project每天推送邮件,逛逛stackoverflow.com和github.com,总会有惊喜。

借用Linus的名言--“Talk is cheap, show me the code”,书看多了,总有一种虚无感,这时需要结合代码看。写好代码的第一步是模仿。在github.com fork牛人们的项目,看看他们是怎么命名函数和变量,怎么设计和组织类和函数。这都是很好的起点。在github找工作中主要使用的编程语言开源的单元测试框架,一边学大牛的编程风格,一边学单元测试的玩法,一举两得。

我师傅除了给我一本书,还告诉我他的学习经验:“书读着读着,灵光乍现,就一通百通了”。回想我的学习过程,我发现仅仅读是不够。当初我费时费力把龙书看完,没多久就把工作中很少用到的词法分析还给了作者。陆游诗云:“纸上得来终觉浅,绝知此事要躬行。”我深以为然。

学以致用方是正途,这是一个螺旋上升的过程。上次做的PoE项目正是这样一个过程。在刚分析的时候就想到了状态机模式。但是从四人帮的书中只学到了类图,对应用场景和限制不甚了解。于是回头恶䃼之,理顺了基本思路。但是项目的场景跟书中描述总有些差异,于是在标准的类图上又有针对性的修改了设计。在写代码过程中,对类的结构,限制和相关模式(如享元模式和职责链模式)的组合有了更深的体会,发现早期的设计有一些问题,于是又调整了结构。项目完成完后,把自己的解决方案和标准方案对照玩味一番,对状态机和设计模式的认识更上一层楼了。

软件是门实践的学科。书本上的知识讲得再好,也要运用到实际工作中去验证。在实际运用的时候,也许会发现有些地方行不通,需要调整;也许会体会到这个方法的好处而拍案叫绝;也许会发现这个方法跟其它方法的关联性而找到一个更大的体系。然后将这些点点滴滴汇总起来,形成自己的经验。这样才能叫做真正学到东西,让书上的知识真正变成自己的了。

快乐编程

前段时间参与了一个短片的拍摄,导演要我摆出痛苦编程的表情。我做得很不到位,被NG了好几次。一则是因为我不会演内心戏,二则是因为编程给我的更多的是快乐。正是这份快乐指引我不停的学习,不停的尝试更有趣更高效的开发模式和更简洁的编码风格。

虽然不太有机会选择写什么代码,但是我们可以选择如何写好代码。于是,在PoE项目中,我选择了重新设计状态机。在编码初期,结合项目的发布策略(先要紧急发布演示版本,再发布正式版本),制定了迭代计划,并选择了TDD和gtest来保证质量。在编码中期,为了代码更简洁和更高的扩展性,又重构状态机。还好前几个迭代已经搭好单元测试集,可以放心大胆的去重构。

追求极致跟快乐工作和高效工作并不冲突,反而是相辅相成的。追求极致,在开发过程中需要多付出一些,但是与之相伴的快乐和成长,会证明汗水是值得的。而且开发质量保证了,在后期的测试和维护都一马平川,后期的工作量大大节省了。这样就会进入一种良性循环。工作越来越快乐和高效。

每个开发者都有特性交付后,“会当临绝顶,一览众山小”的兴奋。但这股兴奋劲往往来得太晚,去得太快。零星一闪,就淹没在繁重而抓狂的调试和定位的汪洋中,似乎开发没有快乐可言。我喜欢把大块需求分解成一天就能看到成果的小任务,比如一段代码能编过,一个单元测试例能跑过。每天都能看到实实在在的进步。日积月累,单元测试的绿条越来越多,就像玩RPG游戏,打怪升级,级别越来越高。每天的工作都快乐的结束,并期待第二天工作的开始。单元测试例就是我的勋章,看着满眼的绿,醉人的绿啊,颇有一番洋洋自得的自豪感,而且每天都来过几遍!这很容易上瘾,我称之为编程游戏。

Bob大叔(Robert C. Martin)一直戴着的绿色腕带也有异曲同工之妙。这条腕带上写着:“test obsessed(沉迷测试)”。Bob大叔是世界项级的软件开发大师,同时也是TDD的簇拥,所以前面那句话更准确的说是“obsessed with test-driven development”。腕带就像紧箍咒,戴上就取不下来。不过跟孙悟空不同,他是自愿的。这条腕带代表了他的信仰和追求,提醒着他要写出简洁的代码。

Bob大叔的腕带

寿司之神小野二郎曾经说过:“我总是向往能够有所进步,我继续向上,努力达到巅峰,但没人知道巅峰在哪”。每个人都有梦想,我既然已经走到了软件的路上,就会努力前行。让我们把梦想照进现实,努力让他生根发芽。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,142评论 25 707
  • 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及...
    dle_oxio阅读 11,055评论 6 244
  • 一路往北,高速路口前堵车了,堵了很长,我扫了一眼,大概有一公里的样子,这种情况在信阳这个小城市,特别是高速路口这么...
    大地_行者阅读 460评论 0 0
  • 语不惊人死不休,混沌之中一清流 透过迷雾一束光,留心处处皆学问 时之去兮不复返,宁缺毋滥之学时 不顺耳之事尤多,时...
    萌龙在天阅读 177评论 0 1
  • 我要离开这里去远方 天空中告别声振荡 这座城市留下太多感伤 不去多想 不用多回望 远行的路还有微风清凉 很迷茫 不...
    李承墨阅读 436评论 1 3