跳至内容	
	
	
	
		
	
		
			
		
	
	
		
- 关心你的技艺
 
- 思考!你的工作
 
- 提供各种选择,不要找蹩足的借口
 
- 不要容忍破窗户
 
- 做变化的催化剂
 
- 记住大图景
 
- 使质量成为需求问题
 
- 定期为你的知识资产投资
 
- 批判地分析你读到的和听到的
 
- 你说什么和你怎么说同样重要
 
- 不要重复你自己
 
- 让复用变得容易
 
- 消除无关事物之间的影响
 
- 不存在最终决策
 
- 让曳光弹找到目标
 
- 为了学习而制作原型
 
- 靠近问题领域编程
 
- 估算,以避免发生意外
 
- 通过代码对进度进行迭代
 
- 用纯文本保存知识
 
- 利用命令Shell的力量
 
- 用好一种编辑器
 
- 总是使用源码控制
 
- 要修正问题,而不是发出指责
 
- 不要恐慌
 
- “Select”没有问题
 
- 不要假定,要证明
 
- 学习一种文本操纵语言
 
- 编写能编写代码的代码
 
- 你不可能写出完美的软件
 
- 通过合约进行设计
 
- 早崩溃
 
- 如果它不可能发生,用断言确保它不会发生
 
- 将异常用于异常的问题
 
- 要有始有终
 
- 使模块之间的耦合减至最小
 
- 要配置,不要集成
 
- 将抽象放进代码,细节放进元数据
 
- 分析工作流,以改善并发性
 
- 用服务进行设计
 
- 总是为并发进行设计
 
- 使视图与模型分离
 
- 用黑板协调工作流
 
- 不要靠巧合编程
 
- 估算你的算法的阶
 
- 测试你的估算
 
- 早重构,常重构
 
- 为测试而设计
 
- 测试你的软件,否则你的用户就得测试
 
- 不要使用你不理解的向导代码
 
- 不要搜集需求——挖掘它们
 
- 与用户一同工作,以像用户一样思考
 
- 抽象比细节活得更长久
 
- 使用项目词汇表
 
- 不要在盒子外面思考——要找到盒子
 
- 倾听反复出现的疑虑——等你准备好再开始
 
- 对有些事情“做”胜于“描述”
 
- 不要做形式方法的奴隶
 
- 昂贵的工具不一定能制作出更好的设计
 
- 围绕功能、而不是工作职务进行组织
 
- 不要使用手工流程
 
- 早测试,常测试,自动测试
 
- 要到通过全部测试,编码才算完成
 
- 通过“蓄意破坏”测试你的测试
 
- 测试状态覆盖,而不是代码覆盖
 
- 一次Bug只抓一次
 
- 把英语当作又一种编程语言
 
- 把文档建在里面,不要拴在外面
 
- 温和地超出用户的期望
 
- 在你的作品上签名