程序员的思维修炼
本文是《程序员的思维修炼 开发认知潜能的九节课》的笔记。
第 1 章 绪论
程序设计其实就是在解决问题,它需要发明、创造和灵感。对于程序员来说,既要受到计算机系统的严格约束,又要发挥丰富而灵活的人类思考。软件开发是人类可以想象和遇到的最艰难的工作,它的复杂性耗费了我们全部的智慧。
软件并不是在 IDE 或其他工具中设计出来的,而是在我们的大脑中想象和创造出来的。
关注场景
万事万物都是相互联系的:自然界、社会系统、你内心的想法、计算机的逻辑。所有的事物构成了一个庞大的相互联系的现实世界。没有事物是孤立存在的,一切都是系统和更大的场景的一部分。
现实世界的相关性是非线性的,具有不成比例的影响作用,小的事物可能会有意想不到的巨大影响。
系统思维:在系统思维中,人们视图将一个事物看作几个系统的链接点,而不是一个独立的个体。
始终关注场景!!!
不同领域的事物有不同的表象,如果有相通之处的话,那么其实是一个信号:在如此众多的不同场景下却拥有类似的思想,那么必然存在某些根本、重要的东西。
书的章节是按顺序依次排列的,但这些章节却是相互关联的,面对一本按顺序写成的书时,不容易领悟这个观点。
实践单元:
认真思考一下你项目当前的问题,能指出它所涉及的不同系统么?这些系统是如何交互的?这些交互点是否与你当前的问题有关呢?
找出场景中,导致你的问题出现的三个因素
在你的显示器周围,贴上一个 关注场景 标签
第 2 章 从新手到专家的历程
德雷福斯模型 Dreyfus model
: 研究如何超越新手层次、如何不断精通技术的有效方法。成为一名专家的要素:应用你自己的实践经验、理解场景、利用直觉。
制造问题的思维方式,无法用来解决问题。 -- 爱因斯坦
从新手到专家要经历巨大的变化。在这个过程中,人们不只是要 知道更多 或者 获得了技术,而且还在如何认识世界,如何解决问题,以及如何形成使用的思维模型等方面体验到根本性的区别。
敏捷开发:在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。但是基于以往的表现进行自我纠正,只在较高的技能水平上才能实现。
德雷福斯模型具体针对单项技能。
新手到专家的 5 个阶段:
新手: 需要一个场景无关的指令清单(当 X 发生时,执行 Y...)才能工作,比如填报纳税单,或做菜时 需要参照 菜谱,他们不知道自己的行为是对还是错,只是想实现一个立杆见影的效果。
高级新手:他们能根据过去的经验,逐步在正确的场景中采取不同的建议,开始形成一些总体规则,但不是全貌。没有全局思维。
胜任者:能够建立问题域的概念模型,并有效地使用它们。能独立解决自己遇到的问题,并开始考虑如何解决之前没有遇到过的问题。他们的工作更多的是基于谨慎的计划和过去的经验。如果没有相关经验,在解决问题时,将难以确定关注哪些细节。
精通者: 有全局思维,寻求了解更大的概念框架,能够纠正以往不好的工作表现,会反思自己以前是怎么做的,并修改其做法。会学习他人的经验,能够阅读案例研究,倾听关于失败项目的总结,观察他人怎么做,从事故中学习,即使他没有亲自参与。
专家:专家是各个领域知识和信息的主要来源。他们总是不断地寻找更好的方法和方式去做事。他们有丰富的经验,可以在恰当的场景中 选取和应用这些经验。
从新手到专家的转变,脱离独立和绝对化的规则,进入直觉的境界,并成为系统的一部分。
实践单元:
自我评价。你的各项技能处于模型的什么位置。列举目前的技能水平对你产生了什么影响。
辨别哪些技能是新手应具备的,哪些是高级初学者应该具备的。
对于每项技能,判断你需要做些什么才能提高一个级别。
回想一下在团队中经历的问题。如果团队知道上述模型,这些问题可以避免么?
想一想你的同事:他们处于哪个技能水平?对你有何帮助?
第 3 章 认识你的大脑
人脑模型可以类比成,双 CPU、共享总线设计。
CPU-1:负责线性、逻辑思维 和 语言处理,它按部就班地处理命令。 L 模式。
CPU-2: 不再是线性地、按部就班地方式,而像 Google,是一个超级正则表达式的搜索引擎,负责处理搜索和模式匹配。它可能会抓住不明显相关的匹配模式。当你 使用 1 号 CPU 时,它还是可以去搜索,然后异步地返回结果集。由于 2 号 CPU 不做任何语言处理,意味着它的结果也不是语言可以表达的。R 模式。
R 模式对直觉、问题解决和创造性非常重要。 L 模式让你细致工作 并实现目标。
R 型对日常工作非常重要,它好比针对长期记忆 和 进行中的想法的搜索引擎。图像、情感和整体体验都是 R 型的。你可以立刻认出大量熟悉的人的面孔,无论他们是否改变了发型、穿着或肥了 10 斤 或 过了 20 年。但是你能建立一个数据库来存储所有你认识的人的脸部数据、并依据这些数据来识别这些人么? 不能,因为这是一种伟大的能力,它不是基于文字的、语言的、L 型的。
R 型的结果是异步到达的,比如一个棘手问题的答案(或者某个遗忘的名字)突然在你洗澡的时候 或 某个你没有思考这个问题的时候 突然出现在脑海里。
R 型多是不可预测的,你需要为此做好准备。答案和灵感会独立于你的意识活动出现,而不总是在恰当时候。当你得到一个价值百万美元的伟大想法时,你可能并不在计算机旁。这意味着你需要随时准备记录想法:
手机、录音机、记事本等随身携带的东西。
如果你不记录这些伟大的想法,你就不会知道你拥有过它们。
L 型提供的能力:
语言能力,使用词语来命名、描述和定义
分析能力,有理有节地分析事情
符号能力,用符号表示事物
抽象能力,抽取小部分信息,用于表示事物整体
时间能力,遵时循序
推理能力,基于理智 和 事实 推算出结论
数字能力,使用数字进行计数
逻辑能力,基于逻辑(定理、明确的论点)得出结论
线性思维能力,按照关联、依序推演问题和思考,经常会得到收敛性结论。
上述能力显然是,信息工作者、工程师最渴望的本领。上学时测试的就是这些能力,工作中使用的也是这些,并且它们非常符合我们的计算机系统。
R 型处理特点:
非语言
非理性
综合
空间性
具体
直觉
分析
全面
R 型注重整体、感知整体的模式 和 结构。R 型提供直觉,这是成为专家的关键。专家依赖观察 和 区分模式。
R 型的 类比 和 整体 思考方式 对软件架构的设计 非常有价值。面对复杂的设计问题 或者 难以修改的 bug, 优秀程序员通常有冲动去 编码 和 构建原型,由此可以从中学习,这是 R 型的综合 而不是 L 型的分析。综合学习是非常强大的。
想要真正了解一只青蛙,传统的解刨不是办法,更好的方式是构造一只青蛙。通过构造一个具有青蛙特征的生物,可以真正了解到,什么使青蛙之所以为青蛙,以及青蛙如何适应特定环境。
实践单元:
列一张清单,写下你喜欢的软件 和 失望的软件。美学因素在你的选择中起了多大的作用。
考虑工作和生活的哪些方面使用了 L 型 和 R 型。它们均衡么?如果不均衡,你该如何做?
随时记录自己的想法
努力学习一种新 事物, 通过综合 而不是 分析。
尝试不使用键盘 和 显示器 来设计一款 软件。
第 4 章 利用右脑
你需要让 R 型打头阵,去感知,然后转到 L 型 去生产出来。例如,使用类比方法来解决关联性、理论性的问题,然后使用分析法来验证你的想法。
如果学习没有全局的概念就视图记忆细节,那么学习就会陷入僵局。
不要太着急。解决问题时,学会轻松面对不确定的事情。进行创造时,坦然面对荒谬和不切实际的东西。学习过程中,不要太迫于学会和记忆,首先只是适应它。试着理解其意思,掌握主旨思想。然后采取 L 型活动,走到下一步。
R 型思维方式对获得平衡、有效的方法来解决问题,并提高创造性至关重要。你不能单独使用 R 型或者单独使用 L 型。相反,你需要组织学习和思维过程以支持 R 型 到 L 型 的转换。
开始追寻细微的线索,收获 R 型的现有输出。通过类似晨写、写作和非目的性思维时间(散步)等技术增加 R 型 工作的机会。
由于记忆是一种脆弱 和 昂贵的机制,请随时准备记录下 R 型输出的精辟领悟,不论何时,不论何地。
实践单元:
坚持晨写至少两周
培养快速地洞察能力。寻找不相关事物之间的关系或类比。
面对难题时,引入更多的感官,哪些对你而言最有效果?
阅读一些有别于平常的东西,比如小说
尝试不同类型的电影、假期、音乐或者咖啡
点一些你喜欢的餐馆里从未吃过的菜
逆向思维,你会看到什么
什么单词可以加入到你的工作词汇中?
想想能否用一个隐喻或一套隐喻来大致描述你当前的项目?或使用隐喻或者夸张的手法来说一些笑话。
第 5 章 调试你的大脑
在人类思考中存在许多 已知的缺陷:
个人认知偏见
时代及同时代人的影响
固有的个性
甚至是大脑底层的生物性缺陷
了解这些缺陷是消除其影响的第一步。
认知偏见
思维定势
基本归因错误,我们倾向与把个人的行为归因于他们的个性,而忽略了当时的情景,处于极端情景下,人会做出违反个性的事(杀人、偷盗)
自私的偏见,项目的成功是我的功劳,项目失败与我无关
需要定论,我们对不确定性感到不舒服,强行给出不成熟的定论,会迫使你易于犯错
认可上的偏见,每一个人都根据自己的喜好和成见来 选择相信的 事实
曙光效应,我们往往只因为非常熟悉某些事物(不再好用的工具、技术和方法),而对它有所偏爱。
霍桑效应,人们知道自己被审视时,往往会改变自己的行为,当审视结束时,又会默默回到原来的状态
虚假记忆,大脑很容易将想象的事件与真实的记忆混淆。记忆在大脑中不是静态写入的,每次读取记忆都是一次写入,而且会根据当前情景被不断地重写:年龄、经历、世界观、关注焦点等。
符号简约谬论,L 型非常乐于提供一个快速的符号,来表示一个复杂的对象或系统,这至少丢失了细节,有时甚至是事物的真相
标签谬论,以为给事物贴上标签,就可以解释或者理解它。但是标签只是标签,单靠命名不会带来任何有益的理解力
科学研究很容易被误解,因为大多数人不善于统计分析学。最普遍的一个误解是把相关性说成因果关系。仅仅因为两个变量相关不能认定其中一个是因,而另外一个是果。比如高压电下面的家庭的白血病发病率更高的报告。
推迟下结论:过早地下结论,减少了你的选择,甚至可能消除了成功的选择。做探索性或者创新性项目时,一般每天你都会学习一点新知识。你会逐渐了解用户、项目本身、团队和技术。这意味着你会在项目末尾达到智力顶峰。顶住压力,你会做出决策,事情会解决,只不过不是今天。
实践单元:
列举你所具有的认知偏见。我们都有自己的问题,哪些是你特别容易犯的?
留意一下,你在自己的工作生涯中目睹过多少次及其不可能的事件发生。事后看来,它们有多么不可能呢?
保留工程师笔记,包括设计会议、编码问题和解决方案 等等。每次返回去要用的时候,在较早的条目上做一标记。
认清时代影响
避免你所处时代的的偏见,最好的方法是保持多样性。如果你和你团队思考问题的方式相似,你可能会认为你们的集体观点唯一正确。
实践单元:
确定你出生与哪一时代。那些相应的特征与你相符吗?另一时代更相符?
确定你同事所属的时代。他们符合或者违背你的价值观么?
想一想软件开发方法论的历史。你能看到随着时间推移有一种趋势与每一新生时代的价值观相符么?
了解个性倾向
外向 E 与 内向 I
感觉 S(强调可行性和事实,完全基于当时的细节) 与 直觉 N(潜意识做出判断,跳跃性思维)
思考 T 与 情感 F
判断 J 与 知觉 P 你是快速做出判断?还是持续感知?
一种外向、感觉、情感和知觉的 个性就是 ESFP
,而 内向、直觉、思考、判断的性格就是INTJ
实践单元:
做一下性格测试,与你的同事和家人相比,结果如何?你认可结果么?
假装你是每条轴线上完全相反的类型。对那种类型的人来说,世界看上去是什么样子的?你会如何与他们相处?
如果你还没有做,那就试着同那些与你性格相反的人交往。
低层次的大脑关联,蜥蜴逻辑:
战斗、逃跑或恐惧:当你正在做陈述时,忽然有人针对你的工作提出了一个尖锐的问题,此时意识会被立刻唤醒,准备开始战斗或者逃跑、或是恐惧
立刻行动:没有思考和计划,只是跟随着你的冲动,关注最令人兴奋的东西 而不是重要的东西,比如 回复邮件、即时消息 或者上网,这些总比真正的工作要好玩
领头意识,拼命称为领头人,这样你就可以任意对待手下人
守卫领土,绝不共享信息、秘诀、技巧或者办公空间,无论它多么微不足道
收到伤害,愤愤不平:不努力解决问题,而是花费精力来责怪别人,只要有可能就大喊大叫,让所有人都知道 这是不公平的
像我这样 == 好,不像我这样 == 坏
蜥蜴式的行为是固有的大脑关联,不是较高层次的认知思维过程。思考需要时间,而蜥蜴式的行为则要迅速得多,也不需要多少努力。
实践单元:
当感觉有威胁时,你要用多长时间才能克制最初的反应?一旦进行 思考,你的反应会有什么变化?
依照冲动行事,但不要立刻做。给冲动想做的事情定一个计划,安排好时间。稍后来看,它还有意义吗?
写一部新电影。如果你被脑海中不断重播的电影所困扰,坐下来重新设计一个大团圆结局。
微笑,与抗抑郁药物一样有效
当你坚信某件事情时,问问自己原因。你确信老板在报复你。你怎么知道的?每个人都在应用程序中使用 java, 谁说的?测试你自己:
你怎么知道的?
谁说的?
有什么特别的?
我的做法会如何影响你?
与什么或者谁比较?
这总是发生么?你能想到一个特例么?
如果你这样做了 会怎么样?
什么阻止了你?
你有衡量的指标么?是不是心中有数?有统计数据么?当你和同事讨论时会怎么样?如果同事的观点与你完全不一样会怎样?他们会被动接受么?这是一种危险信号么?他们强烈反对么?这增加了可信度么?或者相反?
实践单元:
当发生冲突时,考虑基本性格类型、不同年代的价值观、你的偏见、别人的偏见和情景。通过思考更多因素,是不是更容易解决冲突?
仔细检查你的立场。你是如何知道 你所知道的?什么使你这样认为?
第 6 章 主动学习
如何改进学习能力?
做计划、思维导图、阅读技巧、教学和写作的认知重要性。拥有这些技能后,你将会更快、更容易吸收新的知识,获得更强的洞察力,更好地融会贯通新的知识。
学习是什么?不是什么?
学习不是强加于你的,而是需要你主动做的事情。
仅仅掌握知识,而不去实践,没有用。
随机的方法,没有目标和反馈,往往会导致随机的结果。
一旦我们抓住要点,我们必须互相鼓励,彼此互动交流,利用记忆指导我们最初的想法,接受别人的说法,并将其作为一个起点,一个需要孕育和成长的种子。大脑不是一个需要灌输的容器,它应该是需要被点燃的火焰,只需要点燃,它就能激发出人们的创造力,并逐渐使其产生对真理的渴望。
知识本身(公式、框架)并不重要。大脑构建的模型、为构建模型所提出的问题 和 你日常经验实践更重要,它们才能提高你的竞争力 和 专长。仅仅掌握知识是 不够的。
SMART 目标
SMART : Specific
具体的、Measurable
可度量的、Achievable
可实现的、Relevant
相关的、Time-boxed
时间可控的
具体的,我想学习 C++ -> 我想使用 C++编写一个 Web 服务器
可度量的,稳扎稳打,推算自己每天的学习内容。写一部小说就像在黑夜里开车,你只能看到车灯照亮的部分,但是你却可以走完全程。
可实现的
相关的,这个目标对你重要么?与你有关么?你对此有热情么?是在你控制之下的事情么?
时间可控的,这是目标最重要的一个特性,意味着你需要设定一个最后期限,没有期限的目标,会衰退,永远被更紧急的事情所排挤。
建立一个务实的投资计划
现在你已经有了很好的目标,你需要一个计划帮助来实现它们。
我们把技术和才干看作一个知识投资组合。也就是说,你学习的技术和掌握的知识都变成了你投资组合的一部分。就像任何投资一样,都必须时刻进行管理,关注回报率。
不要把学习活动流放到 空闲时间,不要想着:等到有空时再花时间学习一门新语言 或 新数据库。这等同于失败。很快你就会发现,事实上你没有任何 空闲时间,时间是无法创造和销毁的。时间只能被分配。主动安排你的学习,分配合适的时间,聪明的使用时间,你可以更有效率。
管理你的知识投资:
制定具体计划,做计划 比 计划本身是什么更重要
多样化,考虑风险 和 投资回报率,比如把时间投在 Java 上风险低,但就业岗位有大量竞争。而刚诞生的 Rust 语言可能流行,也可能不流行,风险很高。时间和价值不是等值的,尽管在某事上花了大量时间,并不意味着能给你的知识投资增添价值。
主动投资,主动寻找值得学习的目标
定期投资,定期安排学习计划,比如一周
实践单元:
写下现在、短期和长期的具体目标
增加两个新的学习领域,让你的知识投资变得多样化
每周设定时间来实施知识投资
设置提醒,让自己定期、阶段性地重新评估投资计划。哪些发生了变化,哪些已经没有意义,现在你要做什么?
使用你的原始学习模式
学习者分类:
视觉型:需要看到学习资料,图片和图表 很有效
听觉型:需要听到学习资料,讲座、研讨会、播客都很有效,他们对语气、语速和其他细节都很敏感。
动觉型:通过活动和触摸来学习,需要亲身感受学习材料,需要通过动手来学习
智力因素:
身体-动觉:体育、舞蹈、DIY 项目、木工、工艺、烹饪
语言:口头辩论、讲故事、阅读和写作
逻辑-数学:数学、数字、科学、分类学和几何
视觉-空间:使用图表 图解 素描 绘画 和 图像操作
音乐:演奏、识别声音、节奏、模式、记忆标语 诗文
人际:情感共鸣、感觉、意图、他人的激励
自我认知:自我反省、了解内心世界、梦、与他人的关系
实践单元:
想想你最强的智力因素:哪些因素在工作中用的多?你的最强因素和你的工作匹配么?
哪些因素你用于爱好?是否没有很好地利用某些很强的智力因素?你能找到方法来应用它么?
如果存在不匹配,你如何弥补?
SQ3R 法主动阅读:
调查(Survey):扫描目录和每章总结,得出总体看法。
问题(Question):记录所有问题,写下你想要弄明白的所有问题。这项技术如何解决这个问题?我是要学习如何使用这项技术么?把各章节的标题改写成问题,这些都是你期望这本书回答的问题。
阅读(Read):阅读全部内容
复述(Recite):做总结,做笔记
回顾(Review):重读,扩展笔记,与同事讨论
思维导图:
最有效的方法是在听讲时做笔记,然后把这些草稿笔记整理成 正式笔记。即是再也不会回顾这些笔记,但整理草稿笔记的过程是最有价值的。
以教代学:
和橡皮鸭聊天
实践单元:
选择一个新主题,尝试教给一个同事或亲戚,你从教学中学到了什么?从准备中又学到了什么?
认真听取发言。做一个相关的思维导图。你会添加什么?你会有所不同么?基于你的思维导图写一个用户组的评论文章。
把你的文章写道杂志或者博客上
第 7 章 累积经验
实践出真知,累积经验是学习和成长的关键。但单纯的实践并不是成功的保证,要从实践中学习其中的价值。研究如何利用反馈、乐趣和失败来创造更有效的学习环境。关注设定最后期限的危害,并体会如何通过自我引导累积经验。
积极的实践:
需要一个明确定义的任务
任务需要有适度的难度
任务环境可以提供大量反馈,以便你采取行动
提供重复犯错和纠正错误的机会
真正的学习,来自实践和认知,而不是外部的教学活动 或者 死记硬背。
实践单元:
面对下一个问题时,把自己融入其中。拟人法有助于利用体验。
在深入事实之前,探索和适应问题。在吸收正式的事实之后,反过来进行更多的探索。这是持续循环的过程。
玩耍,记住并利用它的全部含义。
波利亚的解题方法
解决问题时,先提问自己:
已知量是什么?
未知量是什么?
条件是什么?
然后制定一个计划,执行它,以下是一些技巧:
努力回想拥有相同或类似未知量的常见问题
画一张图
解决一个相关的或者更简单的问题,放宽限制,或者使用已知量的子集
所有已知量和条件都用上了吗?如果没有,为什么?
尝试重新叙述这个问题
尝试从未知量推到已知量
正确的面对失败
错误有益于我们,价值在于从错误中学习,让我们思索到底发生了什么,知道什么地方错了,然后通过理解,纠正它。
我们要管理好失败,建立一个允许失败的探索环境:
自由实验,很少问题只存在唯一最佳答案。
能够原路返回稳定状态(Git 版本管理)
重现任意时刻的工作产品 (Git 版本管理)
能够证实进展,如果没有反馈,你将一无所获(单元测试、自动化)
失败分两种。一种失败对我们有益,可以从中学到东西。另一种对我们无益,它没有产生任何知识:它要么一开始就阻止我们学习,要么中途毁了我们的学习。
内在诀窍理论:避免向学生传授一长串指令,而是教学生一种意识,并使用这种意识来纠正学习表现。意识是一种超越新手层次的重要工具。
压力:当大脑受到压力,它会主动停止一些思考,眼界会缩小,不再考虑可能的选择。面对压力时,我们需要学会放松。
允许失败:一旦你被允许失败,你就不会失败,没有了压力之后,你可以集中注意力,非常放松地表演。如果知道即是失败了页没有很大的代价,比如允许单元测试失败、在白板前头脑风暴写下所有疯狂的想法、设计原型等等,在软件项目中建立 允许失败 的地带。
利用大脑模拟成功,想象自己成功 是一种 达到成功的有效方法。光是模仿所在领域的 名人,就能提高我们自身的水平。比如 模仿他们的代码。
实践单元:
下一次面对困难局面时,请记住:尝试会失败,认知会弥补。停下来,首先完全弄明白问题在哪里。
为失败做计划,要知道,如果犯了错误,也没关系。看看这是不是有助于减轻压力 和 提高表现。
成为专家。不要只是假装,要真正地扮演专家角色。这么做会改变你的行文。
考虑你需要哪类脚手架 来体验专家经验,看看你能否安排好
第 8 章 控制注意力
我们生活在信息丰富的时代,如何管理要学习和实践的大量知识、信息 和 见解。如何优化自己当前所处的场景,如何更好地处理烦人的打扰。
增强注意力
沉浸到一种宽松的思维状态中,在这里你可以意识到自己 和 你的情景,不用做任何判断和回应。内观冥想,那一刻你意识到某些事情,但是没有额外的思考,顺其自然。
寻找一个安静的地方,摆脱干扰或中断
舒适、清醒地坐着,挺直背。身体放松,花点时间感受体内的任何紧张情绪,将其释放。
闭上眼睛,将注意力集中在呼吸。
注意呼吸节奏,感受呼吸。
将思维集中于呼吸。不要说话。不要描述呼吸,或有任何其他想法。不要与自己交谈。
你可能会发现自己在思考一些问题,或在与自己交谈。每当你注意力游荡开去,就要抛弃这些想法,轻轻将注意力回到呼吸上。
即使你的思维经常游荡,这个练习能使你发现你的注意力在游荡,并且每次都能自己回来。
不要睡觉,你需要放松身体和平静你的思维,但是要保持清醒,事实上,你要非常清醒地专注在呼吸上。
管理你的知识
想法、见解、原始信息 和 知识,分清它们的区别,增强你的处理能力。
开发外部信息处理系统,大脑之外的思维支持工具会成为你 思维头脑 的一部分。
优化当前情景
情景,这里指的是,加载到你的短期记忆里的有关你手头工作的信息集合。如果有事物中断我们,打破我们的工作流,或导致我们分散了注意力,那将一切思路恢复到原状的代价是非常昂贵的。不惜一切代价,避免情景切换。
写代码的时候,避免自己被打断。
有效处理工作:
只扫描邮箱、即时通讯 工具一次,不要不断地回顾
顺序地处理工作,不要交替进行,避免情景切换
不要在头脑中保留 待办清单,而是保存在 云笔记、记事贴、或专门的工作清单工具。
积极地管理外部的干扰:
和团队约定,不能被打扰的时间段
关闭各种信息通知
保存情景堆栈,为被打断做好准备,在 云笔记上 记下正在工作内容,以及接下来要做的,被打断后回来,可以快速恢复现场。
实践单元:
想一想日常让你分心的事情,有没有办法组织一下,从而无须额外的分心就可以搞定它们
想清楚你何时编码最有效率,在那段时间要减少分心的事情。
跟踪 拖延 和 思考 的时间,不要混淆
你有多容易被 拉走 或者 主动 拉走自己 -- 从工作中?为了更易于集中注意力,你能使自己难以被拉走么?
观察团队里的专家,他们是如何避免分心的。
第 9 章 超越专家
为何改变自己会比想象中困难?
当你决心改变时,大脑不一定会与我们合作。虽然你有学习的意愿,但你的大脑认为这项改变不值得付出感情、无关生死存亡,它就会轻视。因此,你必须说服你的大脑,这项改变非常重要。
老习惯就如同在大脑形成的高速公路,你无法拆毁它,并且它总是在等待你回来,我们要做的是建立新习惯,在旁边修起更好的高速公路。
管理有效改变的建议:
指定计划
不作为 是敌人,错误 不是
给新习惯适应的时间
信念是真实存在的
采取步步为营的细小步骤
对于新的尝试,都有一定惯性阻碍它,如果我我处于静止状态,我会倾向于保持当前状态。转向新的方向意味着我必须克服惯性的阻力。下面是一些建议:
开始承担责任,不要害怕问 为什么,也不要害怕问 你是怎么知道的?大方地回答 我目前还不知道。
挑两件帮你维持情景,免收干扰的事,立即实施
创建一个实用投资计划,设定 SMART 目标
弄清你的技能所处的位置(从新手到专家)和你期望的位置。
实践。某段代码遇到问题了么?尝试用五种不同的方式编写。
允许犯更多错误
随身携带一个笔记本
打开心扉,接受美感 和 其他感官的收入
开始在私人博客上记录 你感兴趣的事情
让散步成为每天生活的一部分
启动一个读书小组
使用两个显示屏幕
超越专家
新手的大脑有很多可能性,但是专家心里只有很少。
人们在某些语言上投入很大,比如Java
或者C++
。他们取得了认证,并且背诵了 API 和工具书籍。然后一些新的编程语言出现,让他们写更简洁、更直观的代码、更彻底的测试、更容易实现的并发,等等。但是他们拒绝这些新语言,反而会花更多的时间去讽刺新语言,而不是严肃的评估对它们的需求。