《程序员的思维修炼》读书笔记
从新手到专家
what
- 新手需要指令清单;
- 高级新手不需要全局思维;
- 胜任者能够解决问题;
- 精通者能够自我纠正;
- 专家凭直觉工作。
why
局部 ==> 整体。
专家倾向于使用直觉提出方案和解决问题。
how
摒弃「我只是执行命令」的想法,承担起一定的责任;
保持实践,编程专家必须持续编程。
认识你的大脑
大脑CPU的两种处理模式:L型和R型。
我们需要更多地使用R型。R型的类比和整体思考方式对软件架构和设计非常有价值,好的设计就是由这些组成的。
当我们集中注意力去解决问题的时候,L 型思维独占的问题就更为严重,以至于在面对艰难的、无前例可循的问题时,耗费大量的时间往往也无法解决。而灵感通常是在某个瞬间突然出现,且转瞬即逝,这就意味着我们需要时刻准备记录这些极具价值的 R 型思维产物,并及时地实践它。
正确使用大脑(利用右脑)
- 涂、写、划、画
- 醉酒写作,酒醒修改
- 完美主义妨碍你创建较差的草稿初案
调试你的大脑(了解思考中的缺陷)
- 思维定势:先前的见闻会影响到我们之后的决定。
- 基本归因错误:我们倾向于把别人的行为归因于他们的个性,而不考虑行为发生时的情形。
- 自私的偏见:乐于接受成功的分赏,却拒绝承担失败的责任。
- 需要定论:对疑惑和不确定性感到格外的不舒服。强行指定「项目截止时间」、「项目细节方案」等本就难以全部确定的事情。与其说这是一种严谨,不如说是一种逃避和自我掩饰。
- 认可偏见:依据自己的成见和喜好来选择相应的事实。
- 曝光效应:我们往往只因为非常熟悉某些事物而对它有所偏爱,即使这些「熟悉的事物」已经不再好用。
- 霍桑效应:人们知道自己正被审视时,往往会改变自己的行为,但这并不能成为常态。
- 虚假记忆:大脑可能会混淆想象、暗示、以及真实发生的事。
- 括号简约谬论:在使用符号代表一个复杂系统时,可能会丢失必要的细节。
- 名词谬论:以为使用标签或符号进行抽象就可以完全了解事物。
主动学习
目标明确(SMART)
- S 具体的
- M 可度量的
- A 可实现的
- R 相关的
- T 时间可控的
主动阅读
- 调查(Survey):扫描目录和每章总结,得出总体看法;
- 问题(Question):记录所有问题;
- 阅读(Read):阅读全部内容;
- 复述(Recite):总结,做笔记,并用自己的话进行描述;
- 回顾(Review):重读,扩展笔记,进行讨论;
使用思维导图
重视文档
以教代学
付诸实践
积累经验
通过实践的方法学习,效果最好。积累经验是学习和成长的关键,积累经验就是使得每次实践都有意义。
正确对待实践中的失败:“我不知道”是一个好答案,但不要就此止步。
在采取纠正行动之前完全知道“这是什么”对于调试非常重要。太多程序员(包括我自己)往往在没有完全明白真正的错误是什么之前就着急修正它。匆忙地作出判断或者过早地进行修补。你需要首先完全明白系统的原理,然后再判断哪部分错了,最后提供解决方案。
控制注意力
过多的信息导致了知识和注意力的匮乏,很容易失去思考的重心。与其不加条件的接受各种信息,不如主动管理思维和注意力。过滤掉身边大量的无用信息,才能够持续专注和提升。
积极地管理干扰。
超越专家
真正的发现之旅不在于追求新大陆,而在于拥有新的视野。新手的大脑有很多可能性,但是专家心里只有很少了。超越专家,就是要追求空杯心态,不忘初心。