Skip to content

Latest commit

 

History

History
115 lines (113 loc) · 4.77 KB

The_Pragmatic_Programmer.org

File metadata and controls

115 lines (113 loc) · 4.77 KB

Part 1 注重实效的哲学

我的源码让猫给吃了

  1. Tips: Provide Options, Don’t Make Lame Excuses 提供各种选择,不要找蹩脚的借口
  2. 这让我想起了一次和测试开会,讨论产品方案的可行性,讨论结果是方案不可行。 就在我认为该散会时,测试提出应该由我们提出几种可行的替代方案,让产品从中选择, 这样,一则缓解了产品的压力,给产品提供了思路,二则,解决方案从技术上来讲是可控的, 方便开发和测试。当时第一个念头就是事情应该这么办,接着就是我怎么就没想到这些呢? 我应该想到的!我一向不是个严于律己的人,我什么会产生这种自责情绪,实在搞不懂。。。 直到今天重读这本书才发现我确实应该想到的!

软件的熵

  1. Tips: Don’t Live with Broken Windows 不要容忍破窗户
  2. 熵(entropy): 某个系统中“无序“的总量。(物理学概念)熵总是增加
  3. 当前项目中的破窗户:
    • 前端页面惨不忍睹
    • 当前前段框架不支持返回功能(全部都是ajax请求,浏览器的返回功能无法使用)
    • 上传插件依然依赖flash

石头汤与煮青蛙

  1. Tip: Be a Catalyst for Change 做变化的催化剂
  2. 人们发现,参与正在发生的成功要更容易。让他们瞥见未来,你就能让他们聚集在你的周围。
  3. 大多数软件灾难都是从微不足道的小事情开始的,大多数项目的拖延都是一天一天发生的。 系统一个特性一个特性地偏离其规范,一个又一个的补丁被打到某段代码上,直到最初的代码一点没有留下。
  4. Tip: Remember the Big Picture. 记住大图景

足够好的软件

  1. Tip : Make Quality a Requirements Issue
  2. 就目前来看都是用户(领导)在上线前提出新的需求从而拖延上线时间
  3. not get so much from this paragraph.

你的知识资产

create time : 2017/10/10 10:04:15

  1. 你的知识资产
  2. 经营你的资产
    1. 定期投资
    2. 多元化
    3. 管理风险
    4. 低买高卖
    5. 重新评估和平衡
    6. Tip: Invest Regularly in Your Knowledge Portfolio 定期为你的知识资产投资
  3. 目标
    1. 每年至少学习一种新语言
    2. 每季度阅读一本技术书籍
    3. 也要阅读非技术书籍
    4. 上课
    5. 参加本地用户组织
    6. 实验不同的环境
    7. 跟上潮流
    8. 上网
  4. 学习的机会
    1. 自己寻找学习的机会
  5. 批判的思考
    1. Tip:Critically Analyze What You Read and Hear 批判的分析你读到和听到的

交流

create time : 2017/10/10 22:09:24

  1. 知道你想要说什么
    1. 规划你想要说的东西
  2. 了解你的听众
    1. WISDOM离合诗
  3. 选择时机
  4. 选择风格
  5. 让文档美观
  6. 让听众参与
  7. 做倾听者
    1. 把会议变成对话
  8. 回复他人
  9. Tips
    1. It’s Both What You Say and the Way You Say It 你说什么和你怎么说同样重要

Part 2 注重实效的途径

重复的危害

create time : 2017/10/12 22:40:27

  1. Tips DRY - Don’t Repeat Yourself 不要重复自己 Make It Easy to Reuse 让复用变得容易
  2. 本章作者给出了重复发生的四种情况,并给出了对应的应对方法
    • 强加的重复
    • 无意的重复
    • 无耐性的重复
    • 开发者间的重复
  3. 思考自己项目中遇到的重复
  4. ^_^ 有些错必须自己犯过之后才能记住

正交性

  1. Tips
    • Eliminate Effects Between Unralated Things. 消除无关事物之间的影响
  2. 表示不相依赖性或是解偶性
  3. 作者举了个驾驶直升机的例子解释非解偶系统的复杂程度
  4. 正交的好处
    • 提高生产效率
    • 降低风险
  5. 正交原则的几种方式
    • 项目团队
    • 设计
    • 工具箱与库
    • 编码
    • 测试
    • 文档

可撤销性(不要被现在的决定限制未来的发展)

create time 2019/01/05 22:00:20

  1. 如果你严重依赖某一事实,你几乎可以确定它将会变化
    • 确保这些将要发生的变化,不会引起过多的连锁反映
  2. 把第三方产品隐藏在定义良好的抽象接口后面
  3. 项目与数据库的解耦
  4. tips
    • There Are No Final Decisions.

曳光弹

  1. 以前读的时候一直把它理解成了照明弹
  2. 这里指的是发射出去会发光的子弹,能看到子弹的运行轨迹,并根据反馈调整射击参数
  3. 开发中的应用
    1. 搭建框架
    2. 优先搭建主体流程
    3. 后期再添加具体功能
  4. tips
    • Use Tracer Bullets to Find the Target.