程序员的思维修炼(Pragmatic Thinking and Learning - Refactor Your Wetware)

软件并不是在集成开发环境(IDE)或其他工具上设计出来的,它是在我们的大脑中想象和创造出来的。 软件是在头脑中创建的。 Software is created in your head.

切忌随波逐流。 Only dead fish go with the flow.

由于现实世界的相关性,小的事物可能会有意想不到的巨大影响。这种不成比例的影响作用是非线性系统的标志,也许你并未注意到,现实世界毫无疑问是非线性的。

一切都是互相关联的。 Everything is interconnected.

有些东西是基础的、各领域相通的。 There's something funda mental here.

专家通常很难把他们的行为恰如其分地解释清楚,他们的很多行为是如此地熟练以至于已经变成无意识的了。他们的大量经验都是通过大脑的非语言、无意识区域存储的,这让我们难以观察,而专家则难以表述。 清晰表述专业技能十分困难。 It's hard to articulate expertise.

让我们来看一看从新手到专家所经历的5个阶段。

大多数人都是高级新手。 Most people are advanced beginners.

而且需要辛勤工作——只是在某领域工作十年是不够的。你需要实践。根据著名认知科学家Dr. K. Anderson Ericsson的说法,积极的实践需要四个条件。

在程序员和其项目经理或者项目架构师的身上可以看到非常类似的问题。程序员对负责架构、需求甚至业务流程的相关人员的反馈要么根本没有,要么被严词拒绝,要么干脆被大家遗忘在脑后。程序员经常实现一些他们明知道是错误的东西,忽略了明显的警告信号,这非常类似于上例中的护士行为。敏捷方法有助于促进所有团队成员的反馈并有效利用,但这只是成功的一半。

这两个CPU对应着大脑中两种不同的处理方式。我们把1号CPU的线性处理风格称为线性模式,或简称L模式。我们把2号CPU的异步、综合处理风格称为富模式,简称R模式。 这两种模式你都需要:R型对直觉、问题解决和创造性非常重要。L型让你细致工作并实现目标。每一种模式都有助于大脑的工作,如果想获得最佳性能,需要两种模式协同工作。

R型不能直接控制。 R-mode isn't directly controllable. 这是因为R型是异步的。它作为后台进程运行,处理过去的输入,努力挖掘你需要的信息。因而它要浏览的信息非常多。 R型在存储输入方面非常卖力。事实上,可能你的每一次经历,不论多么平淡乏味,都会被存储。但是它不一定被索引。大脑把它存储起来(好比存储到硬盘里),但是不会建立一个指向它的指针或者索引.

L型处理令人感到舒适、熟悉而轻松。L型提供以下9种能力。 语言能力 使用词语来命名、描述和定义。 分析能力 有理有节分析事情。 符号能力 用符号表示事物。 抽象能力 抽取小部分信息(本质),并用其表示事物整体。 时间能力 遵时循序。 推理能力 基于理智和事实得到结论。 数字能力 使用数字计数。 逻辑能力 基于逻辑(定理、明确的论点)得出结论。 线性思维能力 按照关联、依序推演问题和思考,经常会得出收敛性结论。

R型是非语言的,它可以获取语言但是不能创建语言。它喜欢综合学习:集合事物形成整体。它总是如实地反应事物,从这一点来说,它非常具体实在,至少目前是。它使用类比来评价事物之间的关系。它喜欢听好听的,而且不愿意为守时而费心。它不受理性的约束,因为它不需要基于原因或者已知事实来处理输入——因而,它完全愿意暂时不作任何判断。 R型绝对是注重整体的,总是希望一次就能看到事物整体,感知整体的模式和结构。它具有空间性,喜欢弄清楚事物之间的空间关系,部分如何形成整体。最重要的是,它是直觉性的、跳越性的思维,通常基于不完整的模式、直觉、感觉或者视觉影像来做判断。 但是总的来说,这种模式令人感到不那么舒服。这些特点似乎更适合艺术家和其他奇才(weirdo)。而不是工程师,也不是我们

我们需要更多地使用R型,因为R型能够提供直觉,这是成为一名专家所迫切需要的。没有它,我们就不能成为专家。

神经可塑性(大脑的可塑本质)也意味着你能够学习的最大容量或者你可以获得的技能数量不是固定的。没有上限,只要你相信这一点。根据斯坦福大学研究心理学家、Mindset: The New Psychology of Success [Dwe08]的作者卡罗尔·德韦克的说法,那些不相信自己能增长智力的学生的确做不到。而那些相信自己大脑可塑性的学生则能够很容易提高能力。

人应该努力学习洞察和培养自己内心深处的灵光一现,这远远胜于外面流光溢彩的整个世界。然而,人总会下意识地抛弃自己特有的想法,仅仅因为那是他自己的想法。 ——拉尔夫·瓦尔多·爱默生(1803—1882),美国散文家、思想家、诗人

如果L型占用了这条总线,就会阻碍R型干活。有趣的是,很多常见的休闲活动都能够激活R型并停止L型的占用:听音乐、绘画、静思、慢跑、针线活、攀岩,等等。 为了访问R型,必须给大脑分配一个会被语言性、分析性的L型拒绝的工作。

思维的两种方式天生就是一起工作的。例如,首先运用类比方法来解决关联性、理论性的问题,然后运用分析法来验证你的想法。不过请记住,这不是单向旅途,你需要回到R型以保持思维的流畅。R型是源头,你要给它自由、无限的空间。

酒醉写作,酒醒修改

事实上,你有很多出色的技能和想法是无法用语言表达的。如前面所说(第3章,认识你的大脑),你能够识别数以千计的面孔,但是当你尝试去描述一张面孔——配偶的、父母的或者子女的——不论精确与否,你都无法用语言来形容它。

我们似乎有一种文化倾向,那就是本末倒置:首先努力地获取信息,然后希望以后再用到它。这是大多数正规教育和公司培训的基础。但是现实世界不是这样运转的。例如,假设你在上舞蹈课,结果发现在真正开始跳舞之前你必须得通过“舞蹈技能”的测试。当我这样说的时候,听起来很荒谬是吗?西蒙·派珀特(Seymour Papert)也是这样认为的。

派珀特和瑞士著名心理学家让·皮亚杰(Jean Piaget)认为,真正的学习——对你有用的学习——来自实践和认知,而不是外部的教学活动或者死记硬背。他们的方法称为构造主义:我们通过构造而学习,而不是学习来构造。

这是运用内在诀窍的关键要素:不要把精力放在纠正一个一个的细节上,只需要具有意识。接受事实是第一步,只要意识到它即可。不要做出判断,不要急于拿出方案,不要指责。 你需要尝试培养非判断性的意识:不要想着来纠正,但是在出错时要知道,然后再采取行动纠正。

当大脑受到压力,它会主动停止一些思考,眼界会缩小,不再考虑可能的选择。更糟糕的是,你把R型完全拒之门外:L型主导一切。当你认为时间至关重要时,R型根本没有机会工作。 你的搜索引擎、创造力和聪明才智也是这样。正如我们之前提到的滑雪教练或者贝司老师,由于他们释放了一连串的口头指令,你的思维也会被冻结。R型同样被拒之门外了。

好问题是没有答案的。它不是一个需要拧紧的螺栓,而是一颗种下的种子,由它可以收获一片思想的绿洲。

我们不能同时关注太多不同的东西,因为当你的注意力从一个事物转移到另一事物上时,你需要切换情境。不幸的是,我们的大脑硬件无法很好地支持情境切换。需要平均20分钟返回到原来的工作状态。 It takes twenty minutes to reload context.

我最喜欢的便携式写作工具之一,就是我的夏普Zaurus。在它的生命即将走到尽头时,我去掉了它里面所有的东西,只剩vi编辑器。我卸掉了无线网卡,仅使用CF存储卡同步。此时的设备使我很少分心。事实上除了写作没有别的功能。没有游戏,没有电子邮件,没有网络——只有你写作的章节和文字。这是很艰苦的,但很有效。

你在处理电子邮件方面比自己想象的更有控制力,这取决于你查看和回复电子邮件的频率。下面是一些尝试:在一天中限定具体的、预定的时间来处理电子邮件——但可能不是每天的第一件事。设定一个时间,查看并对电子邮件排序,并且设定它的时间。在设定时间后进入真正的工作。

请记住危险不在于做了错事,而在于根本没去做事情。不要害怕犯错误。

对于专家来说最致命的弱点是像专家一样行动。一旦你相信自己的专业水平,你就会对其他的可能性视而不见。你停止了好奇心。你可能开始抵制所属领域的改变,担心在你花费了很多努力才得以精通的主题上失去权威。你自己的判断和看法不再支持你,而是囚禁你。

认识你自己,认识当前时刻,认识你所处的情境。我认为失败的最大原因就是我们往往让事情自由发展。除非我们意识到一些新的属性,否则我们就会过时了。达芬奇在600年前抱怨说:“人们看却没有看见,听却没有听见,吃却没有味觉,接触却没有触觉,说话却没有思考。”我们一直在这样做:我们嘲笑快餐却并没有认真品尝它,我们听用户或者赞助商告诉我们他们在产品中到底想要什么,但是我们没有听到。我们看却没有看见。我们以为我们已经知道了。