Skip to main content

程序员修炼之道

📅 2026-03-13 ✏️ 2026-03-24 BN
No related notes

1 · 读书笔记:程序员修炼之道

https://book.douban.com/subject/35006892/

1.1 · 核心观点:

务实的程序员不是只会写代码的人,而是对自己的手艺负责、持续改进、关注全局的专业工匠。核心信条是:对工作负责、持续学习、用自动化放大能力、让代码容易变更。

  • 知识组合(Knowledge Portfolio):技术能力像投资组合——持续、小额、长期投入,分散风险(语言、架构、领域知识)
  • 靠自动化放大能力:重复工作脚本化,节省时间,减少人为失误
  • ETC(Easier to Change) 是好设计的根本原则:一切设计决策最终都应服务于”让系统更容易变更”
  • DRY(Don’t Repeat Yourself):系统中每一条知识都必须有单一、明确、权威的表达;重复不只是代码重复,还包括知识、文档、数据结构的重复
  • 正交性(Orthogonality):消除不相关事物之间的影响;组件独立自主,改一个不波及其他
  • 可逆性(Reversibility):不做不可逆的决定,架构和技术选型要留退路
  • 曳光弹(Tracer Bullets):用端到端的最小可工作系统验证方向,比先写完整原型再验证更快、更真实

1.2 · 启发点(关键洞察):

  1. “破窗效应”:一个坏设计、一段烂代码如果放任不管,整个系统会加速腐化。团队对代码质量的态度比任何 lint 规则都重要。
  2. 曳光弹 ≠ 原型:原型是用来丢弃的探索品,曳光弹是真正的代码骨架——它穿过整个系统,验证架构可行性,然后在上面持续迭代。
  3. 契约式设计(Design by Contract):函数的前置条件、后置条件和不变式应该是显式的,不是藏在注释或口头约定里。
  4. “够好即可”的软件:追求完美会拖垮项目;先达到用户需求的基本标准,再迭代改进,比一次做到极致更务实。
  5. 估算是一种技能:学会说”我需要先调查一下”,用 PERT 或类比法给出范围,而不是凭直觉报一个数。
  6. 解耦与”得墨忒耳法则”:只和直接朋友说话,不要链式调用穿透多层对象,降低变更的连锁反应。
  7. 纯文本的力量:纯文本不会过时,便于版本控制、grep 搜索和自动化处理,是最持久的知识存储格式。

1.3 · 行动:

  1. 在项目中发现”破窗”时立即修复,哪怕只是重命名或提炼函数,不让腐化开始蔓延。
  2. 新功能开发时尝试”曳光弹”方式:先搭一条端到端最小路径跑通,再逐步填充细节。
  3. 把重复性操作(构建、部署、数据迁移、环境搭建)全部脚本化,消灭手动步骤。
  4. 维护自己的知识组合:每季度至少学一门新技术或读一本技术书,保持广度投资。
  5. 给出时间估算前先说”让我调查一下”,然后用分解法或类比法给出范围区间。

1.4 · 金句:

  1. “Care about your craft.” — 关注你的手艺,否则为什么要花时间做软件?
  2. “Don’t live with broken windows.” — 不要容忍破窗,烂代码会像信号一样扩散。
  3. “DRY — Don’t Repeat Yourself.” — 知识重复是维护噩梦的起点。
  4. “Good enough software today is often better than perfect software tomorrow.” — 够好即可的软件,胜过明天的完美软件。
  5. “You can’t write perfect software.” — 接受不完美,用契约、断言和测试保护代码。
  6. “It’s your life. Share it. Celebrate it. Build it. And have fun!” — 人生是你的,主动掌控。