相信技术的力量

读书笔记-《程序员修炼之道:从小工到专家》

注重实效的哲学

  • 在所有的弱点中,最大的弱点就是害怕暴露弱点.
  • 勇敢的承担起责任,提供各种选择,不要找蹩脚的借口.
  • 破窗效应会让项目迅速腐烂,因此,不要容忍破窗户.
  • 做变化的催化剂,无论是对于自己,还是团队.
  • 别只顾低头走路,也要抬头看天.知道自己所做的事情对长期的战略目标有什么意义.
  • 批判地分析你读到的和听到的,不可不信,也不可全信.

知识上的投资总能得到最好的回报 --本杰明富兰克林.

因此,要定期为自己的知识资产投资.

优秀投资者的行为:

  • 定期投资-养成习惯
  • 多元化投资是长期成功的关键
  • 在保守的投资和高风险,高回报之间平衡投资资产
  • 设法低买高卖,以获取最大回报
  • 周期性的重新评估和平衡资产

像优秀的投资者一样投资自己的技术:

  • 每年至少学习一种新语言
  • 每季度阅读一本技术书籍
  • 参加本地的技术活动,杜绝与世隔绝
  • 试验不同的开发环境,Windows-->Linux,Notepad-->SublimeText
  • 跟上技术潮流
  • 重新梳理,评估自己的技术体系
  • 尽可能的把学的技术用到项目中

注重实效的方式

  • Don't Repeat Yourself.重复的危害性.
    • 环境所迫的重复,比如只能使用一种开发环境,工具,技术..
    • 开发者无意识的重复,并没有意识到自己在重复着自己已经习惯的东西.
    • 偷懒性的重复,因为重复,更加容易.
    • 开发者之间的重复造轮子行为.
  • 学会制造和利用 "可复用"的东西,避免重复.
  • 可撤销性:如果某个想法是你唯一的想法,再没有什么比这更危险的事了.
  • 纯文本的威力.
    • 用纯文本保存知识.Keep Knowledge in Plain Text.
    • 掌握小而精的Shell脚本
  • 精通一种编辑器 , 提升工作效率
    • 可配置
    • 可扩展
    • 可编程
  • 你不可能写出完美的软件,所以要减少不必要的过度追求
  • 断言式编程
  • 按照合约(Contract)进行设计
  • Always Use Source Code Control.
  • Fix the Problem,Not the Blame.
  • Treat English as Just Another Programming Language.

充分解耦

  • 要配置,不要集成
  • 将抽象放进代码,细节放进元数据
  • 分析工作流,以改善并发性
  • 使视图与模型分离

当你编码时

  • 编码并不是机械式的工作,处处都需要经过深思熟虑,所以不要靠巧合编程
  • 编写易于测试的代码

重构

在何时进行重构

早重构,常重构

  • 有重复代码时
  • 可以更加彻底的解耦时
  • 存在过时的技术
  • 性能需要优化

怎样重构

  • 不要试图在重构的同时增加功能
  • 开始重构之前,确保项目拥有良好的测试,并经常运行这些测试,这样可以及早发现重构导致的问题

在项目开始之前

  • 不要收集需求,而是挖掘用户需求
  • 建立需求文档
  • 与用户一同工作,以像用户一样思考
  • Some Things Are Better Done than Described

注重实效的团队

  • 不要留破窗户
  • 避免温水煮青蛙式的团队氛围变化
  • 注重沟通
  • 围绕功能、而不是工作职务进行组织
  • 尽可能多的采用自动化

测试

  • 早测试、常测试、自动测试
  • 要到通过全部测试、编码才算完成

测试什么

  • 单元测试
  • 集成测试
  • 验证和校验
  • 资源耗尽、错误及恢复
  • 性能测试
  • 可用性测试
  • 回归测试

傲慢与偏见

  • Sign Your Work
  • 杜绝团队协作中的 “地盘” 意识

名言

  • 语言的界限就是一个人世界的界限.--维特根斯坦
  • 再多的天才也无法胜过对细节的专注 --Levy's Eighth Law
  • 欲求更好,常把好事变遭--李尔王. (换言之,无法一步就做到完美的结果,最好是先上路,先出一个大致差不多的结果,再小步快速迭代)

⬆️