《程序员思维修炼》—— 思维方式和学习技巧

程序设计其实就是解决问题,它需要发明、创造和灵感

《程序员思维修炼》的作者同时也是《程序员修炼之道》的作者,在书中都有体现实用主义的影子。而在本书中,思考的角度则更高。从思维方式、学习能力等角度出发,提出了对不同人有着不同借鉴意义的真知灼见。全书思路发散,图结构而非树状结构的全书脉络让人较难在脑海中一次回忆起全部内容。开头对于专家模型的介绍稍显突兀,而后对R型思维的介绍,包括概念介绍、需要重视和如何培养,思路上比较连贯。整体上还是读者自己形成看法和认识。后面对学习能力、注意力控制等的介绍倒是比较有实用性,可操作性较高。按第一章的专家模型来界定,就是面向新手、高级新手阶段的指令集。书中大脑调试一章对于有心理学基础的读者来讲,聊胜于无。整体来看,也完全可以面向非程序员群体,全书前半段更能开阔视野,后半段更有使用价值。

吐槽一点,把书中对于“情境”一词翻译成“上下文”之后,我读起来舒服了很多。因此下面我也做了这样的“翻译”

下面分章节简单摘录一些闪光点。

绪论

个人理解

写代码是项脑力运动,软件项目运作中,弱点实际上在人,而非机器和代码。因此对于思维上的练习是很有裨益的。

摘录

  • “软件产品处于应用、用户、规则和硬件的合力之下。这些因为总是在不断变化,迫使软件产品也随之改变” ——《没有银弹》
  • 始终关注上下文
  • 有些东西是基础的、各领域相通的。那么必然是存在某些根本和重要的东西。(然而作者没有举例)

从新手到专家

个人概括

人对技能的掌握是可以分阶段的。在低能阶段,更需要固定的指令集,这可以通过培训、手册等手段实现;经过不断的模仿和意外情况以及新手自己的努力总结后,可以一步步进化到高能阶段,这个阶段会偏向按直觉行事,在新手看来就像是magic。对于新手和专家的管理方式一定是不同的,新手更需要规则去避免思考,以及去做标准化;专家更需要自由化的工作环境来避免人为限制。

摘录

  • 专家的很多行为是如此的熟练以至于已经变成无意识的了
  • 德雷福斯模型的5个阶段:新手、高级新手、胜任者、精通者、专家。大多数人都停留在前两阶段。专家的比例极低,需要海量的时间积累。
    • 新手只是要一个立竿见影的目标,他们需要一个指令清单和决策树能按部就班的执行下去
    • 高级新手已经可以根据经验从正确的上下文中采纳建议,但他们没有更高的全局思维
    • 胜任者能建立问题领域的概念模型,并有效的应用
    • 精通者有全局思维,并不断纠正以往不好的工作表现
    • 专家是各领域知识和信息的主要来源,根据直觉行事而不需要理由
  • 任何对开发指定严格规则的方法或企业文化都会拖累专家业绩表现到新手水平
  • 元认知,即自我认知能力,往往在较高的技能层级才会具有,即知道自己不知道什么
  • 积极的实践需要4个条件
    • 一个明确定义的任务
    • 任务具有适当难度
    • 环境能提供大量反馈
    • 提供重复犯错和纠正错误的机会
  • 没有实践就没有技能,先通过模仿来学习进步
  • 要警惕工具中忽视上下文造成的不灵活性,结合实际保证一定的灵活度
  • 培养知觉
  • 学习学习能力

认识大脑

个人概括

人的大脑并没有明显区分出左脑司情感,右脑司逻辑。但是思维模式上却是区分出L(Logic)型和R(Rich)型。L型偏细节、偏实现、偏逻辑;R型偏整体、偏设计、偏模式。L型能帮助你100%解决问题,R型则需要等待idea涌现出来。我们不能因为R型在日常生活或学习工作生涯中较少出现而忽视了它。

摘录

  • L型又叫线性模式,R型又叫富模式。R型对知觉、问题解决和创造性非常重要,L型让你细致工作并实现目标、
  • 两种模式会竞争大脑总线。就像你回忆梦的时候,R型能帮你想象出来;但是想要把梦讲出来时,L型占用了总线,你无法获取到R型记忆了。
  • R型思维不能直接控制
  • 大脑并没有一个中心主管思想,各种想法会分布式的涌现和竞争,不断刷新大脑闪存。只有胜利者能成为你的意识。所以你需要做好准备,记录你随时可能出现的idea
  • 每个人都有好点子,但是你不捕获的话,很容易沉没在脑海里
  • L型处理让人踏实、舒适、可预期;R型则更像直觉,它喜欢综合学习,模式分析,而不愿受理性约束,因为它并不需要基于原因或已有事实来输出结果。因此R型具有直觉性、跳跃性。我们日常生活做出的决定,几乎都不是纯L型或纯R型的结果,比如,你为什么结婚?
  • R型的综合和L型的分析不同。综合意味着脱离细节、在乎全貌。有些任务专注细节反而难以完成,而从全貌出发可能更简单,比如左手画圆,右手画方?
  • 社会和教育鼓励L型,但是R型也是不可缺少的。
  • 一成不变的工作环境不利于大脑发展,丰富的感官机会会更有利。
  • “美学在于选择、共鸣、同化和爱,而非创造”
  • L型看树木,R型看森林

利用右脑

个人概括

R型对于工作和生活是一定有帮助的,先体验对问题有个感官认识,而后上手会更快。有些时候,难题会被意外的灵感解决。R型可以通过一些方式去培养,如晨写来培养找到感觉的过程、或散步沉思来转移L型注意力给R型发挥空间等。我们在日常中会无意识的用到R型,比如类比、隐喻甚至是幽默。

摘录

  • 利用多感官反馈,可以从视觉、触觉、听觉或者其他角度创造多种体验,刺激你的大脑,让它发挥魔力
  • L型思维会符号化感官输入,要创造条件避免这样,比如角色扮演,洞察真实事物
  • R型引入日常工作,可以提高工作效率
    • 先体验去感受模式,一次多感官、亲身实践的上下文更有助于学习。当然,对于没有门槛或者低门槛的活动这么做会更好用
    • 让R型开路,之后L型紧跟,酒醉写作,酒醒修改,综合两种思维模式
    • 结对编程:一个使用R型发现模式,一个使用L型专心实现(比较理想化了)
  • 隐喻是最日常的沟通R型和L型的方式。隐喻的参考系差别越大,创造性的成果就越大
    • 随机并列锻炼联想能力
    • 系统隐喻,使用日常事物去类比代码模型。但是有时很难找到这样的类比
  • 幽默在于在不同想法中制造新奇的联系,也可以锻炼R型
  • 你的大脑会记录所有输入,R型负责组织和模式发现,并随机涌现结果。很多时候,涌现的结果是无法用言语表达的。这个时候,可以利用图像流或者自由笔记
    • 图像流:想象一个问题,观察图像,大声描述出来,努力用各种感官去想象
    • 自由笔记:去写作,不要分心
    • 晨写:让无防备的大脑倾倒想法
    • 利用散步:使用散步,比如在树林或公园等安全的环境里随便走走,做到心不在焉,让R型自己工作。
  • L型是命令性的,主动工作;R性则不能被命令,只能去邀请
  • R型除了帮助你形成想法,还能帮你发现模式。如代码、神谕
  • 尝试新鲜事物,锻炼大脑

调试大脑

个人概括

人的大脑因为进化原因,是有些先天“缺陷”的。你需要了解它们避免决策时的误差。这些“缺陷”在心理学领域的书籍中会有更加详细和科学的介绍

摘录

  • 人具有认知偏见,如思维定势、基本归因错误、自我服务偏见等
  • 大脑处理现实复杂性的方法就是把庞大、复杂的系统符号化为简单易操作的对象。这也使得人类非常不善于从过去的事情推断未来的事情。我们总是假定事情是一个稳定和线性的递进,然而现实是非线性的。
    • “很少”不意味着没有,黑天鹅事件总会发生
    • 过早下结论
  • 重视上下文:认清时代影响,一个人的特性可能和其时代有关。
  • 了解个体倾向,每个人有不同的性格特征,你无法改变别人
  • 记住你是高级动物,在一些时候,避免大脑中进化而来的低级动物逻辑。比如见样学样,非好即坏。
  • 如何避免认识误差:自我辩论,如果你认为自己已经明确一些事情,尝试解释一下它的反面

主动学习

个人概括

学习能力是可以有一些可量化可落地的手段去提高的。首先,学习一定是个主动的过程,你需要明确自己的目标(可以使用SMART模型),建立自己的学习计划。找到更适合自己的感官模式。之后有一些具体的手段,比如小组学习SQ3R思维导图写文档以教代学

摘录

  • “大脑不是一个用于灌输的容器,而是一束需要点燃的火焰”
    • 学习需要你自己主动做
    • 仅仅掌握知识,不去实践,没有用
    • 需要有目标和反馈去纠正效果
  • SMART帮你明确目标
    • Specific,Measurable,Achievable,Relavant,Time-boxed。
    • 具体的:不能只是简单的想法
    • 可度量:可以量化
    • 可实现
    • 相关的:需要能在你掌控中
    • 时间可控的:需要有deadline
  • 时间是无法创造和销毁的
  • 要有知识投资计划,就像理财一样
    • 设定目标
    • 多样化投资,考虑风险和回报率
    • 主动投资
    • 定期投资:养成一种习惯
  • 总有一种感官模式更适合你:视觉、听觉、动觉
  • 成人更适合小组学习,大家一起学习,相互促进,互相学习,学得更有效
  • 相比经验式学习,阅读是一种效率极低的学习方式,SQ3R让阅读更有效
    • Survey、Question、Read、Recite、Review
    • 概览:粗略阅读目录,形成整体印象
    • 问题:搞清楚你想弄明白的问题
    • 阅读:困难的地方可以放慢速度
    • 复述:合上书本,用R型记忆感受,用你自己的语言复述内容
    • 回顾:重读,扩展笔记,和人讨论
    • 这个方法也可以用来初高中学习
  • 根据遗忘曲线,可以定期回顾来增强记忆
  • 思维导图提供了更高的自由度来表现关系,更有助于增强连接,获得更多感悟
    • 绘制思维导图时可以不容那么认真
    • 手写是关键,动觉可以帮助你在视觉外刺激大脑,加深记忆
    • 探索性的思维导图:想到哪儿画到哪儿,然后再整理,发现模式
  • 写文档的过程比写文档更重要
  • 以教代学可以考验你是否真的理解了,同时解释过程中的隐喻可能会让你有新的收获。
    • 在给聪明人解释时,对聪明人挑毛病的顾虑也是一大动力

经验积累

个人概括

实践是学习中必不可少的一步,如何更有效的从实践中学习也有些诀窍。

摘录

  • 经验主义:通过实践来构建认知,而不是通过学习来灌输。
    • 让学习更有趣味性
  • 波利亚的解题法:先确认已知量、未知量、上下文环境。然后有些方法
    • 努力回忆类似未知量的问题
    • 画图
    • 是否用上所有已知量和条件
    • 换一种问题描述方式
    • 从未知量推到已知量
  • 一个高效有益的学习环境应该允许你安全和方便地做3件事情:探索、创造和应用
    • 在编码领域,这意味着,至少要有版本控制单元测试项目自动化
  • 失败分两种,其中没有产生任何知识的失败会阻止我们学习
  • 上下文反馈是一种内在诀窍技术,其让学习者关注于非常简单的反馈循环,避免向学生传授一长串指令,从而形成一种意识,来纠正学生的学习表现。这种意识是非判断性的。内在诀窍的理念关注反馈,以此增长专业知识。
  • 面对时间压力时,人会缺乏创造性。要允许失败。建立允许失败的领域。
  • 参加一个周围都是专家的会议或聚会时,你的能力也会有提高。我们是天生的模仿者,把自己想象成专家甚至也有效果。可以想象实践并从中学习,会如同真实体验一样有效

注意力控制

个人概括

在信息化社会,过滤信息,管理注意力会提高你的工作效率。一方面要注意积累,管理好个人知识体系;另一方面要管理好自己的上下文,避免频繁切换,保持一个大的上下文环境,不管是物理上的还是软件上的。

摘录

  • 时间是你自己分配的,并不是我们没有时间了,而是我们的注意力不够
  • 着眼于现在,没有任何分心,没有任何自言自语。缓和L型嘈杂的声音带来的痛苦。
    • 冥想:学习集中注意力。在冥想中,会沉浸到一种宽松的思维状态中。在这里你可以意识到自己和你的上下文,不用做出任何判断和回应。在这种风格的冥想中,需要做的只是注意自己的呼吸。不要与自己交谈,保持清醒。
  • 在过度几种后,可以有意识地忘掉问题,让问题在思维中“浸泡”一会儿。注意把浸泡和拖延分开。
  • 使用wiki管理自己的知识体系
    • wiki页面间的相互链接会形成自然的知识体系和模型
  • 维护上下文的成本时昂贵的,要较好地管理
    • 避免大脑频繁切换上下文,这样会提高错误率。在深入进行的任务被打断后,需要10~20分钟的时间找回状态
    • 远离会打断思路的工具,比如即时聊天或者邮件
    • 利用外部缓存维护清单,如纸片或多窗口,只在大脑里存储“指针”
    • 切换时,可以做一些记录,方便切换回来
    • 保持足够大的上下文,比如所有信息都放在桌面,或使用多窗口维护上下文栈
    • 管理好你的多窗口

超越专家

人们看却没有看见,听却没有听见,吃却没有味觉,接触却没有触觉,说话却没有思考. —— 达芬奇

摘录

  • 现在就开始动手吧
    • 有私人wiki,建立知识图谱
    • 给思维放个假,让散步成为生活的一部分
  • 专家容易见怪不怪,要避免这样

–END–