书山有路勤为径--书虫成长之路

    

学以致用

         记得初来乍道的时候,师傅给我一本字典一般的《光同步数字传送网》,叮嘱我要像看金庸的武侠小说一样看。我当时不明就里的接过书,意想不到的是,这开启了我的软件阅读时代。此后,陆陆续续的看了不少书,从《Effective C++》系列到《设计模式》,从《程序开发心理学》到《大教堂与集市》。游历其间,受益匪浅,故而乐此不疲。通过书,得以身临其境的聆听可望不可及的大牛们的谆谆教诲。他们为我的指明了前进的方向,帮我一览方塘上的天光云影。

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

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

        借用Linus的名言--“Talk ischeap, show me the code”,更重要的是代码。写好代码的第一步是模仿。在github.com fork牛人们的项目,看看他们是怎么命名函数和变量,怎么设计和组织类和函数。这都是很好的起点。

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

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

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

快乐编程

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值