《程序员修炼之道——通向务实的最高境界》读书笔记

第一章 务实的哲学

务实的程序员的特质是什么?是他们面临问题时,在解决方案中透出的态度、风格及理念。他们总是越过问题的表面,试着将问题放在更宽泛的上下文中综合考虑,从大局着想。毕竟,若不去了解来龙去脉,结合实际如何谈起?又怎能做出明智的妥协和合理的决策?

  • 人生是你的

    • 你有权选择

    • 在所有弱点中,最大的弱点就是害怕出现弱点

  • 我的源码被猫吃了

    • 在面对缺点时也必须诚实——承认我们犯了错误,而且是因为我们的无知而犯下的。

    • 提供选择,别找借口

      • 给出选择,而不是找借口。不要说搞不定;解释一下要做什么才能挽回这个局面。
    • 挑战:当你意识到自己在说“我不知道”时,一定要接着说“——但是我会去搞清楚”。用这样的方式来表达你不知道是非常好的,因为接着你就可以像一个专家一样承担起责任。

  • 软件的熵

    • 绝望是会传染的,就像狭窄空间中的流感病毒。无视一个明显损坏的东西,会强化这样一种观念:看来没有什么是能修好的,也没人在乎,一切都命中注定。所有的负面情绪会在团队成员间蔓延,变成恶性循环。
    • 不要放任破窗
      • 不要只是一些东西非常危急,就去造成附带损害。
  • 石头做的汤和煮熟的青蛙

    • 做推动变革的催化剂
      • 当你清楚地知道需要做些什么,以及怎样去做。你就该拿出石头了——找出你合理的请求,然后不断完善。大家都觉得,加入一个推进中的成功项目更容易一些。因为只要一窥未来,大家就能团结起来。
    • 牢记全景
      • 不要做那些村民。项目进展缓慢,完全失去了控制——这是很常见的症状。大多数软件灾难都始于微不足道的小事,项目的拖延也是一天天累积而成的。系统一个特性接一个特性地偏离规范,一个接一个地补丁加到代码上,最终原始diamagnetic无影无踪。往往就是一件件小事破坏了团队和士气。
      • 永远要留意大局,持续不断地审视你身边发生地事情,而不要只专注于你个人在做的事情。
  • 知识组合

    • 定期投资
    • 多样化
    • 风险管理
    • 低买高卖
    • 重新评估调整
      • 目标

        1. 每年学习一门新语言
        2. 每月读一本技术书
        3. 还要读非技术书
        4. 上课
        5. 加入本地的用户组和交流群
        6. 尝试不同的环境
        7. 与时俱进

        试着把你领悟到的东西应用到你当前的项目中。
        当有人为你问题时,如你的确毫无思路,也只能坦率地承认自己无法作答。
        不要停在这里,把找到答案作为一项个人挑战。

  • 交流

    • 了解听众
      • 你需要了解受众的需求、兴趣和能力。
    • 明白自己想要说什么
    • 选择时机
    • 挑选风格
    • 让它看起来不错
    • 让听众参与
    • 做倾听者
    • 回应别人

    说什么和怎么说同样重要


    第二章 务实的方法

    • 优秀的设计比糟糕的设计更容易变更
      • ETC原则(Easier to Change,更容易变更)
        • 每次问自己:“我刚刚做的事情是让整个系统更容易改变还是更难改变?”
        • 如果不知道怎么才能ETC,你需要做两件事:试着让你写的东西可替换想着一直保持代码的解耦和内聚就行;二,把它当作培养直觉的一种方式。在工程日记里写下你的困惑。
    • DRY——邪恶的重复
      • 在系统中,每一处知识都必须单一、明确、权威地表达
        • 代码中的重复
        • 文档中的重复(有些注释没有必要,注释和代码不要重复。尽量在代码的命名里面就写清楚)
    • 正交性
      • 独立性和解耦性。其中一个的改变不影响其他任何一个,则这些事物是正交的。
        • 好处:
          - 消除不相关事物之间的影响
    • 可逆性
    • 曳光弹

版权声明:本文为weixin_41969113原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。