不记录,等于没读。
这里是我阅读《程序员修炼之道》这本书的记录。
在上一篇《务实的哲学》中,我们讨论了三种务实的哲学,分别是:
- 这是你的人生:我们有权选择
- 我的源码被猫吃了:我们为所做的一切负责
- 软件的熵:我们奋力护卫自己的代码
本文继续描述 务实的哲学
。
4 石头做的汤和煮熟的青蛙
石头做的汤
是一则故事。描述的是饥肠辘辘又没有粮食的士兵来到一个村庄,但村民们并不愿分享他们所剩不多的食物。于是士兵用石头煮了一锅汤,利用村民的好奇心,诱导村民主动将各种食物放入锅中。最终,他们煮了一大锅热气腾腾的汤。然后士兵将汤里的石头扔掉,和整个村子的村民一起分享了一顿美餐。
这个故事告诉我们,当需要多部门协同完成一个项目时,如果他们推托或者因看不清整体而迷惑,可以在一开始只提一个小的合理的请求。一旦有成果产出,就展示给他们看,然后再提另外一些小的请求,不断完善。用这种方法让协作者主动地参与进来,人们会觉得加入一个推进中的成功项目更容易一些。因为只要一窥未来,大家就能团结在一起。
我自己并不喜欢这种方式,我觉得这种操纵他人的小聪明令人反感。有点和社会心理学中的 登门槛效应
类似。
登门槛效应指的是人们在接受了一个小的、看似无关紧要的请求(即“登门槛”)之后,更有可能接受随后提出的更大、更相关的请求。这种现象基于人们在心理上倾向于保持行为的一致性,以及对已经建立的承诺或关系的认同感。
煮熟的青蛙
也是一个故事,即我们经常听到的“温水煮青蛙”。这个故事告诉我们要对“坏味道”保持敏感,比如糟糕的设计、错误的决定、低劣的代码。否则,就会像那只放在温水煮的青蛙那样,意识不到水温缓慢上升,直到被煮熟。
我们要永远留意着大局,持续不断地审视身边发生的事情,而不要只专注于你个人在做的事情。
5 够好即可的软件
现实世界不会让我们产生真正完美的软件。时间、技术和性格合力阻碍着我们。我们需要做的是产生 够好即可
的软件。“够好”并不意味着草率或糟糕的代码,而是必须:
- 达到用户的需求;
- 达到基本性能、隐私和安全标准。
借用 Ed Yourdon 的描述,够好即可的软件是:“对用户、未来的维护者来说够好即可,只要好的程度能让你自己内心平静就可以。”
换句话说,多少算够好,并没有精确的指标,需要程序员按照经验判断。
够好即可的软件可以让用户更早地使用软件,然后听取他们的反馈,再进行改进。这是一个良性循环。如果早点让用户参与试用,他们提供的反馈常常能引领你做出更好的最终方案。
需要注意的是,你需要仔细地甄别和分析用户的反馈。提需求的用户通常都是不专业的,他们的需求描述通常缺乏统一性、抽象、细节、兼容性,这就代表他脑袋里真正想要的东西很大概率上跟他描述出来你听到东西根本不是一回事。
6 知识的投资组合
知识和经验是你最重要的专业资产。但可惜的是,随着时间推移,这些资产的价值会逐步降低。因为新技术层出不穷,你的知识会变得过时;市场变化可能使你的经验变得不再适用。因此,学习新事物的能力是你最重要的战略资产。
知识就是你的资产,要想让资产升值,需要一定的方法,这些方法和金融投资类似:
- 定期投资:定期地学习新的知识。
- 多元化:接触不同的领域知识
- 风险管理:学习流行技术和新技术的比例要合理
- 低买高卖:在一项新兴技术流行之前就开始学习
- 重新评估调整:及时调整,及时止损
持续的学习非常重要,一旦你进入了对某个新语言或新技术的舒适期,向前走,再学一个:
- 每年学习一门新语言:不同的语言以不同的方式解决相同的问题。多学习几种解决方法,能帮助自己拓宽思维,避免陷入陈规。
- 每月读一本技术书
- 还要读非技术书
- 上课:网上有很多有趣的课程
- 加入本地的用户组和交流群:主动参与,了解公司之外的人们都在做什么
- 尝试不同的环境:如果你只在 Windows 下工作,就去尝试下 Linux 。如果只用 IDE 编程,就尝试下 Makefile 。反之亦然。
- 与时俱进:关心与你当前项目不同的技术,阅读相关的新闻和技术贴。
我自己平时在 Windows 的图形界面下编程,读完这章后,我去体验了没有 GUI 的操作方式(Linux)。然后我才意识到:图形界面的所见即所得,这种操作方式很好,很直观,又容易入门。但它也有一个不可忽视的事实,那就是所见即全部!当你付出一些学习成本后,或许会觉得 Makefile 式的编译方式更加灵活,也更容易自动化。比如用一个脚本先加载量产配置文件,再编译,然后将编译生成的可执行文件复制到指定文件夹,最后再恢复成测试配置文件。
在学习的过程中,批判性地分析读到和听到的东西。批判性思维本身是一门完整的学科,入门读物推荐《学会提问》。原书名为《Asking the Right Questions》,它还有一个副标题叫做“A Guide to Critical Thinking”,即“批判性思维指南”。《程序员修炼之道》也在这一节给出了批判性思维的几个基本要点:
- 问“五个为什么” (Five Why):这样做可以让你更接近本源,但要注意礼貌。
- 分析谁从中受益 (Who does this benefit):追踪钱的流动更容易理清脉络。
- 分析事情存在的背景和情景 (What ’s the context)。
- 什么时候在哪里可以工作起来 (When or Where would this work)
- 为什么这是个问题 (Why is this a problem)
这也是常说的
5W
原则:即“What(什么)、Why(为什么)、Who(谁)、When(何时)、Where(哪里)”,是一种常用的提问和信息收集方法。它帮助我们更全面地了解一个事件或问题的各个方面,从而更好地分析和解决问题。
7 交流
越是有效的交流,影响力越大。我们要重视交流,很多技术人员不擅长这个,担心自己做不好。或许我们应该向电影里的韦斯特女士学习:“我相信,被打量总比被忽视要好。”
信息无误的被对方理解,才算是交流。要想完成这个目标可不简单:
- 第一步,要能将信息无误的表达出来。明确传递哪些信息,这些信息最开始存在于你的头脑之中,你要能不失真的将它们转换成语言或文字。这一步就很难,我们常常词不达意,描述的也不完整。
- 第二步,对方具备接收信息的意愿。如果你显得很不专业,或者你的语气让对方觉得不舒服,又或者你选择的时机不对,那么交流到此为止了,因为对方根本听不进你的话。
- 第三步,对方的感官无误地接收到你的信息。“感官”一般指耳朵或眼睛。对方有可能听错,也有可能看错。你要想办法避免。
- 第四部,对方解释感受到的信息。大部分的误解发生在这一步。对方如何解释信息,取决于他过去已有的经验与观念!这可能导致他的理解与你的本意相差很大。
- 第五步,确认对方正确理解了信息。因为第四步的原因,当对方表示理解信息后,你还要有礼貌地请对方复述下他理解的信息,以便有机会修正。
本文用到了以下书籍的观点:
- 《软件随想录》
- 《成为技术领导者》
- 《非暴力沟通》
- 《学会提问》
每一份打赏,都是对创作者劳动的肯定与回报。!