《程序员的思维修炼》英文版书名为《pragmatic thinking and learning》。pragmatic,指实用、实务、有效处理当前情境中的问题,是全书书眼。书中抛出实用锦囊若干,帮助读者更加有效地学习、思考、处理问题。

1 能力定位:德雷福斯模型

身在山中,容易自满自足,不知山外有山。若望高山,而不知山,则只有望山兴叹,缩回自己的小山头。德雷福斯模型展开了一幅能力进阶的群山图,新手、高级新手、胜任者、精通者、专家,盘踞一处。这幅图,可鸟瞰,与群山比拼,知晓高低。这幅图,可细察,拨开迷雾,把高山看个清楚。

从新手到专家,隔了几座山?新手与专家眼中的问题截然不同。新手只看得到眼前的问题,并急于解决它。专家不仅分析问题还分析问题所在的情境;能把问题关联到更深入的模型;能主动预测问题。董振磊老师在分享会里介绍的芒格,就是建立跨学科模型,使用模型解决问题的专家。新手与专家解决问题的方法也不同。新手需要行动指南,手把手指点。专家则依赖基于大量经验的直觉解决问题。另外,专家有更强的元认知和反省能力,他们不止步于解决问题,他们致力于寻找更好的解决办法

作者在书的开篇即介绍德雷福斯模型,用意是让读者评估自己的能力阶段,找到与高阶者的差距。然而,模型仅仅是对事物的一般抽象,会有疏漏、偏差、过时。正如作者在警惕工具陷阱一节中也提到,如果一昧依赖模型,将会忽略现实,忽略情境,过度简化事物。德雷福斯模型也不会例外。了解模型之余,不妨把目光投向自己所在领域,观察领域中的低阶者和高阶者,再分析、比较、归纳出自己领域里的能力进阶图。

2 善用大脑:大胆直觉,小心debug

大脑有两种加工模式*:模式1,线性加工,运行速度慢,逻辑思考、语言加工都靠它。模式2,直觉、整体式加工,非语言加工,不受意志控制,问题解决、创造力需要它。一般观念里会更加倚重模式1,但是模式2同样重要,专家的直觉和创造力,来自模式2。高效的学习和思考,两种模式缺一不可。

开启模式2,激发直觉:

  • 具像化
    将抽象的文字,转化为图像,调动多种感官,使之可看、可摸、可听、可闻。

  • 隐喻
    找到事物之间的联系。以具象的事物隐喻抽象,便于理解抽象概念。把看似不相干的事物连接起来,需要创造力。

  • 散步
    把模式1关掉,出去走走

直觉会犯错,不想被直觉带坑儿里,切换到模式1,小心debug:

  • 认知偏差
    了解认知谬误,并避免之;极端值里可能存在有价值的信息,别轻易扔掉;忍受不确定性,别轻易做决断

  • 个体与背景
    了解自己、了解时代精神

  • 反向思考
    想象自己观点的对立面

3 实战升级:learn by doing

通过构造来学习,而不是通过学习来构造

学习是主动求索、创造,而不是像海绵一样贪婪地吸收信息。学习需要在情境中实战,持续输出,不怕犯错,根据反馈不断改进。一个高效的学习流程应该是什么样?

  • 目标
    参照制定目标的SMART原则:specific, measurable, achievable, relevant, time-boxed
  • 计划
    继续参照SMART原则,制定短、中、长期计划

  • 执行

    • 打造学习环境

      • 版本管理(git + github)
        能保存历史版本,可回溯任一历史版本,保证可大胆尝试而不怕写坏写废

      • 能提供即时准确的反馈(学习小组、师徒制的优势)

      • 减少干扰

    • 专注

    • 管理知识

      • 养成做笔记的习惯,随时记录想法

      • 建立个人wiki
        收集案例,记录观点,建立信息间的连接
        群友推荐使用gollum,有时间的话试试(参考阳志平老师的网志。另,感觉阳老师是万能的……)

  • 反馈、迭代、改进

4 小结

这本书最让我获益的点:

  1. 德雷福斯模型
    这个模型让我对解决问题能力的差距模模糊糊的感觉和认识,清晰了许多,实实在在看见了问题解决能力之间的差距。借助德雷福斯模型,我更加了解身边的牛人,牛在哪里,而自己跟他们的差距又在哪里。

  2. 模式2与直觉、创造力和专家的联系
    我对这种双加工模式并不陌生,但从来没有把它与专家技能、问题解决和创造力关联起来。冥冥之中,知识跟知识贯穿联系的感觉很奇妙。

  3. 构建式学习,learn by doing
    去年一次自学python的经历,让我意外实践了一把构建学习。当时的目标非常明确(被逼无奈),1-2个月内,编出实验程序,能够用键盘移动屏幕上的物体,能够记录正确率和反应时。在实战中学习的好处是,任务本身会创造需要解决的问题,在解决问题的过程里,掌握新知识。学习者一直处在积极学习,积极发现问题、解决问题的环路里,搭建自己的知识网。若是在平常课堂上学习知识,学习顺序是颠倒过来的,先学习知识,再通过练习巩固知识,这样的学习过程,被动太多,远没有构建式学习,苦中有乐,学得扎实。
    读罢《程炼》,如果让我回到1年前,我会做的改进是:不要独自学习,找到学习小组,找到导师,获得更加即时的反馈(互相吐槽,舒缓下焦虑的情绪,也是极好的)。使用版本控制系统,当时搞了n个.py文档,完全分不清每个文档都做了哪些改动,还不敢删。建立个人wiki,或者以写一本编程入门手册的思路来学习,如果这样做了对概念的理解,对概念之间的联系,应该会更加明晰。

这本书让我比较失望的地方是结构松散,论述也有混乱,有时候找不到小节之间或者论据与中心句之间的联系。实用方法太丰富,以至于想实践都不知道从哪儿开始,这有违‘pragmatic’的宗旨呢!

写读书笔记的能力急需提高,写了整整一天。。。

*. 本书将大脑的两种加工称之为L模式和R模式。L和R很容易联想到左脑和右脑,让人误认为左脑和右脑分工不同,独自工作(尽管作者自己也有在文中澄清,大脑的左右半球是协同合作的)。为避免混淆,这里用模式1和模式2指代者两种模式。