Gists 摘要


  • 注重实效的团队
    Organize around functionality, not job functions.

  • 无处不在的自动化
    Don’t use manual procedures .

  • 无情的测试
    Test early. Test often. Test automatically.
    Coding ain’t done till all the tests run.
    Use saboteurs to test your testing.
    Test state coverage, not code coverage.
    Find bugs once.

  • 全部都是写
    Treat English as just another programming language.
    Build documentation in, don’t bolt it on.

  • 极大的期望
    Gently exceed your users’ expectations.

  • 傲慢与偏见
    Sign your work.


  • 需求之坑
    Don’t gather requirements, dig for them.
    Work with a user to think like a user.
    Abstractions live longer than details.
    Use a project glossary.

  • 解开不可能解开的谜题
    Don’t think outside the box, find the box.

  • 等你准备好
    Listen to nagging doubts, start when you’re ready.

  • 规范陷阱
    Some things are better done than described.

  • 圆圈与剪头
    Don’t be a slave to formal methods.
    Expensive tools do not produce better designs.


  • 靠巧合编程
    Don’t program by coincidence.

  • 算法速率
    Estimate the order of your algorithms.
    Test your estimates.

  • 重构
    Refactor early, refactor often.

  • 易于测试的代码
    Design to Test.
    Test your software, or your users will.


  • 解耦与得墨忒耳法则
    Minimize coupling between modules.

  • 元程序设计
    Configure, don’t integrate.

  • 元数据驱动的应用
    Put abstractions in code, details in metadata.

  • 时间耦合

  • 工作流
    Analyze workflow to improve concurrency.

  • 架构
    Design using services.

  • 更简洁的接口
    Always design for concurrency.

  • 它只是视图
    Model-View-Controller:Separate views from models.

  • 黑板
    Use blackboards coordinate workflow .


  • 断言式编程
    If it can’t happen, use assertions to ensure that it won’t.

  • 何时使用异常
    Use exceptions for exceptional problems.

  • 配平资源
    Finish what you start.


  • 重复的危害
    Don’t repeat yourself .
    Make it easy to reuse.

  • 正交性
    Eliminate effects between unrelated things.

  • 可撤销性
    There are no final decisions.

  • 曳光弹
    Use tracer bullets to find target.

  • 原型与便签
    Prototype to learn.

  • 领域语言
    Program close to problem domain.

  • 估算
    Estimate to avoid surprises.
    Iterate the schedule with the code.


  • 负责
    Provide options, don’t make lame excuses.

  • Don’t live with broken windows.

  • 知识资产

    Invest regularly in your knowledge portfolio .

  • 思考
    Critically Analyze what you read and hear.

  • 交流
    It’s both what you say and the way you say it .


  • 纯文本的威力
    Keep knowledge in plain text.

  • Shell游戏
    Use the power of command shells.

  • 强力编辑
    Use a single editor well.

  • 源码控制
    Always use source code control.

  • 调试
    Fix the problem, not the blame.
    Don’t panic.
    Don’t assume it, prove it.

  • 文本操纵
    Learn a text manipulation language .

  • 代码生成器
    Write code that writes code.

Reference 参考

[1] The Pragmatic Programmer: From Journeyman to Master