说文解字
读书有三到,谓心到,眼到,口到。- 朱熹《训学斋规》
我出生时,父亲为我取名「刘光云」,承“光”辈,单字“云”。但自上学之后,便「不知所云」。有一天语文老师说文解字道:“聪者,耳到,眼到,口到,心到也”。判若相识恨晚的感觉,我对“聪”字「情有独钟」,随将自己的名字改为「刘光聪」。
说来也巧,自那之后,妈妈再也没有担心过我的学习了。
选择
耳到,择其善者而从之,择不善者而改之。有人习惯于巨函数,大逻辑,问究为何如此,美其名曰:都是为了效(hai)率(zi);而我更偏爱具有层次感的代码风格,短小精干,意图明确。
他人的经验固然重要,但需要我们自己「选择性」地接收,而不是一味的听取。不要为大师所迷,大师有时也会犯错。关键在于自我思考,善于辨别。尤其在这个浮躁的世间里,能在地上跑的都喊自己是“大师”。
抽象
眼到,扫除外物,直觅本来也。一眼便能看到的都是假象,看不到,摸不着的往往才是本质。有人习惯平铺直叙的的逻辑,任其重复;而我更加偏爱抽象,并将揭示本质过程当成一种享受。
抽象,固然存在复杂度。但这样的复杂度是存在上下文的,如果大家具有类似的经验,抽象自然就变成了模式。那是一种美,一种沟通的媒介。
如果对方缺乏上下文,抽象自然是困难的。所谓「简单」,是问题本质的揭示,并为此付出最小的代价;而不是平铺直叙,简单是那些门外汉永远也感受不到的美感。
过而不及,盲目抽象,必然增加不必要的复杂度。犹如大规模的预先设计,畅谈客户的各种需求,畅谈软件设计中各种变化,盲目抽象。
分享
口到,传道,授业,解惑也。分享是一种生活的信念,明白了分享的同时,自然明白了存在的意义。我喜欢分享自己的知识,并将其当成一种学习动力,督促自己透彻理解问题的本质。
因为能够分享,所以知识自然变成了自己的东西。每日的Code Review
,我常常鼓励团队成员积极分享,一则为了促就无差异的团队,二则协助分享者透彻问题的本质。
要让别人信服你的观点,关键是要给别人带来信服的理由。分享的同时,能够帮助锻炼自己的表达能力,这需要长时间的「刻意练习」。
领悟
心到,学而思之,思则得之,不思则不得也。只有通过自己独立思考,归纳总结的知识,才是真正属于自己的。
我偏爱使用「图表」来总结知识,一方面图的表达力远远大于文字,另外,通过画图也逼迫自己能够透彻问题的本质。
成长之路
消除重复
代码需要消除重复,工作的习惯也要消除重复。不要拘于固有的工作状态,重复的工作状态往往使人陷入舒服的假象,陷入「三年效应」的危机。
提炼知识
首先我们学习的不是「信息」,而是「知识」。知识是有价值的,而信息则没有价值。只有通过自己的筛选,提炼,总结才可能将信息转变为知识。
成为习惯
知识是容易忘记的,只有将知识付诸于行动,并将其融汇到自己的工作状态中去,才能永久性地成为自己的财产。
例如,快捷键的使用,不要刻意地去记忆,而是变成自己的一种工作习惯;不要去重复地劳动,使用Shell
提供自动化程度,让Shell
成为工作效率提升的利器,并将成为一种工作习惯。
更新知识
我们需要常常更新既有的知识体系,尤其我们处在一个知识大爆炸的时代。我痛恨那些信守教条的信徒,举个简单的例子。
陈旧的「代码规范」常常要求if (NULL != p)
这样的YODA Notation
习惯用法。但是这样的表达编译器是高兴了,但对程序员是非常不友好的。
“if you are at least 18 years old”明显比“if 18 years is less than or equal to your age”更加符合英语表达习惯。
有人驳论此这个习惯用法,但是现代编译器对此类误用通常报告警告;而且保持TDD
开发节奏,小步前进,此类低级错误很难逃出测试的法网。
重构自我
学,然后知不足;教,然后知困。不要停留在原点,应该时刻重构自己的知识体系。
在刚入门OO
设计的时候,我无处不用「设计模式」;因为我看到的所有书籍,都是在讲设计模式如何如何地好。直至后来看到了「演进式设计」,「简单设计」和「过度设计」的一些观点后,让我重新回归到理性。
后来,我也学习了「函数式」的一些思维,并且为其「组合式」设计的魅力所折服。曾经一个忠实的OO
信徒,也成为了FP
的粉丝。
专攻术业
人的精力是有限的,一个人不可能掌握住世界上所有的知识。与其在程序设计语言的抉择上犹豫不决,不如透彻理解方法论的内在本质;与其在众多框架中悬而未决,不如付出实际,着眼于问题本身。
总之,博而不精,不可不防。
构建体系
系统学习非常重要,推荐ThoughtWorks
的读书雷达,2016
读书雷达更新为新的四象限。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。