【笔记】 程序员修炼之道 从小工到专家

  • 1 关心你的技艺
  • 2 思考你的工作
  • 3 在所有的弱点中,最大的弱点就是害怕暴露弱点
  • 4 提供各种选择,不要找各种蹩脚的借口
  • 5 不要容忍破窗户
  • 6 作变化的催化剂
  • 7 记住大方向
  • 8 让质量成为需求问题
  • 9 知识也会贬值,定期为你的知识投资
    • 每年至少学习一种编程语言
    • 每季度至少读一本技术书籍
    • 也要阅读非技术书籍
    • 上课
    • 上网
    • 玩玩UNIX
    • 跟上潮流
  • 10 批判的分析你读到的和听到的
  • 11 我相信,被打量要被忽略要好
  • 12 你说什么和你怎样说同样重要
  • 13 不要重复你自己, 也不要重复别人
  • 14 糟糕的代码才需要许多注释
  • 15 让复用变得容易
  • 16 消除无关事物之间的影响 (解耦性,正交性)
  • 17 编码
    • 让你的代码保持解耦
    • 避免使用全局数据
    • 避免编写相似的函数
  • 18 如果某个想法是你唯一的想法,再没有什么比这更危险的事情了
  • 19 不存在最终决定
  • 20 稍后就是永不
  • 21 用曳光弹找到目标
  • 22 语言的界限就是一个人世界的界限
  • 23 靠近问题编程
  • 24 估算,避免发生意外
  • 25 用纯文本保存知识
  • 26 利用命令shells的力量
  • 27 用好一种编辑器,彻底了解它,确保你的编辑器能在所有平台上使用 (我现在最爱是vscode, 曾经最爱是sublime)
    • 可配置
    • 可扩展
    • 可编辑
    • 语法高亮
    • 自动完成
    • 自动缩进
    • 跨平台
    • 启动快
    • 占用内存小
    • 漂亮
  • 28 总是使用源码控制
  • 29 要修正问题,而不是发出职责 (关于调试,bug)
  • 30 不要恐慌 (我曾经差点因为上线的之前的重大问题产生辞职的想法)
  • 31 不要假定,要证明
  • 32 你不可能写出完美的软件
  • 33 如果它不可能发生,用断言确保它不会发生
  • 34 将异常用于异常的问题
  • 35 要有始有终
  • 36 使模块之间的耦合减至最小
  • 37 要配置,不要集成 (可配置)
  • 38 将抽象放进代码,将细节放进元数据
  • 39 分析工作流,以改善并发性
  • 40 用服务进行设计
  • 41 总是为并发进行设计
  • 42 将视图与模型分离
  • 43 小心那些替你编写大量代码的工具,除非你了解它在做什么
  • 44 不要靠巧合编程
  • 45 估算你算法的阶
  • 46 早重构,常重构
  • 47 为测试而设计
  • 48 不要搜集需求,挖掘他们
  • 49 与用户一起工作,以像用户一样思考
  • 50 需求不是架构,需求不是设计,也不是用户界面,而是需求。
  • 51 抽象比细节活的更长久
  • 52 使用项目词汇表 (名不正则言不顺)
  • 53 昂贵的工具不一定能制作出更好的设计
  • 54 早测试,常测试,自动测试
  • 55 要到通过全部测试,编码才算完成
  • 56 把网收紧,一个bug只抓一次
  • 57 温和的超出用户的期望
  • 58 在你的作品上签名
  • 59 建立自己的藏书库