这本书很可以

程序员cxuan 2024-02-18 08:03

这本书《禅与摩托车维修艺术》是我一个朋友推荐给我的,我当时浅显的以为这本书貌似就是通过修摩托车看出来一些哲学问题,但开始读之后却发现很不一样,你竟然能从中看到软件开发的哲学,这些哲学也适用于其他工作方面。

以下内容来源于 https://book.douban.com/review/2541870/,作者:compactset

最近看到很多软件开发的书后参考文献都有这本书,就觉得很奇怪怎么会有摩托车维修技术的书。后来又看到很多犇人(Code Complete2中也有)都推荐这本书(Joel和Plauger的推荐在文末),于是找来看了,读后觉得不愧是经典,不光研究形而上,思考人生意义的人可以读,而且从实用主义的角度看,对技术人员(不光是软件开发人员)甚至任何有工作的人都有很大的启发作用。

Pirsig说,要把工作变为艺术,选择良质。正如一本投资经典书里作者告诉我们,投资者投机者(市场本质上是需要理性和非理性的人群,因此本书中的非二分法的思维方式很有用)要把交易视为一种艺术,如果仅仅看到了盈利和损失,是不能成为好的trader的,好的trader应该专注于他/她的交易艺术,这点做好了,自然能带来好的回报。

于是我带着软件开发的有色眼镜来看这本书并做出了读书笔记:

p229. 摩托车的组件和功能分析,从组件来看一辆摩托车,要了解这些组件的作用,必须进一步解释它的功能。

p233. 你必须先压制住自己的看法,否则你就无法读下去。它是一个比沟里的死水还要沉闷的东西,你会读到化油器,齿轮,压缩里等等,活塞,火花塞,进气等等。如果从浪漫的角度来看就会觉得非常沉闷,丑陋而且十分笨拙,浪漫的人很少能突破这一点。

[软件框架的api文档,锁,线程池,实体,关系,nLn(n),抽象代数中的群环域,初读都很枯燥,难怪文科的人大都理工不行(如钱钟书数学很差),浪漫过头了。达芬奇这种文理通吃的是天才。很枯燥,读不下去的时候要控制住自己的厌倦想停下来的念头。站桩也类似,要继续站下去,甜头就会来了。] 但是一旦你能控制最初的反应,就会继续发现其他的内涵。[先苦后甜]

p251. 如果你直接面对一个疯子,你所了解的就是他疯了,这等于是根本不了解他。要了解他,你就必须从他的角度看事情。

[要用好框架, 要了解它, 就必须从框架的角度来看程序]

p281. 不可以在大太阳下直接修理车子,或者在你累了一整天下来脑筋不清楚的时候修理。

[要在脑子清醒和好的环境下进行软件调试]

p287. 精确的仪器是为了表达一种理念而设计的。约翰认为我接触到的是各种零件,实际我接触的是各种观念。

[程序员面对的类库或code base并不是一砣砣代码,而是各种观念]

p290. 所有相互牵动的结构整体地被称为系统。摩托车也是一种系统,一种真正的系统。

p292. 这就是所谓的摩托车,它是由一组钢铁制的零件所组成的观念体系,其中任何一部分,任何一种形状都是由人所设计出来的。

p298. 我说:"他要把这些零件组合起来,一定对摩托车有相当的了解" 比尔笑着说:"这也是最好的学习方式"。

[深入源代码, 是最好的学习方式]

p306. 在这里要提到逻辑的两种方法,归纳法和演绎法。要解决一般思维无法解决的难题,就要通过你的观察和手册当中所提供的结构,不断交替运用归纳法和演绎法,如此才能找到解决之道。这种交织混杂的正确程序,如果正统化,就是所谓的科学方法。

p309. 你先拿出一个笔记本,把所有的状况都写下来,这样你就知道情况如何,问题要怎么解决。

[相当于在调试卡住时, 跟同事或玩具熊闲聊,把问题讲给他/它听]

p310. 要把问题正确的写下来,起码要兼顾到六方面:

(1) 问题是什么。

(2) 假设问题的原因。

(3) 证实每个问题的假设。

(4) 预测实验的结果。

(5) 观察实验的结果。

(6) 由实验得出结论。

p784. 用这种二分法来修理摩托车,听起来似乎错不了,因为我们已经很习惯它了。但是这不是正确的态度。

p789. 所以,一个人在修理摩托车的时候,对车子的了解分分秒秒都在改变,因而得到了全新知识,其中蕴涵了更多的良质。

p790. 如果你想修一辆摩托车,不会发生被卡住的情形,那么古典的二分法。虽然必要。但是不足以满足你的需要。你必须对工作的品质有某种情感,你必须能判断什么才是好的,注意点才能促使你行动。

[如果调试中充满对bug的痛恨心理,是不好的]

p794. 你的心灵中就会很自然的找到解决的办法,除非你非常容易被卡住。其实怕被卡住是不必要的,因为被卡住越久,你就越能看清楚让你脱困的良质。

[软件调试过程被一个bug卡住很久, 也不是坏事]

要想了解良质,不论是在技术工作上或是其他方面,无私的接纳这种被卡住的现象是各关键。无师自通的技术人员就是因为常常被卡住,才比接受学院训练的人员更了解良质。

p797. 现在为了要把螺丝拿下来,你对它究竟是什么已经不感兴趣了。它的功能才是你研究的重点。于是你会提出有关功能方面的问题,由你的问题就可以知道你对良质的分辨能力。

p808. 当然,提升自己的精神层次并不一定要接触摩托车,单纯到磨一把菜刀,缝一件衣服或是修补一张坏掉的椅子,它们背后的问题都是一样的。你做任何一件事都可以把它做的很漂亮,或是很丑陋。如果你想要有高水平的表现,就必须具备鉴赏力和达到目标的方法,也就是同时具有对良质的古典和浪漫的认识。我们的文化只会给你古典的认知方法,然而它把鉴赏力给忽略了。

[斯宾诺莎磨镜片也算吧? 程序员喜欢做木匠活(The Pragmatic Programmer作者之一)也是出于这个?]

p810. 你得经常跟上流行而不厌倦,所以你落入了流行的陷阱之中。

[在技术上喜欢跟风, 学习各种流行的类库, 框架]

p813. 解决之道就在裴德络的论点当中,古典的认知不应该仅套上浪漫的外壳。古典和浪漫必须从根本上融合在一起。

p815. 保持内心的宁静在机械工作上并不是一件小事,它是工作的核心。能够使你平静的就是高级的手艺,反之就是低级的。而最后真正重要的,就是要达到内心的平静,除此之外别无它物。因为只有内心平静,我们才能觉察到良质的存在。它超越了浪漫和古典的认知,将两者融合为一。要想具有鉴赏力,了解如何完成高级的工作,体会和工作融为一体的感觉,就要培养内心的宁静。

[在敲Quick and Dirty的代码的时候就会觉得很厌烦;而在重构的过程中能体会到笔记本,键盘,手指和大脑融为一体的宁静感觉]

p820. 优秀的技术人员就不会如此。如果他对手中的工作很感兴趣,他就会沉浸在工作之中,而不会产生主客观之间的对立。

[就像好的和尚念经肯定也能沉浸进去, 老太念经时就未必了]

p822. 所以在维修摩托车的时候,最重要的就是要培养内心的宁静。这一点做到了,其他的一切都会变得很自然。内心的平静会产生正确的价值观,正确的价值观就会产生正确的思想,正确的思想就会产生正确的行动,正确的行动的工作就可使别人从中看到做事人内心的平静。

[在浮躁的软件开发环境里, 在项目压力下, 不当的项目管理下, 还能保持内心的宁静吗?]

[好的技术人员在工作时大都很安静,听耳机敲代码的程序员和书里开着录音机瞎修摩托的修理工一样具有破坏力]

p837. 如果你想要修理一部摩托车,那么充足的进取心是最重要的工具。如果你还没有足够的热忱,你最好收拾工具暂放一边。因为它们不会对你有任何帮助。

进取心是精神的补给品,能够推动事情的进行,如果你没有它,就不可能修理摩托车。但是如果你有了它,你就可会知道如何运用它,那么无论如何一定能修好这部摩托车。所以在开始之前,最重要就是要有热忱。

p839. 在你修理机器时,经常会出现劣质的状况:关节生锈了,零件无法组合。这些意外都会消耗一个人的进取心,减少你得热忱,让你觉得十分沮丧,以至于想放弃。我称这些为进取心的陷阱。维修摩托车容易让人受挫,也容易让人愤怒,但这正是它让人觉得有趣的地方。

[软件开发调试中也容易让人受挫, 遗留代码, 需求变化...]

p841. 进取心的陷阱可以定义为,因无法意识到良质,从而使人丧失做事的热忱。陷阱主要有两种:第一种是因外在的环境使你放弃了良质,称为挫折;第二种是你内在的因素引起的,称为忧虑。

p844. 第一次拆卸部件可能会有许多不利,因为你要花更多的时间和金钱去应付意外的损害。但是毫无疑问,下一回你就会远远超过专家了。虽然这个过程很辛苦,但是你对它已经有了感情,这是专家不可能拥有的。避开陷阱的第一个技巧是拿出你的笔记本,写下拆卸的每一个步骤,然后记下以后重新组合时可能产生的问题。第二个技巧是在地上铺一张报纸,把所有的零件由左到右,由上到下排列整齐。

[维护代码的技巧]

p852. 最后,如果你和我一样吃过零件的不少苦头,而且又有投资的能力,那么你也可以学着自己制造零件。自己制造不但不会破坏进取心,反而会激励自己,有一种特殊的感觉。内心因素的陷阱有三个:价值陷阱,真理陷阱,肌肉陷阱。

[开发自己的类库]

p863. 在修理机器这方面,如果你得自我太强,往往无法把工作做好。

[做程序员,要Humble]

p866. 为了减轻自己的焦虑不安,你可以告诉自己,没有哪一个技术人员不会犯错的。如果你自己犯了错,你最起码还有学习的机会。当你觉得厌倦的时候,放下手中的工作去看场表演,打开电视机或者和朋友联络一下,暂时离开那台机器。医治枯燥的最好方法就是睡觉,第二个选择是喝咖啡。

[开发,调试累了,应该休息, 但是像华为那样在桌子下面放铺盖太过分了点]

p869. 我听说有两种焊接工:生产线上的和维修的。前者不喜欢复杂的事,喜欢重复同样的动作,而维修焊接工却很讨厌重复相同的动作。

[coder和developer的区别]

p871. 摒除烦躁最好的方法,就是增加工作时间。如果要赶时间,那么尽可能增加预定的时间,然后降低过高的期望。

p880. 在维修摩托车的时候,往往你提出的许多问题,都会碰到无法解决的状况,因而你就可能丧失信心。其实大可不必如此。

如果你一时找不到答案,就表明你设计的问题无法替你找到你想要的答案,因而你对问题的了解必须更广泛。所以你要做的是进一步研究你的问题,而不是摈弃这些无法回答的状况,它们和是与否的答案同样重要,甚至更重要,它们能够让你成长!

p889. 你想知道怎样画一张完美的画吗?很简单,你先让自己变得完美,然后再顺其自然画出来。这就是所有专家的方式。如果一周当中有六天你都很懒散,不去照顾你得摩托车,那么有什么方法能够使你在第七天突然变得敏锐起来呢?

[要勤拂拭, 技术领域顿悟几率很低吧。像鸠摩罗什他妈怀他的时候突然无师自通会梵语简直是天上掉馅饼。McGrady 这样的天才训练懒散,能力也会下降。所以要勤敲键盘,少上网]

p950. 理性是指建立我们对世界的了解的方式,而神话则是指史前人类的世界观。

p972. 造成这种寂寞的主要原因就是科技。真正的祸首并不是科技本身。而是科技所带来的一种趋势,物化了人与人之间的关系。

p973. 如果有的人工作很枯燥,为了让自己过得愉快些,他就会开始选择良质。然后悄悄地为自身着想而追寻这个目标,使自己手中的工作变成一种艺术。

[很多应用软件或工具软件都是这样来滴,典范是Unix Shell下的工具]

Joel 推荐书目(http://www.joelonsoftware.com/navLinks/fog0000000262.html)里有这本书,下面是他的评价: Some people's attitude towards programming is that it's a nifty way to pay the bills. For others, that's not enough... our work is a significant a part of our lives, and we need a philosophical understanding to make sense of it. This book goes a long way towards relating engineering and philosophy.

P. J. Plauger的评价(Programming On Purpose I page 174): I have yet to find a good book on debugging computer  programs. Until one comes along, you should read this one, which has next to nothing to do with computers. It is, just as its title says, about Zen and maintaining motorcycles. If you happen not to enjoy reading essays, or if you don't get caught up in inner quests by introspective people who happen to be good writers, then you may find this book heavy going. If you find that to be the case, please don't put the book down unfinished.  At the very least, skip to the chapter on debugging motorcycles. You will learn more about the process of debugging software there than anywhere else I can point you.  Don't put the book down until you understand what Pirsig means by  "gumption traps," or until you accept the fact that a 59-cent bolt can be  worth far more than the contents of your wallet. Particularly if you strip its  threads alongside the road, 50 miles from civilization in either direction.  If you finish the book, you will also get a first-rate sermon on Quality  (with a capital Q, by all means). After all that has been written in recent  years about how the Japanese are beating us on quality this and quality  that, Pirsig can put you back in touch with Quality.

还有一个是amazon上一个读者的评价: Whenever I interview someone I ask them what book has most influenced the way they develop software. If they answer "The Pragmatic Programmer" (or "Zen and the Art of Motorcycle Maintenance") then they have the job!

程序员cxuan cxuan 写的文章还不错。会分享计算机底层、计算机网络、操作系统,Java基础、框架、源码等文章。
评论 (0)
  • 文/Leon编辑/cc孙聪颖‍转手绢、跳舞、骑车、后空翻,就在宇树、智元等独角兽企业率领“机器人大军”入侵短视频时,却有资本和科技大佬向此产业泼了一盆冷水。金沙江创投管理合伙人朱啸虎近日突然对人形机器人发难,他表示“最近几个月正在批量退出人形机器人公司”。“只是买回去做研究的,或者买回去做展示的,这种都不是我们意义上的商业化,谁会花十几万买一个机器人去干这些活?”朱啸虎吐槽。不过,朱啸虎的观点很快就遭到驳斥,众擎机器人的创始人、董事长赵同阳回怼道:“(朱啸虎)甚至问出了人形机器人在这个阶段有什么
    华尔街科技眼 2025-04-07 19:24 68浏览
  • 及时生产 JIT(Just In Time)的起源JIT 起源于 20 世纪 70 年代爆发的全球石油危机和由此引发的自然资源短缺,这对仰赖进口原物料发展经济的日本冲击最大。当时日本的生产企业为了增强竞争力、提高产品利润,在原物料成本难以降低的情况下,只能从生产和流通过程中寻找利润源,降低库存、库存和运输等方面的生产性费用。根据这种思想,日本丰田汽车公司创立的一种具有特色的现代化生产方式,即 JIT,并由此取得了意想不到的成果。由于它不断地用于汽车生产,随后被越来越多的许多行业和企业所采用,为日
    优思学院 2025-04-07 11:56 89浏览
  • 在追求环境质量升级与产业效能突破的当下,温湿度控制正成为横跨多个行业领域的核心命题。作为环境参数中的关键指标,温湿度的精准调控不仅承载着人们对舒适人居环境的期待,更深度关联着工业生产、科研实验及仓储物流等场景的运营效率与安全标准。从应用场景上看,智能家居领域要求温湿度系统实现与人体节律的协同调节,半导体洁净车间要求控制温湿度范围及其波动以保障良品率,而现代化仓储物流体系则依赖温湿度的实时监测预防各种产品的腐损与锈化。温湿度传感器作为实现温湿度监测的关键元器件,其重要性正在各行各业中凸显而出。温湿
    华普微HOPERF 2025-04-07 10:05 87浏览
  • 在万物互联时代,智能化安防需求持续升级,传统报警系统已难以满足实时性、可靠性与安全性并重的要求。WT2003H-16S低功耗语音芯片方案,以4G实时音频传输、超低功耗设计、端云加密交互为核心,重新定义智能报警设备的性能边界,为家庭、工业、公共安防等领域提供高效、稳定的安全守护。一、技术内核:五大核心突破,构建全场景安防基座1. 双模音频传输,灵活应对复杂场景实时音频流传输:内置高灵敏度MIC,支持环境音实时采集,通过4G模块直接上传至云端服务器,响应速度低至毫秒级,适用于火灾警报、紧急呼救等需即
    广州唯创电子 2025-04-08 08:59 68浏览
  •     根据 IEC术语,瞬态过电压是指持续时间几个毫秒及以下的过高电压,通常是以高阻尼(快速衰减)形式出现,波形可以是振荡的,也可以是非振荡的。    瞬态过电压的成因和机理,IEC 60664-1给出了以下四种:    1. 自然放电,最典型的例子是雷击,感应到电力线路上,并通过电网配电系统传输,抵达用户端;        2. 电网中非特定感性负载通断。例如热处理工厂、机加工工厂对
    电子知识打边炉 2025-04-07 22:59 44浏览
  •   工业自动化领域电磁兼容与接地系统深度剖析   一、电磁兼容(EMC)基础认知   定义及关键意义   电磁兼容性(EMC),指的是设备或者系统在既定的电磁环境里,不但能按预期功能正常运转,而且不会对周边其他设备或系统造成难以承受的电磁干扰。在工业自动化不断发展的当下,大功率电机、变频器等设备被大量应用,现场总线、工业网络等技术也日益普及,致使工业自动化系统所处的电磁环境变得愈发复杂,电磁兼容(EMC)问题也越发严峻。   ​电磁兼容三大核心要素   屏蔽:屏蔽旨在切断电磁波的传播路
    北京华盛恒辉软件开发 2025-04-07 22:55 67浏览
  • 在全球电子产业面临供应链波动、技术迭代和市场需求变化等多重挑战的背景下,安博电子始终秉持“让合作伙伴赢得更多一点”的核心理念,致力于打造稳健、高效、可持续的全球供应链体系。依托覆盖供应商管理、品质检测、智能交付的全链路品控体系,安博电子不仅能确保电子元器件的高可靠性与一致性,更以高透明的供应链管理模式,助力客户降低风险、提升运营效率,推动行业标准升级,与全球合作伙伴共同塑造更具前瞻性的产业生态。动态优选机制:构建纯净供应链生态安博电子将供应商管理视为供应链安全的根基。打造动态优选管控体系,以严格
    电子资讯报 2025-04-07 17:06 49浏览
  • 医疗影像设备(如CT、MRI、超声诊断仪等)对PCB的精度、可靠性和信号完整性要求极高。这类设备需要处理微伏级信号、高频数据传输,同时需通过严格的EMC/EMI测试。制造此类PCB需从材料选择、层叠设计、工艺控制等多维度优化。以下是关键技术与经验分享。 1. 材料选择:高频与生物兼容性优先医疗影像设备PCB常采用 Rogers RO4000系列 或 Isola FR4高速材料,以降低介电损耗并保证信号稳定性。例如,捷多邦在客户案例中曾为某超声探头厂商推荐 Rogers RO4350B
    捷多邦 2025-04-07 10:22 90浏览
  •     在研究Corona现象时发现:临界电压与介电材料表面的清洁程度有关。表面越清洁的介电材料,临界电压越高;表面污染物越多的地方,越容易“爬电”。关于Corona现象,另见基础理论第007篇。    这里说的“污染物”,定义为——可能影响介电强度或表面电阻率的固体、液体或气体(电离气体)的任何情况。    IEC 60664-1 (对应GB/T 16935.1-2023) 定义了 Pollution Degree,中文术语是“污染等
    电子知识打边炉 2025-04-07 22:06 45浏览
  • 贞光科技作为三星电机车规电容代理商,针对电动汽车领域日益复杂的电容选型难题,提供全方位一站式解决方案。面对高温稳定性、高可靠性、高纹波电流和小型化等严苛要求,三星车规电容凭借完整产品矩阵和卓越技术优势,完美满足BMS、电机控制器和OBC等核心系统需求。无论技术选型、供应链保障、样品测试还是成本优化,贞光科技助力客户在电动汽车产业高速发展中占据技术先机。在电动汽车技术高速发展的今天,作为汽车电子系统中不可或缺的关键元器件,电容的选型已成为困扰许多工程师和采购人员的难题。如何在众多参数和型号中找到最
    贞光科技 2025-04-07 17:06 36浏览
  • 曾几何时,汽车之家可是汽车资讯平台领域响当当的“扛把子”。2005 年成立之初,它就像一位贴心的汽车小助手,一下子就抓住了大家的心。它不仅吸引了海量用户,更是成为汽车厂商和经销商眼中的“香饽饽”,广告投放、合作推广不断,营收和利润一路高歌猛进,2013年成功在纽交所上市,风光无限。2021年更是在香港二次上市,达到了发展的巅峰,当年3月15日上市首日,港股股价一度高达184.6港元,市值可观。然而,如今的汽车之家却陷入了困境,业务下滑明显。业务增长瓶颈从近年来汽车之家公布的财报数据来看,情况不容
    用户1742991715177 2025-04-07 21:48 53浏览
  • 在人工智能技术飞速发展的今天,语音交互正以颠覆性的方式重塑我们的生活体验。WTK6900系列语音识别芯片凭借其离线高性能、抗噪远场识别、毫秒级响应的核心优势,为智能家居领域注入全新活力。以智能风扇为起点,我们开启一场“解放双手”的科技革命,让每一缕凉风都随“声”而至。一、核心技术:精准识别,无惧环境挑战自适应降噪,听懂你的每一句话WTK6900系列芯片搭载前沿信号处理技术,通过自适应降噪算法,可智能过滤环境噪声干扰。无论是家中电视声、户外虫鸣声,还是厨房烹饪的嘈杂声,芯片均能精准提取有效指令,识
    广州唯创电子 2025-04-08 08:40 76浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦