《心流》《黑客与画家》《禅与摩托车维修艺术》阅后杂谈
开始
一切都始于最近终于有闲暇时光来拜读躺在待办列表里许久的《心流》一书。在草草的浏览了两遍之后觉得没有非常的震惊,仔细想来应该是心流这个名字取得过于得好了,简单的两个字便和作者电波相通。而且书的内容对吾辈来说也并不是颠覆性的概念而更像是对过往经验和想法的一些总结性陈述。但是总的来说《心流》仍是一本非常值得一读的书,不管是你可以从中学到新的理念还是系统的梳理你的过往经验。
在看完了心流之后立刻想起了《黑客与画家》、《禅与摩托车维修艺术》这两本书,虽然都已经是readed状态的书了,无奈吾辈记忆力属实不行已经回忆不起具体内容了,就又翻出来都重读了一遍。
至于为何会想起这两本书,在读完这三本书后趁内容还在大脑中的现在可以大致给出一个解释:《黑客》和《禅》中都或多或少涉及到了和《心流》中相通的概念,无论是沉浸式的摩托车修理还是将编程和绘画艺术进行类比,都是对心流的概念的某种实践。
在这里需要叠一个甲:吾辈并没有在此要对这三本书批判一番并进行一个名的排,排名不分先后。
在此鄙人也并不敢斗胆同时对这三本书发起联合书评,下面的内容只是对三本书中的一些共通或者引起吾辈共鸣的片段的摘抄和感悟,仅此而已。
科技旁观者
但是让我惊讶的是,这些手册编写者的态度和这些修理人员的态度一样,竟然都是旁观者,所以它们可以被称为旁观者的手册。在字里行间,你隐约可以嗅到这样的意味:“这是机器,它和周围环境中的一切都没有关系,和你也没有关系,你和它也没有关系;
他不了解发生了什么事,而且也没有兴趣去研究。他对事情的表象比较感兴趣,对于内涵就不然了。这一点很重要,因为这就是他看事情的方法。我花了好长的时间才发现我们之间的这种不同,所以在这次旅程当中,很重要的一件事就是要明确这种不同。
在书的前半段和约翰夫妇同行的时候有很多类似的描述,当作者或者其他对某事能进入心流或将其当作艺术的人来说,看到这些“旁观者”的操作,是会非常抓狂的:
但是我记得有一次在明州的沙维奇,当时天气差点把我热昏了,我们在酒吧里待了大约一个钟头,出来的时候摩托车晒得几乎没法骑上去。我先发动好准备上路,但是约翰仍然在用脚踩发动器,我闻到一股汽油味,就像炼油厂传出来的一样,便告诉了他,以为这样足以提醒他是发动机湿了,所以无法发动。
“对,我也闻到了。”他边说边继续踩,不停地用力踩,有时还跳起来踩,我不知道该说什么。一直到他踩得气喘如牛,汗流浃背,再也踩不动时,我才建议他不妨把火花塞拿出来晾干,让汽缸通通风,然后我们可以回去喝杯啤酒再出来。
起初我认为,这只是他们在对待摩托车时特有的态度,但是后来才发现情形并非如此……有一天我在他们家等着一起上路,我注意到水龙头在滴水,我记得上次就已经滴了,事实上已经滴了很久。我提醒他这件事,约翰告诉我,他换过新的皮圈但还是滴水,他说了这些就不再提了,也就是说事情到此为止。如果你试过修理水龙头,但是情况依旧,那就表示你命中注定有个会滴水的水龙头。
我很惊讶,水龙头这样日复一日、年复一年地滴滴答答地响,他们难道不会神经衰弱吗?然而我发现他们一点都不担心,也不去注意这件事。所以我的结论是他们不怕被水龙头打扰。有些人的确如此。
这些文字的画面感过于强烈以至于可以使你的血压迅速升高,当然其实这些问题并不只是在科技方面(虽然编程应该算是走在科技前沿),因为传统工作也可以进入心流状态。但是在工作中也时常能看到类似的现象。可能就像上文所描述的,他们只是代码的“旁观者”吧。也只能以此来慰藉自己,降低自己的血压。
对科学的讨论
所以在 20 世纪,科学研究成果的寿命似乎比 19 世纪要短得多,就是因为科学研究的规模现在大多了。如果下一个世纪科学研究的速度是现在的十倍,那么任何科学研究成果的寿命,很可能只有现在的十分之一。是什么缩短了它的寿命?最主要的就是假设的增加,假设愈多,研究成果的寿命就愈短。近几十年来假设大量增加的原因似乎来自于科学方法的本身。你看得愈多,知道得就愈多。你不是从一大堆假设当中筛选出一项真理,你是不断地提供大量的假设。
在吾辈为数不多的几年编程实践之后得出的经验是:编程也是一项基于假设的工作,这些假设都是隐藏着的,编程工作的“道”则是要充分挖掘当前代码工作环境的假设,挖掘的越充分则代码越可靠(什么,需求又变了?)。
例如都是输出“hello world”,在单线程正确输出和在多线程竞争条件下正确输出的方法就是完全不同的(输出缓冲区是否开启,缓冲区大小,线程数量和物理CPU核心数的差距,,也都可能会影响结果)。
当然我们并不是要无限的增加假设来无限提高代码的鲁棒性,而是要使得代码的形状正好可以完美匹配当前的需求(这就要求我们可以充分挖掘当前需求假设)。
对于摘录的文字,吾辈的想法是:
虽然科学在创造越来越多的假设使得科研成果的寿命越来越短,但是在更多的假设下得到的结论也能更精确的解释某些现象(经典力学、相对论)。这一点上和软件开发是类似的(应该?),挖掘越多的假设可以开发出bug或者缺陷越少的代码,但是随着假设的增多,软件的适用范围也会越来越窄,从而影响了软件的寿命(什么,需求又变了?)。当然这可能并不完全正确,毕竟人人都想创造强大的软件。但是伟大的先人也说过:软件行业没有银弹。
在这个意义上,程序员就是一位小型科学家。科学家为某个理想化的世界创建近似模型,以便对其进行预测。只要模型的预测成真,一切都好;当预测的事件与实际情况不符时,科学家会修正模型以减少差异。同样地,当程序员被分配一个任务时,他们会创建一个初步设计,将其转化为代码,与实际用户进行评估,并迭代地完善设计,直到程序的行为与期望的产品非常接近。 from https://htdp.org/2023-3-6/Book/part_preface.html
上面这段文字摘自另一本书《How to Design Programs》,这段文字从另一个角度说明了“计算机科学”的合理性(也是一门科学)。虽然《黑客》一书的作者并不认同“计算机科学”这个学科名称:
一直不喜欢“计算机科学”(computer science)这个词。主要原因是根本不存在这种东西。计算机科学就像一个大杂烩,由于某些历史意外,很多不相干的领域被强行拼装在一起。这个学科的一端是纯粹的数学家,他们自称“计算机科学家”,只是为了得到国防部研究局(DARPA)的项目资助。中间部分是计算机博物学家,研究各种专门性的题目,比如网络数据的路由算法。另一端则是黑客,只想写出有趣的软件,对于他们来说,计算机只是一种表达的媒介,就像建筑师手里的混凝土,或者画家手里的颜料。所以,在“计算机科学”的名下,数学家、物理学家、建筑师都不得不待在同一个系里。
但是这也仅对于“黑客”而言,但是作为一个悲惨的CS打工人,提高一些“科学素养”还是很有帮助的。
对教育的批判
你成了一部机器,不断地对那些如潮水般涌来的天真学生重复同样枯燥乏味的教材。他们不了解为什么你变得这样乏味,因而对你失去了尊敬。大家也受了你的传染。
你不断上课、上课、上课的原因是,这是经营一所学校最经济的方法,让外界的人误以为学生得到了完整的教育。
真正的大学并不听命于任何民意机关,也不是由任何建筑物所构成的,只要它自己宣布这个地方已不再是圣所,真正的大学就已经消失,所遗留下来的只是一些砖墙、藏书和种种物质的结构罢了。
除了这种心灵的世界之外,不巧也有一种合法的机构有同样的名称,但是却完全是两码子事。它是非营利性的组织,隶属于州政府,同时坐落在特定的地方,它不但拥有校产,还能发薪水,收学费,还要受法律的约束。
然而这种大学,也就是合法的组织,却没有办法真正提供任何教导,它不但无法激发新知识的产生,也无法衡量学问的价值。它根本就不是真正的大学,它只像教会外表的建筑一样,坐落在某个特定的地点,提供真正的教会各种有利于生存的环境。
斐德洛认为,凡是没有办法觉察这种差异的人,就会误以为掌握了教会的建筑就等于掌握了教会。他们认为,学校的教授既然领了薪水,一旦得到上面的指示,就应该抛弃自己的见解,毫无异议地接受学校的指挥,就像受雇于一般公司行号,处处要为老板说话一样。 他们看到的是虚假的大学,而没看到真正的大学。
愈聪明愈认真的学生愈不需要分数,很可能是因为他们对学问的本身比较感兴趣。而愈懒惰愈愚笨的学生则愈需要分数,因为可以让他们知道自己是否及格了。
以上是《禅》内对于教育的批判(更多是大学),而在《黑客》中也有许多对教育的批判(更多是小学和初高中):
公立学校的老师很像监狱的狱卒。看管监狱的人主要关心的是犯人都待在自己应该待的位置。然后,让犯人有东西吃,尽可能不要发生斗殴和伤害事件,这就可以了。除此以外,他们一件事也不愿多管,没必要自找麻烦。所以,他们就听任犯人内部形成各种各样的小集团。根据我读到的材料,犯人内部的关系是扭曲、野蛮、无孔不入的。处在这种人际关系的最底层可不是好玩的事。
至于学校,不过是这个虚假环境中关住牲口的围栏。表面上,学校的使命是教育儿童。事实上,学校的真正目的是把儿童都关在同一个地方,以便大人们白天可以腾出手来把事情做完。我对这一点没有意见,在一个高度工业化的社会,对孩子不加管束,让他们四处乱跑,无疑是一场灾难。
而在《心流》中有一段对于应试教育的批判:
专注是心流的关键。于是问题来了:中国的高中生在应试的压力下不是也很专注吗,他们体会到心流了吗?我的判断是否定的。爱因斯坦就抱怨他的一次应试经历,他说过后很长时间都不能复原。为什么如此?第一,那活动不是他心向往之,而是被迫的。第二,反复无数次的复习中,没有任何新的刺激,完全是乏味的重复。故高考结束之日,就是全体考生背叛这一活动之时。上述造成心流的活动,比如攀岩、写诗、思考哥德巴赫猜想,哪能如此。一句话,能造就心流的活动,大多还需要当事者自觉自愿,乐在其中。米哈里的著作中没有对“考生的专注”多花笔墨,可能是因为在他的国家中,这种灾病不成气候。
虽然对于应试教育的批判已经是老生常谈了,但是从另外两本书看到哪怕在教育理念“遥遥领先”的美丽国,教育体制也是被疯狂批判的对象(当然级别已经不知道高到哪里去了)。而在《禅》一书中作者和学生所讨论的“良质”和心流也可以做一些类比,也可以说这段历程是老师和学生一起找寻某门课程中的心流体验的历程。而对于《黑客》来说,被同龄人孤立的书呆子,也因为在别的领域能够体会到心流而不对社交如此感兴趣:
虽然“书呆子”饱尝不受欢迎之苦,但是为了解除痛苦而让他们放弃“聪明”,我想大多数人是不会愿意的。对他们来说,平庸的智力是不可忍受的。不过,要是换了别的孩子,情况就不一样了,大多数人会接受这笔交易。对于很多人来说,这反而是更上一层楼的机会。即使是那些智力排名在前20%的学生(我在这里假设智力可以测量,那时的人们似乎都相信这一点),谁不愿意用30分的成绩换来别人的友爱和钦佩?
我认为,这就是问题的根源。“书呆子”的目标具有两重性。他们毫无疑问想让自己受欢迎,但是他们更愿意让自己聪明。“受欢迎”并不是你在课后时间随便做一做就能实现的,尤其是在美国的中学中,在这里,所有人为了个人魅力都会进行激烈竞争。
书呆子不受欢迎的真正原因,是他们脑子里想着别的事情。他们的注意力都放在读书或者观察世界上面,而不是放在穿衣打扮、开晚会上面。他们就像头顶一杯水来踢足球,一边踢球,一边拼命保持不让水洒出来。其他人都在一门心思玩足球,遇到这样的对手,自然能够毫不费力地击败,并且心里还奇怪,对方怎么如此无能。
就算书呆子心里想着变得与其他小孩一样受欢迎,做起来却是难上加难。因为那些受欢迎的小孩从小就在琢磨如何受欢迎,打心底里追求这个。但是,书呆子从小琢磨的却是如何更聪明,心底里也是这样追求的。这都是受父母的影响,书呆子被教导追求正确答案,而受欢迎的小孩被教导讨人喜欢。
良质和画家和心流
在《禅》中作者一直在追寻良质,在《黑客》中作者将编程运动比作画家艺术,而《心流》一书则是完全的在教会读者如何在某件事上进入心流体验:
或者用更简单明了的话来说:如果你想在盖一间工厂,或是修一辆摩托车,甚至治理一个国家的时候,不会发生被 卡住的情形,那么古典的二分法,虽然必要,但是不足以满足你的需要。你必须对工作的品质有某种情感,你必须能判断什么才是好的,这一点才能促使你行动。这种感受力即使是你与生俱来的,你也仍然可以努力拓展它的范围。它不仅仅是你的直觉,也不仅仅是无法解释的技巧或是天才,它是你与良质接触之后产生的直接结果。它也是过去二分法的理性想要掩盖的一面。
当然,提升自己的精神层次并不一定要接触摩托车,单纯到像磨一把菜刀、缝一件衣服或是修补一张坏掉的椅子,它们背后的问题都是一样的。你做任何一件事都可以把它做得很漂亮,或是很丑陋。
保持内心的宁静在机械工作上并不是一件小事,它是工作的核心。能够使你平静的就是高级的手艺,反之,则是低级的。规格说明、测量仪器、品质监督与最后阶段的品质检查,这些都是达 到内心宁静的方法。而最后真正重要的,就是要达到内心的宁静,除此之外别无他物。因为只有内心宁静,我们才能觉察到良质的存在,它超越了浪漫和古典的认知,将两者融合为一。无论进行任何工作,都必须具有良质。要想具有鉴赏力,了解如何完成高级的工作,体会和工作融为一体的感觉,就要培养内心的宁静。如此一来,良质才能出现在你的心中。
在《黑客》中则是如下的阐述:
这种看法是错的。计算机和画画有许多共同之处。事实上,在我知道的所有行业中,黑客与画家最相像。黑客与画家的共同之处,在于他们都是创作者。与作曲家、建筑师、作家一样,黑客和画家都是试图创作出优秀的作品。他们本质上都不是在做研究,虽然在创作过程中,他们可能会发现一些新技术(那样当然更好)。
当然在心流中就更多了:
外科医疗的性质决定了它是最能集中注意力的。很多外科医生表示给多少钱也不干医院其他科的工作。他们认为:内科治疗常常看不清目标。神经科的目标更模糊,常常十年才能治好一个病人。除了目标清晰,外科的诊断与手术中会不断得到回馈,以评估进展。明确已获得的进展,与全神贯注地继续工作密切关联。
里柯·麦德林在工作时常有这样美好的感觉。他跟胡里欧是同事,在另一条装配线上工作。他每完成一个单元,规定的时间是43秒,每个工作日约需重复600次。大多数人很快就对这样的工作感到厌倦,但里柯做同样的工作已经5年多了,还是觉得很愉快,因为他对待工作的态度跟一名奥运选手差不多,常常思索如何打破纪录;就像一个苦练多年、只为了刷新纪录的赛跑选手,里柯也训练自己创造装配线上的新纪录。他像外科医生一般,一丝不苟地设计工具的安放顺序和每一步动作。经过5年的努力,他最好的成绩是28秒就装配完一个单元。
他力求表现得更好,一方面固然是为了争取奖金和领班的赏识,但他往往并不张扬已遥遥领先的事实;另一方面知道自己行已经够了,更何况,以最高速度工作时会产生一种快感,这时要他放慢速度简直是“强人所难”。里柯说:“这比什么都好,比看电视有意思多了。”里柯知道,他很快就会达到不能在同样工作上求进步的极限,所以他每周固定抽两个晚上去进修电子学的课程。拿到文凭后,他打算找一份更复杂的工作。我相信他会用同样的热忱,努力做好任何一份工作。
看着这些文字就会有一种爽感,这可能也是为什么“心流”这个名词吾辈最先听说也是在游戏领域吧。而游戏领域确实非常需要好的心流设计来和玩家互动。毕竟游戏的心流是外显的而且可以显著的影响游戏的销量和评价。
一些实践
所以在修理机器这方面,如果你的自我太强,往往无法把工作做好。因为你总是会被愚弄,很容易犯错,所以修理人员自大的个性对他颇为不利。如果你认识很多技术人员,我想你会同意我的观点,他们往往相当谦虚而且安静。当然,也有例外。不过即使他们起初无法保持安静和谦逊,长久工作下来,也会变成这样的个性。同时,他们还具有高度的警戒心,专注而又懂得怀疑,不会以自我为中心。
在开始修理之前,你可以把要做的事写在纸上,然后再组织成适当的结构。你会发现,在不断的重组过程当中,会出现更多的想法。这么做不但节省不少时间,而且会让你不再慌张得出问题。
谦虚当然是非常重要的品质,这对debug也非常有益。而任务分解也是另一门需要好好钻研的艺术(如何把任务拆分的足够小还能可执行),比如在敏捷开发时,如何将每次的迭代代码缩减到足够小,但是又需要保证每次的代码提交完成了一个完整的任务,这就非常考验任务分解的水平了。
有一件事情是可以借鉴的(至少可以确认),那就是应该如何学习编程。画家学习绘画的方法主要是动手去画,黑客学习编程的方法也理应如此。大多数黑客不是通过大学课程学会编程的,他们从实践中学习,13岁时就自己动手写程序了。即使上了大学,黑客学习编程依然主要通过自己写程序。
画家的作品都会保留下来,你观察这些作品,就能看出他们是怎么一步步通过实践学习绘画的。如果你把一个画家的作品按照时间顺序排列,就会发现每幅画所用的技巧,都是建立在上一幅作品学到的东西之上。某幅作品如果有特别出色之处,你往往能够在更早的作品上发现一个小规模的初期版本。
我想大多数创作者都是这样学习和工作的,作家和建筑师似乎都是如此。也许对于黑客来说,采取像画家这样的做法很有好处:应该定期地从头开始,而不要长年累月地在一个项目上不断工作,并且试图把所有的最新想法都以修订版的形式包括进去。
吾辈认为写代码和传统工业最大的区别就在于此,在计算机上运行一个完整的项目代码几乎是没有成本的,你可以在你的电脑上任意的修改、调试、观察、运行Linux的内核代码。而Linux内核这样庞大的项目类比到传统工业领域的项目的话,作为一个菜鸟是很难有资源和资格可以对其进行如此狂野的改动和调试的。因为你会创造现实的产物,成本比执行代码更高而且反馈也没有代码运行如此的即时。
这也引出了另一个话题,吾辈认为对于编程方面的技术掌握的最佳实践就是对代码的动态调试,不论是业务代码还是框架,调试永远是最快的学习途径。当然这也关乎到你写代码时的思维逻辑:“我的代码便于调试吗?”,如果现在别人要运行调试你的代码需要非常长的前期准备工作(环境、配置。。),那么这段代码必定是不合格的。这也在某种程度上契合TDD的思想:你需要写出可测试(可调式)的代码。
调试也是CS领域的另一门艺术。
杂谈里的杂谈
让我先问你一个问题:大庭广众之下,你有没有什么观点不愿说出口?如果回答是没有,那么你也许应该停下来想一想了。你的每一个观点都能毫不犹豫地说出口,你自己深深赞同这些观点,并且你也确信肯定会获得别人的赞同,这是否太过于巧合了?
一种可能是,也许事情并没有这么巧合,你的观点就是从别人那里听来的,别人告诉你什么,你就相信了什么,你把别人灌输的观点当作了自己的观点。另一种可能是,你的思想观点确实是独立思考得到的,碰巧与社会主流的思想观点一模一样。这种情况的可能性似乎不大,因为这意味着,如果别人犯错了,你也必须碰巧犯一个同样的错误。为了防止他人复制,古代制作地图的工匠会故意在地图上画错一个小地方。如果你的地图与他的地图一样,就说明不太可能是你自己独立制作的。
当然这三本书中并不只是包含了上面的内容,上面也只是摘录了目前吾辈感兴趣的一些部分。然而像《黑客》中对于从众心理的批判和下面对于编程语言的思考等等也是非常值得读者一看和思考的。
总结
现在来看,这三本书的关系就像是:《心流》给出了“良质”“编程艺术”的概况性定义:它们都是心流的一种表现形式。并且给出了完整的方法指导你如何成为“编程艺术家”。《禅》则是作者的一次对“良质”或者说“心流”的探索和得出结论的心路历程。而《黑客》就是“心流”“良质”在黑客或者说编程方面的一些实践。这也可以说是高手的某种趋同性或者说大道至简罢。
总结一下。在2023年的今天吾辈的结论是这三本书都非常非常非常值得一看,可以直接成为我的推荐图书TOP3(如果有No.4的话可能是 G.E.B. 这就是后话了)。
那么本文就到此结束,快点端上去罢。