程序员的思维修炼


【美】Andy Hunt

第1章 绪论
2018-09-18
Brooks的言论把我们推向了社会漩涡的中心。考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是:
沟通能力;
学习和思考能力。

1.1 再提“实用”
2018-09-18
切忌随波逐流。
Only dead fish go with the flow.

1.2 关注情境
2018-09-18
一切都是互相关联的。
Everything is interconnected.
2018-09-18
诀窍1:始终关注情境。

2.1 新手与专家
2018-09-18
清晰表述专业技能十分困难。
It's hard to articulate expertise.
2018-09-18
新手和专家有着根本区别,他们看待世界的方式不同,反应也不同。让我们看看细节。

2.2 德雷福斯模型的5个阶段
2018-09-18
2.2.1 阶段1:新手
专家
精通者
胜任者
高级新手
新手
2018-09-18
新手需要指令清单。
Novices need recipes.
2018-09-18
高级新手不想要全局思维。
Advanced beginners don't want the big picture.
2018-09-18
胜任者能够解决问题。
Competents can troubleshoot.
2018-09-18
精通者能够自我纠正。
Proficient practitioners can self-correct.
2018-09-18
伴随向他人学习的能力而来的,是理解和运用格言经验之谈(maxim)的能力,这些经验之谈犹如谚言或格言,是可以应用于当前情境的基本原理。经验之谈不是指令清单,它们必须在一定的情境下使用。
2018-09-18
误用的模式和脆弱的方法
现在你可能认识到,软件开发领域的一些最激动人心的新动向是面向处于精通和专家级水平的开发人员的。
2018-09-18
专家凭直觉工作。
Experts work from intuition.
2018-09-18
不过,这位专家知道。专家知道哪些是无关紧要的细节,哪些是非常重要的细节。也许不是有意识的,但是专家知道应该关注哪些细节,可以放心地忽略哪些细节。专家非常擅长做有针对性的特征匹配。

2.3 现实中的德雷福斯模型:赛马和赛羊
2018-09-18
达尔文说过:“无知往往来自于自信而不是知识。”
2018-09-18
直觉是专家的工具,但公司往往轻视它,因为他们错误地认为,直觉“不科学”或者“不可重复”。因此,我们往往本末倒置,不倾听薪酬高昂的专家们的意见。
2018-09-18
诀窍2:新手使用规则,专家使用直觉。
2018-09-18
元认知(metacognitive)能力,或者自我认知的能力,往往在较高的技能层次中才会具有。不幸的是,这意味着处于较低技能层次的从业者会明显高估他们自己的能力——有研究表明高出50%。根据一项研究(见Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments [KD99]),正确自我评估的唯一办法就是提高个人技能层次,这反过来又会提高元认知能力。
你可以把这种现象称为二阶不胜任(second-order incompetence):不知道自己不知道多少。新手尽管能力差但是信心十足,而专家在情况异常时会变得愈发谨慎。专家会更多地自我怀疑。
2018-09-18
诀窍3:知道你不知道什么。
2018-09-18
直觉和模式匹配能力超载了显性知识。
Intuition and pattern matching replace explicit knowledge.

2.4 有效地使用德雷福斯模型
2018-09-18
花了十年时间。
而且需要辛勤工作——只是在某领域工作十年是不够的。你需要实践。根据著名认知科学家Dr. K. Anderson Ericsson的说法,积极的实践需要四个条件。
需要一个明确定义的任务。
任务需要有适当难度——有挑战性但可行。
任务环境可以提供大量反馈,以便于你采取行动。
提供重复犯错和纠正错误的机会。
2018-09-18
“我只是执行命令!”是无用的。
"I was just following orders!" doesn't work.
2018-09-18
但是,为了实现工作态度上的转变,我们确实需要提高技能。高级新手无法自己做出这类决定。我们必须培养高级新手,帮助他们把技能水平提高到胜任者层次
2018-09-18
诀窍4:通过观察和模仿来学习。
2018-09-18
没有实践就没有技能
爵士乐是一种非常依赖现实体验的艺术形式。你可以学习所有的和弦和演奏爵士乐所需的技术,但是你必须亲自演奏它才能获得“感觉”。著名小号手和歌手Louis“Satchmo”Armstrong曾这样谈到爵士乐:“各位,如果你只是问,你永远都不会明白。”
没有实践就没有技能,而且没有什么东西可以替代实践,但是我们可以努力使你现有的经验发挥更大效力。
2018-09-18
优胜者不会帮扶失败者。
Winners don't carry losers.
2018-09-18
。最后,他指出位列前2%的优胜者并不被认为是世界级的,位居前0.2%的才是。
2018-09-18
一个组织的好坏由其最弱一环决定。把最好的演奏者聚集在一起从事主要的服务,同时创建“农场队伍”完成其他服务。
2018-09-18
组织内每周的演奏者应相同、稳定。要让组织成型,演奏者进进出出会适得其反。
2018-09-18
时间就是一切:鼓手(乐队的)或者伴奏(合唱团)必须是固定的。最好使用预先录制的伴奏而不是频繁更换的鼓手或者风琴手现场伴奏。
让团队的优秀音乐家安心,随时关注变化。
2018-09-18
正如护理专业一样,编程专家必须持续编程,并找到一个有意义、有价值的职业生涯。对组织来说,设置一个能够反映最优秀程序员价值的薪酬等级和职业阶梯是实现这个目标的第一步。
诀窍5:保持实践以维持专家水平。

2.5 警惕工具陷阱
2018-09-18
模型是工具,而非镜子。
The model is a tool, not a mirror.
2018-09-18
忘记了模型是一个工具,而不是一面镜子。
2018-09-18
混淆模型和现实
2018-09-18
低估不能形式化的特性
2018-09-18
良好的问题解决能力对我们的工作很重要,但解决问题是一件很难形式化的事情。例如,你应该坐下来思考问题多长时间?10分钟?一天?一周?你无法对创造
2018-09-18
规定违背个人自主性的行为
2018-09-18
阐明太多细节
阐明太多细节会适得其反。这会引发一种称为无限倒退(infinite regress)的问题:一旦你详细解释了一系列假设,你就提前暴露了本应简单提出的下一个层次的假设。如此下去,只会带来恶性循环。
把复杂局势过于简单化
2018-09-18
追求过度一致
2018-09-18
忽视情境的细微差别
2018-09-18
诀窍6:如果你需要创造力、直觉或者独创能力,避免使用形式方法。

2.6 再一次考虑情境
2018-09-18
你可能已经注意到,高价顾问最喜欢回答说:“具体情况具体分析。”当然,他们是对的。他们的分析依赖于很多事情——所有那些专业人士懂得去寻找的、至关重要的细节,同时忽略无关的细节。情境在起作用。
2018-09-18
警惕非情境化的客观性。
Beware decontextualized objectivity.

2.7 日常的德雷福斯模型
2018-09-18
首先,请记住,无论是对你自己或对他人,一种规格并非处处适用。正如你从模型中看到的,你的需求取决于你所处的技能水平。随着时间推移,你的个人学习和成长所需要的东西会改变。当然,在团队中你同样需要先考虑他人的技能水平,然后再判断自己该如何倾听、响应他们的意见。
2018-09-18
在另一端,专家需要获得全貌;不要用约束性、官僚的规则妨碍他们做出自己的判断。你需要从他们的专业判断中获益。请记住,不论怎样他们认为自己是系统的一部分,并将这些事情当作自己的事情来做,他们的投入超出你的想象。
2018-09-18
理想情况下,你希望团队里混合各种层次技能水平:拥有一个全部是专家的团队也存在它的难处。当所有人在考虑森林的时候,你也需要一些人来关注一棵棵大树。
2018-09-18
诀窍7:学习如何学习的技能
2018-09-18
培养更多的直觉。
认识到情境和观察情境模式的重要性。
更好地利用我们自己的经验

第3章 认识你的大脑
2018-09-18
从你出生那一刻起,大脑就开始运转,只有当你站起来向公众演讲时才会停止。
——George Jessel爵士

3.1 双CPU模式
2018-09-18
两个CPU提供了L型和R型处理模式。
Two CPUs provide R-mode and L-mode.
2018-09-18
这两种模式你都需要:R型对直觉、问题解决和创造性非常重要。L型让你细致工作并实现目标。每一种模式都有助于大脑的工作,如果想获得最佳性能,需要两种模式协同工作。下面让我们研究一下这些重要认知模式的细节。
2018-09-18
全息记忆
记忆是全息存储的,也就是说记忆具有全息图像的某些属性。
2018-09-18
举例来说,你是否有过这样的经历:在刚睡醒时尝试描述一个做过的梦?很多时候,每当你想要用语言描述时,这个清晰、生动的梦境就会从你的记忆中消失。这是因为图像、情感和整体经验都是R型的:你的梦是在R型下产生的。当你尝试把梦讲出来时,就开始争用总线。L型占用了总线,现在你无法获取那些R型记忆了。实际上,它们是无法用言语表达的。
2018-09-18
人类具有超强的感知能力,其中许多无法有效地用语言表达。例如,你可以立刻认出大量熟悉的人的面孔,无论他们是否改变了发型、穿着,或者肥了10磅,还是过了20年。
但是,尝试描述你最亲密爱人的脸庞,你会觉得有心无力。你如何把这种识别能力用语言表达出来?你能建立一个数据库来存储你所认识人的脸部数据,并依据这些数据来识别这些人吗?不能。这是一种伟大的能力,它不是基于文字的、语言的、L型的。
2018-09-18
R型不能直接控制。
R-mode isn't directly controllable.
2018-09-18
谁主管这里?
你可能会认为脑子里的叙述声音受你的控制,是有意识的,是真的你。它不是。实际上,当这些词语在你脑中形成时,背后的想法已经存在多时了。而在用口说出这些词语之前,又已经过了相当长的时间了。

3.2 随时(24×7)记录想法
2018-09-18
钢笔和记事本
我随身携带Fisher Space钢笔和小记事本。这支钢笔非常棒,可以灵活地用于任何场合。记事本是从杂货店里买的69美分的便宜货——轻薄,没有螺旋装订,像一个特大号的火柴盒。我可以随身携带。
2018-09-18
诀窍8:捕获所有的想法以从中获益更多。
2018-09-18
每个人都有好点子。
Everyone has good ideas.
2018-09-18
每个人——不论教育背景、经济状况如何,不论日常工作是什么,不论年龄大小——都有好想法。但是在这么多拥有好想法的人里面,只有少数人在努力跟踪它们。而其中,又只有更少数人会努力付诸行动。随后,仅有少之又少的人有能力将好想法成功实现。要想达到图3-3中金字塔的最顶层,必须跟踪好想法,这是最基本的要求。
图3-3 每个人都有好点子,但很少有人付诸行动
当然,这还不够。仅仅捕获想法只是第一步,然后需要处理想法,我们可以用一些特殊的方式使我们的行为更有效。我们会在后面深入讨论(参见8.3节)。
准备好做记录的工具,并随身携带……

3.3 L型和R型的特征
2018-09-18
R型绝对是注重整体的,总是希望一次就能看到事物整体,感知整体的模式和结构。它具有空间性,喜欢弄清楚事物之间的空间关系,部分如何形成整体。最重要的是,它是直觉性的、跳越性的思维,通常基于不完整的模式、直觉、感觉或者视觉影像来做判断。
2018-09-18
“非理性”没有什么不对,思维过程是非理性或者不可重复的并不意味着它是不科学的、不负责任的、不合适的。
2018-09-18
很多能力就这么浪费了。
Power is going to waste.
2018-09-18
为何要强调R型
我们需要更多地使用R型,因为R型能够提供直觉,这是成为一名专家所迫切需要的。没有它,我们就不能成为专家。德雷福斯模型强调专家对隐性知识的依赖,这也属于R型的范畴。专家依赖观察和区分模式,这里也有模式匹配。
2018-09-18
R型的类比和整体思考方式对软件架构和设计非常有价值,好的设计就是由这些组成的。
2018-09-18
面对复杂的设计问题或者难以修改的bug,优秀的程序员通常都有冲动去编码和构建,由此可以从中学习。这就是R型的综合,而不是L型的分析。这就是为什么我们喜欢原型和独立的单元测试。它们给我们综合学习的机会——通过构建。
2018-09-18
诀窍9:综合学习与分析学习并重。

3.4 R型的崛起
2018-09-18
L型是必要的,但仅有它是不够的。
L-mode is necessary but not sufficient.
2018-09-18
Dan Pink在他的畅销书A Whole New Mind: Moving from the Information Age to the Conceptual Age[Pin05]中同意这种看法。Dan有力地证明了,基于经济和社会的发展,这些艺术的、美学的R型属性不再专属于那些想亲手制作贺卡的玛莎·斯图尔特式的人。相反,那些平凡的、悠久的主流业务绝对也需要这些属性。
2018-09-18
商品化意味着美学品味的竞争。
Commoditization means you compete on aesthetics.
2018-09-18
说歌曲,而不是说字节。
It's about the songs, not gigabytes.
2018-09-18
:积极的情感对学习和创造性思维非常关键。处于“高兴”的状态可以扩展你的思维过程,激活更多的大脑物质
2018-09-18
处于遭到明显破坏的环境中的事物也可能会导致更大灾难。我们已经看到破窗理论(Broken Window Theory)(参见《程序员修炼之道》[HT00])在现实中存在若干年了。已知的问题(比如代码的bug、糟糕的组织流程、欠缺的用户界面或混乱的管理)如果不加以改正会产生病毒一样的影响,最终造成更大损害。
2018-09-18
禁锢扼杀脑细胞
你可能一直听说,人在出生时拥有一定数量的脑细胞,这就是你所有的家当。脑细胞可能会死亡,但无法再生新的。酒精和年龄增长会杀死脑细胞,这让人一想到老年生活就顿感沮丧,因为与出生时相比失去了太多脑细胞。
幸运的是,伊丽莎白·高尔德教授不这样想。一项发现使这个领域沸腾了,她发现了神经形成——在成年时期,新脑细胞会不断再生。但是有趣的是,之前的研究人员之所以从未发现神经形成,竟然要归因于他们的研究对象所处的环境。
如果你是困在笼子里的实验室动物,你永远都不会产生新的脑细胞。
如果你是困在斗室里的程序员,你永远都不会产生新的脑细胞。
相反,如果处于一个丰富的环境中,里面充满了需要学习、观察和交互的事物,你就会产生大量新脑细胞和新的神经联系。
几十年来,科学家被人造环境(无菌实验室笼子)误导了,因为人造环境只会产生人造数据,这再次证明情境是关键。你的工作环境需要提供丰富的感观机会,否则它真的会损坏大脑。
2018-09-18
诀窍10:争取好的设计,它真的很有效。
2018-09-18
“设计并不是创造美,美来自于选择、共鸣、同化和爱。”
2018-09-18
美来自于选择。
Beauty emerges from selection.
2018-09-18
创造来自于选择和组装,它要选择最合适的部件,并将它们组装成最合适的表现形式,这就是创作。选择(知道选择什么和在什么情境下选择)来自于模式匹配,我们将会在后面回到这个主题。

3.6 DIY脑部手术和神经可塑性
2018-09-18
诀窍11:重新连线大脑,坚信这一点并不断实践。
2018-09-18
神经可塑性(大脑的可塑本质)也意味着你能够学习的最大容量或者你可以获得的技能数量不是固定的。没有上限,只要你相信这一点。
2018-09-18
思想使然。
Thinking makes it so.
2018-09-18
可能这就是音乐家不断练习音阶的原因,这类似于刷新动态RAM。想做一名更好的程序员吗?那就多编码,深思熟虑,专注实践。想学习一门外语吗?那就投入进去,不停地说,用它思考。大脑会很快意识到并调整自己为这种新用途提供更多方便。

3.7 如何更上一层楼
2018-09-18
列一张清单,写下你喜欢的和令你失望的软件。美学因素在你的选择中起了多大作用?
2018-09-18
考虑工作和生活的哪些方面使用L型,哪些方面使用R型。你觉得它们均衡吗?如果不是,你又会怎么做?
2018-09-18
在桌上放一个便笺本(还有车里、电脑旁和床边),使用它。
另外,随身携带可以24×7全天候做笔记的东西(可以是纸、笔或者其他)。
2018-09-18
有意识地努力学习一种新事物,通过综合而不是分析。
尝试不用键盘和显示器来设计下一个软件(我们会在本书后面详细讨论)。

4.1 启动感观输入
2018-09-18
启动感观输入
要投入更多脑物质去解决问题和发挥创造力,最简便的方式就是激活更多的神经通路。
这意味着扩大感观参与范围——使用与平常不同的感观。不要小看这种作用,研究显示,使用多感观技术可以让学生的学习效果提高5倍。即使是特别简单的工作也能受益。
2018-09-18
诀窍12:增加感观体验以促进大脑的使用。
2018-09-18
利用多感观反馈。
Use cross-sensory feedback.
2018-09-18
使用通常的表单写下设计。
画一幅图画(不是UML或者正式的图片,只是一幅图画)。可以使用哪些可视化的隐喻?
2018-09-18
使用语言描述它。
与小组同事作公开讨论,回应问题和批评,等等。
2018-09-18
扮演各种角色。(想起什么隐喻了吗?我们会很快详细讨论隐喻。)
2018-09-18
刺激你的大脑。
Feed your brain.

4.2 用右脑画画
2018-09-18
绘画即是观察。
"Drawing" is really about seeing.
2018-09-18
绘画是一种R型活动。让我们花一点时间来解释一下我所说的绘画的意思。绘画真的不是在纸上做标记。
2018-09-18
困难的部分不是绘画的结果,而是观察。这种可视的洞察力是一项R型任务。
2018-09-18
这个问题的关键是共享总线,我前面为你介绍过(见第3章)。如果L型占用了这条总线,就会阻碍R型干活。有趣的是,很多常见的休闲活动都能够激活R型并停止L型的占用:听音乐、绘画、静思、慢跑、针线活、攀岩,等等。
2018-09-18
“创造条件让大脑转移到其他的信息处理模式上——意识的细微转变,帮助你更好地观察发现”。
2018-09-18
限制认知干扰。
Limit cognitive interference.
2018-09-18
角色扮演
乔安娜·罗斯曼描述了她利用角色扮演解决一些设计问题的经历。
“这个团队当时正在进行一个项目以挽救公司。他们准备采用一种新的方式来处理排队请求进入系统。我建议为每个人分配一个角色。日程控制者拿着一个哨子,请求者站在合适的队列里,管理者告诉请求者该往哪里走,等等。
“一些人觉得这有些愚蠢,但是每个人都累了,想要做些改变。我们自己对角色做了标记。我拿着秒表计时,同时用纸板记录信息。然后我们就开始了。
“开始,一些人互相撞到了一起(他们脸上的表情太好玩了)。接着我们对设计做了更改。重新分配角色,通过了一些常见的场景。每当我们准备好一个场景都会意识到会有另外一个时间问题。
“这次活动足够让人们认识到,把30~60分钟时间花在角色扮演上要比花在设计复审会议更有价值。
“角色扮演设计不是公开讨论,而是用实际行动参与和观察设计。”
琳达·莱辛描述了扮演的另一个用途:培训团队。在向团队介绍一种新框架的数次糟糕经历之后,她和同事大卫·得拉诺决定在下一个团队中用表演来模拟框架。这次,开发人员们不再抱怨没有听明白,而是抱怨表演简直浪费时间,因为演出的内容简直是“太简单了!”
喔,这都是因为角色扮演真的有效果。

4.3 促成R型到L型的转换
2018-09-18
建立R型到L型的转换。
Engage an R-mode to L- mode flow
2018-09-18
诀窍13:R型开路,L型紧跟。
2018-09-18
思维的两种方式天生就是一起工作的。例如,首先运用类比方法来解决关联性、理论性的问题,然后运用分析法来验证你的想法。不过请记住,这不是单向旅途,你需要回到R型以保持思维的流畅。R型是源头,你要给它自由、无限的空间。
2018-09-18
先适应它。
Get used to it
注: know it,then hack it!
2018-09-18
训练两个脑半球,不仅仅是语言性的、符号性的、逻辑性的左脑(传统的),也包括空间性的、关系性的、综合性的右脑。
训练学生学会选择适合当前任务的认知方式。
训练学生综合利用两种模式解决问题。
2018-09-18
较差的草稿初案
坦然面对不确定意味着坦然面对一些不完整、未完成的事物。你应该避免追求完美的冲动想法。
2018-09-18
工作时,一人用L型,另一人用R型。
Work with one person in L-mode, one in R-mode.
2018-09-18
在另一项实验中,一对学生在一个非常具体的问题陈述的基础上,提出了一个抽象矩阵表示法。研究人员是这样记载的:
……实验者询问他们是如何提出这个矩阵的。其中一人说:“他想用列,而我想用行。”为了协调在这个问题上的两种观点,他们想办法提出了这个包含了行和列的矩阵模型。
——施瓦茨等人
2018-09-18
要想发现有用且有趣的抽象特征,相互配合是一种经得起考验、行之有效的方法。
2018-09-18
诀窍14:使用隐喻作为L型和R型相融之所。
2018-09-18
使用随机并列来创建隐喻。
Use random juxtaposition to create metaphor.
2018-09-18
窗子里的明亮之光是什么?它不是天体,是罗密欧在化装舞会上遇见的女孩。爱是一种情感,与字面意义的烟、烟雾或叹息无关,但那将会在脑海中显现多么奇妙的景象啊。你几乎可以看见,小情人们那不可抑制的渴望,像丝丝烟雾一点点汇聚成浓重的云团和雾霭。
烟雾的参照系特征与情感(爱情)的参照系特征联系到一起,把很多已知但未明说的特征施加到情感参考系上。这种从一种参考系到另一种参考系的移植非常强大,我们完全可以加以利用。
这是文学作品中的隐喻,我们的工作中同样也有隐喻。
2018-09-18
隐喻参考系的特征能够印到软件系统,真实世界中隐含的、容易理解的属性逐渐转移到软件本身。
2018-09-18
但是,提出一个好的隐喻——能够帮助解决问题而不是产生更多问题——可能是非常困难的。同测试先行、结对编程等广受欢迎的开发方式相比,系统隐喻作为一种实践并未得到广泛应用。
2018-09-18
“隐喻思维是编程的基础,因为它存在于所有的抽象思维中。如果我们没有意识到隐喻,就可能误入歧途。而混淆隐喻会削弱其自身的能力。为什么要在子类中覆盖方法?(Why do we override a method in a subclass?)清晰的隐喻使代码更易于学习、理解和扩展。”
2018-09-18
提出衍生式隐喻是很困难的。
Generative metaphors are hard.
2018-09-18
在任何情况下,幽默的能力都来自于发掘或扩展常规之外的关系,真正突破思维界限。急智——能够发现无关事物的联系或者扩展思维突破其界限——是一种值得在团队中实践、锻炼和提倡的技能。
2018-09-18
诀窍15:培养幽默感以建立更强大的隐喻。

4.4 收获R型线索
2018-09-18
许多想法是无法用语言表达的。
Many ideas are not verbalizable.
2018-09-18
你可能还注意到你无法阅读梦中出现的文字,如道路标志或者大字标题。大多数人都不行。现在让我们赶快来看一看收获R型识别的两种不同方法:图像流和自由日记。
2018-09-18
首先,找一个问题。然后,闭上眼睛,再把脚搁在桌子上(能以这种姿势工作可是超棒的),默想大约10分钟。
对于经过大脑的图像,做如下处理。
观察图像,努力看清所有细节。
大声地描述出来(真正发出声音,这很关键)。现在把脚翘在桌子上自言自语。
利用全部五种感观想象它(或者根据实际情况尽量运用所有感观)。
使用现在时态,即使该图像都溜跑了。
2018-09-18
工具与干扰
当你尝试开始任何创造性的活动时,比如写博客、文章或者(上帝保佑)一本书,你将会遇到大量阻力。阻力的表现形式五花八门:挥之不去的自我怀疑,漫无边际的拖延,以及各式各样的问题(参见The War of Art: Break Through the Blocks and Win Your Inner Creative Battles [Pre02] 中对阻力各种表现形式的完整分类。)
尤其对于博客来说,这种工具本身就可能阻碍你写作。例如,如果你是用第三方的web服务写博客(如TypePad或者Blogspot),离线时你会写吗?或者如果灵感突现时你恰好不能上网,这会不会成为你不写下来的理由呢?如果你是用自己的博客软件写作,你花在调整软件或者设计博客上的时间是不是比创建新文章还要多?虽然没必要做反对新技术的顽固派,但将东西写在纸上确实是几千年来一直都很管用的。将想法首先捕捉到纸上,然后再输入到博客中,这样做其实更迅捷。
一旦开始写作,一定要注意坚持不懈。不要为技术问题而分心。不必担心有些话是不是还需要润色,先把它们都写下来。
那些著名的信件都是被精心保存下来的,你的呢?你有备份吗?一旦写了博文,除了Google缓存你还在其他地方存档了吗?
2018-09-18
晨写技术
2018-09-18
晨写是早晨要做的第一件事——在喝咖啡之前、在收听交通广播之前、在洗澡之前、在送孩子上学之前、在遛狗之前。
2018-09-18
至少写三页,手写,不需要键盘、电脑。
不要审查删减你写的东西。不论是优秀的还是陈腐的,只管写下来。
坚持天天写。
2018-09-18
这种方法的名字来源于修建大卵石墙(fieldstone wall):事先不需要计划收集特别的石头,只需要到处走走,捡一些好看的石头堆起来备用。然后当你准备造墙时,就从石头堆里挑选匹配的石头,直接安到你正在做的那部分即可。
养成一种收集思维大卵石的习惯。一旦有了积累,造墙的过程就会很容易。
这是一种好习惯,应该培养。
2018-09-18
R型只能邀请,不能强制命令。
R-mode can be invited, not commanded.

4.5 收获模式
2018-09-18
使用武术来提高注意力
June Kim告诉我们这样一则经历:
“在开始练习武术之后,我感觉到我的注意力持续时间和控制能力(比如在糟糕的环境下集中注意力)都有了提高。我一直在向软件开发人员和其他知识工作者推荐我的实践经验。它就是气功,它既有武术的一面,也包含太极、冥想和呼吸的方面。
“我已经从一个开始练习的朋友那里看到了显而易见的变化。用不了一个月,你就能明显感受到这种差别。他告诉我他现在可以更容易地集中注意力,生活质量也提高了。”
瑜伽、冥想、呼吸技术和武术都会影响大脑处理信息的方式。我们是复杂的系统,正如我们已经认同系统思考的观念,这意味着一切都是关联的。甚至一种特殊的呼吸方式,也会显著影响你的思维方式。
2018-09-18
适应不同技能层次。
Accommodate different skill levels
2018-09-18
车辙和坟墓之间的唯一区别在于尺寸。
The only difference between a rut and a grave is the dimensions.
2018-09-18
这种视角的简单转变,也就是从相反角度思考问题,本身是一种非常强大的技术。你可以在调试的时候使用这种技术:不要努力预防难以发现的bug,努力找到三四种会主动引起bug的方式。这样,你可以发现到底会发生什么。在用户界面设计时或许也可以尝试同样的方法:不要努力去想完美的格式或者流程,先做一个最差的设计方案。这将帮助你意识到什么是真正重要的。
2018-09-18
诀窍17:改变解决问题的角度
2018-09-18
调和不同的模式。
Reconcile unlike patterns.
2018-09-18
这像别的什么东西吗?
不做任何改变,坚持始终如一。
关上门,从外面听。
错误是一种潜在的提示。
2018-09-18
改变有益
古语云:“只有婴儿喜欢改变。”我们都是习惯造就的动物。但是,根深蒂固的习惯对大脑而言并非是最好的,因为,有了这种习惯,你就无法建立新的联系,而且会逐渐对其他选择项熟视无睹。

第5章 调试你的大脑
2018-09-18
认知偏见:思维如何被误导。
时代影响:同代人如何影响你。
个性倾向:个性如何影响思维。
2018-09-18
硬件故障:大脑较老区域如何压制较聪明的区域。

5.1 了解认知偏见
2018-09-18
我们之前已经看到了符号约简谬论的例子。例如,当你尝试画一只人手时,L型把光线、阴影、纹理的复杂性简化为“五条线加一个棍”。这种简化被认为是把复杂的现实看做由非常基本的元素组成:柏拉图立体(platonic solids)。
2018-09-18
意想不到的事件改变历史。
Unexpected events change the game.
2018-09-18
相关性与因果性
科学研究很容易被误解,因为大多数人不善于统计分析学。最普遍的一个误解是把相关性说成因果关系。
仅仅因为两个变量相关并不能认定其中一个是因另外一个是果。比如,看看有关居住在高压线下面的家庭白血病发病率更高的报告。新闻标题甚至会说高压线导致癌症。
虽然这有可能,但是这种单一的关联性根本不能证明这个问题。其实还有许多别的潜在因素:高压线下面的房屋较便宜,因此这都是相对贫穷的家庭,也就影响了食品营养、卫生保健、早期检测等方面。看到相关性并不等同于确定了因果性。
另外,现实世界的因果关系通常不像“事件X导致事件Y”这样简单。相反,一般是X触发Y,反过来Y强化了X,X又巩固了Y,等等。更多情况下是“X和Y”而不是“X或Y”。不同事件所占的诱因比例也不同,且具有不同的强化性。甚至同一类事件在一段时间内也会具有完全不同的原因。
2018-09-18
诀窍18:记住标题:“很少”不意味着“没有”。
2018-09-18
绝不说“绝不”。
Never say never.
2018-09-18
这意味着在项目的末尾时你会达到智力高峰,而在项目开始时则是最无知的。因此,你想尽快做决定吗?不。你想尽量延迟下结论,以便于随后有更好的决策
2018-09-18
诀窍19:适应不确定性。
2018-09-18
通过明确的概率进行猜想。
Guess with explicit probabilities.
2018-09-18
诀窍20:信任记录而不是记忆,每一次思维的输出都是一次输入。
2018-09-18
列举出你所具有的认知偏见。我们都有自己的问题。哪些是你特别容易犯的?
2018-09-18
留意一下,你在自己的工作生涯中曾目睹过多少极其不可能的事件发生。事后看来,它们有多么不可能呢?
2018-09-18
保留工程师笔记,包括设计会议、编码问题和解决方案,等等。每次返回去要用的时候,在较早的条目上做一标记。

5.2 认清时代影响
2018-09-18
重视情境。
Consider the context.
2018-09-18
X一代是最大的创业一代。
Gen X is the greatest entrepreneurial generation.
2018-09-18
态度会改变。
But attitudes will change.
2018-09-19
这些对时代的概括有助于理解为什么人们会珍视他们所珍视的东西,同时提醒我们不是所有人都与你的核心价值观和世界观相同。
以下列举的就是这四种时代原型和其主要特征。
先知:高瞻远瞩、价值观
游牧民族:自由、生存、荣誉
英雄:利益共同体、富裕
2018-09-19
艺术家:多元化、专业知识、法定诉讼程序
2018-09-19
诀窍21:从多个角度看待问题。

5.3 了解个性倾向
2018-09-19
了解个性倾向
他人即地狱(L'enfer, c'est les autres)。
——让·保罗·萨特,法国思想家、作家、存在主义哲学大师
2018-09-19
并非所有的奖励都受欢迎
大多数公司通过表扬和认可奖励团队,但这并不一定适合所有性格类型。特别是对外向型起作用的奖励可能并不适用于所有程序员。
你在渴望一场正式的蛋糕庆祝会吗?对于很多内向型人来说,被带到众人前面,哪怕是为了接受表扬,也会深感不安。对于新手来说的巨大奖赏,专家级人士可能根本就看不上,反之亦然。
既然性格和技能水平各异,可能奖励措施也应该各式各样才对。
2018-09-19
诀窍22:尊重不同人的不同性格。

5.4 找出硬件问题
2018-09-19
受到伤害,愤愤不平
不努力解决问题,而是花费所有精力来责怪别人。只要有可能,就大喊大叫,让所有人都知道这是不公平的。
2018-09-19
诀窍23:像高级动物一样行动,请做深呼吸,而不要张口嘶鸣。
2018-09-19
微笑。有证据表明微笑和抗抑郁药物一样有效。

5.5 现在我不知道该思考什么
2018-09-19
诀窍24:相信直觉,但是要验证。
2018-09-19
预期影响现实。
Expectations color reality.

6.1 学习是什么……不是什么
2018-09-19
虽然很多人力资源部门至今还没有意识到,但实际上,了解Java、Ruby、.NET或iPhone SDK并不是特别重要。总会有新技术或者现存技术的新版本需要学习。技术本身并不重要,持续学习才是最重要的。
2018-09-19
教育(Education)来自于拉丁文educare,字面意思是“被引出”,即引导出某样东西。我发现一件非常有趣的事情,当我们想到教育时,通常并不考虑它这个词源的含义——从学习者那里引导出一些东西。
相反,更常见的看法是把教育当作学习者被动接受的事情——灌输,而不是引导。这种模型在公司培训中尤其流行,称之为羊浸式培训。
2018-09-19
羊浸式”培训不起作用。
Sheep dip training doesn't work.
2018-09-19
点燃你的火焰
“一旦我们抓住要点,我们必须互相鼓励,彼此主动交流,利用记忆指导我们

6.2 瞄准SMART目标
2018-09-19
,SMART代表具体的、可度量的、可实现的、相关的和时间可控的(Specific, Measurable, Achievable, Relevant, and Time-boxed)。
2018-09-19
目标任务使你更靠近目标。
Objectives move you to your goal.
2018-09-19
诀窍25:建立SMART任务实现你的目标。

6.3 建立一个务实的投资计划
2018-09-19
时间是无法创造和销毁的。时间只能分配。
Time can't be created or destroyed, only allocated.
2018-09-19
所有知识投资都有价值。
All knowledge investments have value.
2018-09-19
知识投资和金融投资的一个主要区别是所有知识投资都有些价值。即使你从来不会在工作中使用某项技术,它也会影响你思考和解决问题的方式。因此,你学习的任何东西都有价值,只是有可能不是直接的、有物质回报的或和当前工作相关的价值。也许它会有助于开发R型思维或者改善R型到L型的切换。
2018-09-19
PIP:定期投资(成本平均法)
最后,你需要定期投资。在金融领域,你需要采用成本平均法(dollar-cost averaging)。这意味着如果你定期购买股票,有时你会付出很多,有时你会收益很多。但是长期来看,这些差异互相抵消,一般最后你都会获得较好的回报。
2018-09-19
诀窍26:对主动学习的投资做好计划。
2018-09-19
写下现在、短期和长期的具体目标。
增加两个新的学习领域,让你的知识投资变得多样化。
每周设定时间来实施知识投资。
设置提醒,让自己定期、阶段性地重新评估投资计划。哪些发生了改变,哪些已没有意义,现在你要做什么?

6.4 使用你的原生学习模式
2018-09-19
性格不是命中注定。
Type is not destiny.
2018-09-19
诀窍27:发现你的最佳学习方式。
2018-09-19
实践单元
想想你最强的智力因素:哪些因素你在工作中用得最多?你的最强因素和你的工作非常匹配吗?还是不匹配?
哪些因素你用于爱好?你是否没有很好地利用自己某项很强的智力因素?你能找到方法来应用它吗?
如果存在不匹配,你如何弥补呢?如果你是视觉型学习者,你能开始在自己的
2018-09-19
习中利用视觉辅助工具吗?如果是动觉型,使用道具会有所帮助吗?

6.5 一起工作,一起学习
2018-09-19
成人教育的关键
成人学习者和儿童或大学生不同。马尔科姆·诺尔斯(Malcolm Knowles)在The Adult Learner: a Neglected Species [Kno90]一书中指出了成人的学习特点和学习环境。
如果学习能够满足成年人的兴趣和需求,他们就会主动学习。
学习的对象应该是与现实生活相关,而不是孤立的个体。
学习者主要使用经验分析法。
成年人需要自我引导,老师应该帮助他们互相交流。
老师必须允许风格、时间、地点和节奏的差异。
请注意这些想法非常适合你与同事组成的学习/阅读小组。就其性质而言,阅读小组符合成人学习者的需求和目标。
2018-09-19
诀窍28:组织学习小组学习和辅导。

6.6 使用增强的学习法
2018-09-19
使用增强的学习法
既然已经建立了主动学习的良好框架,我们现在需要看看学习本身。在本章剩余部分,我们将研究一些具体方法来帮助你更快更好地学习。以下是主要提纲。
主动阅读和总结书面材料的更好方式
使用思维导图探索和发现模式和关系
以教代学
单独使用上述任一种方法本身就能让人受益匪浅。合在一起,它们更可以使你成为一台高效的学习机器。但是每一个人都是不同的,每个人的最佳学习方法也是不同的。因此,你可能发现某些方法最为有效——请记住,没有放之四海而皆准的办法。

6.7 使用SQ3R法主动阅读
2018-09-19
书面的指令通常被认为是最无效的。
Written instruction is the least efficient.
2018-09-19
使阅读更有效的办法是更主动一点,而不是随便捡起一本书来开始埋头苦读。广为使用的好方法为数不少,我们来仔细研究其中一个,但是与其功效类似的方法还有很多。
这项学习一本书或其他印刷品的方法称为SQ3R,是该方法具体步骤的首字母缩写。
**调查(Survey):扫描目录和每章总结,得出总体看法。
问题(Question):记录所有问题。
阅读(Read):阅读全部内容。
复述(Recite):总结,做笔记,用自己的话来描述。
回顾(Review):重读,扩展笔记,与同事讨论。**
2018-09-19
诀窍29:主动阅读。

6.8 使用思维导图
2018-09-19
现代思维导图是一种二维的、有机的整体大纲。建立思维导图的规则是松散的,但是大致步骤如下。
准备一张很大的无格白纸。
在纸中间写上标题,用圆圈框起来。
对于每一个主要的子标题,从圆圈引出线,添加标题。
重复执行其他层次的节点。
对于其他的单独事实或者想法,从合适的标题引出线,写上标题。
所有节点都应该是相互连接的(没有自由的节点),同时该图表应该是层次结构的,只有一个根节点,但是通常有一点限制条件。你需要使用颜色、符号和其他有意义的东西标记不同的事物。但是尝试使用文字来进行解释,起不到这种效果。例
2018-09-19
提升思维导图
非特定的、非目标导向的“玩”(playing)信息是一种获取洞察力、看清隐藏关系的好办法。这种精神随意性恰好是促进R型工作的条件。但是千万不要过于强迫,因为这是非目标导向的。你需要放开一点,让答案主动上门来找你,而不是有意识地努力强迫它出来。只是玩一玩。
2018-09-19
诀窍30:同时用R型和L型做笔记。
2018-09-19
实践单元
为下一本你要读的书制作思维导图。
为你的职业生涯和人生规划或者是下次休假制作思维导图。
尝试颜色的功效:使用彩色铅笔,通过颜色对个别节点赋予特定含义。
尝试图形注释:随意涂鸦你的思维导图,看看会有什么发生。
保持迭代。在你认为自己“做完了”之后,回顾并增加一点新东西,重新开始。

6.9 利用文档的真正力量
2018-09-19
诀窍31:写文档的过程比文档本身更重要。 ps 好记性不如烂笔头,记下来,然后整理出来。
2018-09-19
制作视频。
Make a screencast. 2022年,如果当年开设做视频,如今可能已经积攒了很多了把。

6.10 以教代学
2018-09-19
学习某项事物的最简单和有效的方法是尝试教别人
2018-09-19
和橡皮鸭聊天。
Talk to the duck.
2018-09-19
另一种有用的办法是尝试向一个孩子或者你所在领域之外的人解释你的东西。诀窍就是用他们能理解的话语进行解释。这是一个向你的Edna大婶解释你的工作的好机会,也是一个练习从听众角度观察问题并创建隐喻的好机会,这些隐喻有助于解释、阐明你的工作。你可能会在这个过程中惊奇地发现一些新的收获和领悟。
2018-09-19
诀窍32:观察,实践,教学。
2018-09-19
正如我之前所说的,持续的获取对学习非常有用。在准备教授时,你不得不“回顾”,认真思考问题的答案,这都有助于增强神经关联。

6.11 付诸实践
2018-09-19
实践单元
选择一个新主题,尝试教给一个同事或亲戚。你从教学中学到了什么?从准备中又学到了什么?
如果你还没有参与一个本地用户组,现在就开始积极参与。Java、Ruby和Linux用户组有很多,但是你也会看到Delphi、敏捷或极限开发、OOP、特定厂商产品等用户组。
认真听取发言。做一个相关的思维导图。你会添加什么?你会有所不同吗?基于你的思维导图写一个用户组的评论文章。
联系组织者,在下一次会议上要求发言。
如果没有适合你的用户组,把你的文章写到杂志或者博客上。

第7章 积累经验
2018-09-19
积累经验是学习和成长的关键——我们通过实践的方法学习,效果最好。
然而,仅仅依靠“实践”并不能保证成功,你必须从实践中有所收获,但是面对一些常见的障碍,我们很难做到这一点。你又无法强迫它,过度努力地尝试可能和不去尝试一样糟糕(甚至更差)。

7.1 为了学习而玩耍
2018-09-19
为了学习而玩耍
根据大脑的结构,你需要自己探索和构建思维模型。大脑不是用来被动地存储知识的。某些时候在某些情况下大脑会这么做,但是正常情况下,并非如此:在研究事实之前,我们应该探索或者“玩耍”这些资料。
我们似乎有一种文化倾向,那就是本末倒置:首先努力地获取信息,然后希望以后再用到它。这是大多数正规教育和公司培训的基础。但是现实世界不是这样运转的。例如,假设你在上舞蹈课,结果发现在真正开始跳舞之前你必须得通过“舞蹈技能”的测试。当我这样说的时候,听起来很荒谬是吗?西蒙·派珀特(Seymour Papert)也是这样认为的。
2018-09-20
在现实生活中,没有课程。
Real life has no curriculum.
2018-09-20
趣味性很重要。
Fun is OK.
2018-09-20
诀窍33:为了更好地学习,请更好地玩。
2018-09-20
实践单元
面对下一个问题时,把自己融入其中。拟人法有助于利用体验。
在深入事实之前探索和适应问题。在吸收正式的事实之后,反过来进行更多探索。这是一个持续循环过程。
玩耍,记住并利用它的全部含义。

7.2 利用现有知识
2018-09-20
把事物分成大脑足以容纳的几部分。
Try mind-size bites.
2018-09-20
波利亚的解题方法
解决问题时,先提问自己。
未知量是什么?
已知量是什么?
条件是什么?
然后制定一个计划,执行之,回顾结果。波利亚建议的一些技巧(如下所示)听起来非常熟悉。
努力回想拥有相同或类似未知量的常见问题。
画一张图。
解决一个相关的或者更简单的问题,放宽限制,或者使用已知量的子集。
所有已知量和条件都用上了吗?如果没有,为什么?
尝试重新叙述这个问题。
尝试从未知量推到已知量。
2018-09-20
诀窍34:从相似点中学习,从差异中忘却。

7.3 正确对待实践中的失败
2018-09-20
调试是生命的一部分——不仅仅与软件有关。律师必须调试法律,机械师调试汽车,精神科医生调试我们。
2018-09-20
“我不知道”是一个良好开端。
"I don't know" is a good start.
2018-09-20
诀窍35:在你的环境中安全地探索、创造和应用。
2018-09-20
在软件开发领域,很容易搭建一个满足这些需求的基础设施。这就是我们所说的启动工具包(Starter Kit):版本控制、单元测试和项目自动化。
版本控制工具存储了你工作的所有文件的所有版本。不论你在写代码、文章、歌曲还是诗词,版本控制工具就像一个巨大的回退(Undo)按钮。新发布的版本控制系统Git或者Mercurial都非常适合个人实验。
2018-09-20
单元测试提供了一套细粒度的回归测试。你可以使用单元测试结果来比较不同的方案,把它们看做进展的重要指标。不论做什么,我们都需要客观的反馈来衡量进展。这是我们的工作。
自动化把一切联系在一起,确保那些琐碎的机能都以一种可靠、可重复的方式运行。
2018-09-20
当你种菜时,如果长得不好,你不会责怪菜。你会寻找其他理由。菜可能需要更多的肥料或者水,或者少晒太阳。你绝不会怪罪菜。
——一行禅师

7.4 了解内在诀窍

这是很久以前的读书笔记。这里整理下。
很多都忘了。四五年前写的笔记。重新看一遍。
如今提供的东西和工具,已经有了巨大的改变。
GitHub如今已经是巨硬家的了。
时光匆匆,慢步徐行

最后修改:2022 年 03 月 26 日
如果觉得我的文章对你有用,请随意赞赏