读《程序员的思维修炼》
在团队周例会上的读书分享
这本书是一本讲如何调试和训练大脑的书。虽然其中的观点以前也都听过,但这本书相当于一个集成,教你认识自己的思维方式以及重构自己的思维方式。这本书的英文附标题是”Refactor Your Wetware”,重构你的湿件,个人感觉其实比中文的“开发认知潜能的九堂课”要好。
书中列举了德雷福斯模型的5个阶段,其实也是程序员的成长之路
德雷福斯模型的5个阶段
- 新手 需要指令清单
- 高级新手 没有全局思维
- 胜任者 能够解决问题
- 精通者 能够自我纠正
- 专家 使用直觉
训练大脑的目的是使用直觉。作者将大脑分成两种模式,概念上和流行的左脑右脑类似,不过作者划分为L型和R型。L型就是线行模式(语言,分析,抽象,时间,推理,数字,逻辑),R型是富模式(非语言 综合 非理性 空间性 直觉)。
然后作者分析列举了一些训练大脑方法。
主动学习,避免羊浸式培训(基本上国内从小的学校教育都是这种)
羊浸式培训 羊浸(现实中)是指把毫无防备的羊浸到一个大水箱里面做清洗,去除它们身上的寄生虫(见图 6- 1)。 羊排成一队,你抓起一只浸到水箱里,让它感受一次强烈的、陌生的、中毒性的清洗经历。当然,药性会逐渐失效,所以过段时间你不得不对它们再次做清洗。
主动学习主要有以下方式
-
目标明确(SMART) 这个基本上做过绩效KPI的都知道 但把这个用在学习上更重要
- S 具体的
- M 可度量的
- A 可实现的
- R 相关的
- T 时间可控的
回顾一下以前的学习计划,是不是基本上都失败在没有制定好明确的目标了?我想学习XXX语言,配置了环境,买了书,粗略翻了一下,可能写了个hello world然后就没有然后了.我学习这门语言的目标是什么?只是了解下呢,还是要做些具体的东西?衡量的标准是什么呢?写一篇介绍文档?还是实现一个算法或者写个web服务器?有多少时间可以用来学习?要达到目标需要多少时间?这些问题不回答好,一般就都没有“然后”了。
-
SQ3R读书法 读书基本上是大家公认的好的学习途径,但如果想通过读书系统学习某项技能,随意翻阅肯定是达不到目的的。
- 调查(Survey): 扫描目录和每章总结,得出总体看法。
- 问题(Question): 记录所有问题。
- 阅读(Read): 阅读全部内容。
- 复述(Recite): 总结,做笔记,用自己的话来描述。
- 回顾(Review): 重读,扩展笔记,与同事讨
前三项可能大家一般都能做到,但做到复述回顾的就少了。所以如果有条件,组织阅读小组进行定期分享,不失为一个好办法。作者还介绍了一种方式,叫”和橡皮鸭聊天”。就是在自己的桌子上放个橡皮鸭,找不到人的时候,给橡皮鸭讲一下。有些问题自己想不通,但复述讲解的时候可能会突然茅塞顿开。
控制注意力
说实话,这个是个非常有挑战力的事情。回顾一下大家一天的时间,看都浪费到哪儿了?回复即时通讯?回复邮件?接电话?真正用来写程序的时间有多少?虽然这个和环境相关,有些东西自己没法控制。但也是有一些的技巧和方法的。其中一个方法就是冥想。冥想的时候要做到什么都不想,不分心。这个开始会比较难,我尝试了一段时间,也无法做到什么都不想。但冥想的真正目的是让你尝试控制自己的思维,每次分心然后再集中注意力的过程,就是一次对控制注意力能力的锻炼。
超越专家
为什么说要超越专家?专家可以用直觉进行判断分析,但直觉有利有弊。利是通过直觉可以快速得出结论,节省不必要的试错,降低资源浪费。但弊是直觉容易形成偏见,忽略对变化的感知。要完全避免偏见,基本是不可能的,但可以通过一定的方法降低偏见造成的影响,尤其是做重要抉择的时候。
总结
这种方法论的书,如果说多了就和鸡汤差不多了。实际上重要的在于实践,方法论只是别人总结出的一些有效的方法。只有实践并固化到自己的日常习惯中,逐渐形成自己的方式,才算真正“读”了。