4
社区成员




类别 | 详情 |
---|---|
书名 | 高效程序员的 45 个习惯:敏捷开发修炼之道 |
作者 | [美] Andy Hunt、Venkat Subramaniam |
译者 | 钱安川、郑柯 |
出版社 | 人民邮电出版社 |
ISBN | 978-7-115-21553-6 |
所属丛书 | 图灵程序设计丛书 |
核心定位 | 聚焦敏捷开发实践,提供 45 个可落地的程序员工作习惯,兼顾理论与实战 |
工具 | 用途 |
---|---|
Wiki | 团队协作知识共享,支持动态编辑与链接创建3 |
版本控制 | 管理项目所有产物(源代码、文档等),避免文件共享设备的不专业做法4 |
单元测试 | 用代码检查代码,获取反馈,主流框架如 JUnit(Java)、NUnit(C#)5 |
自动构建 | 实现本地 / 团队构建自动化、可重复,支持持续集成6 |
习惯 | 核心要点 |
---|---|
做事 | 优先解决问题,不追究责任;指责不能修复 bug,团队聚焦共同目标 |
欲速则不达 | 拒绝 “快速修复”,深入理解代码逻辑;通过代码复审、单元测试防止代码 “腐化” |
对事不对人 | 讨论聚焦方案本身,设定期限 / 仲裁人避免情绪化;决策后全员协作落地 |
排除万难,奋勇前进 | 发现问题(如代码质量差)坦诚沟通,用实践证明改进方案(如重写代码对比优劣) |
习惯 | 核心要点 |
---|---|
跟踪变化 | 每日固定学习时间,关注技术博客 / 用户组 / 研讨会,避免知识过时 |
对团队投资 | 通过 “午餐会议” 分享知识(每周 1 人主讲),促进团队整体成长 |
懂得丢弃 | 摒弃过时技术 / 习惯(如手工优化汇编代码),不用旧思维套新技术 |
打破砂锅问到底 | 用 “5 个为什么” 挖问题根源(参考《第五项修炼》),不满足表面答案 |
把握开发节奏 | 固定周期工作(每日提交代码、固定站立会议),用 “时间盒” 推动决策 |
习惯 | 核心要点 |
---|---|
让客户做决定 | 开发者不做业务决策,提供多方案(含成本 / 收益),记录客户决策及理由 |
让设计指导而不是操纵开发 | 设计分 “战略(方向)” 与 “战术(实现)”,前期不做过度详细设计,靠代码验证优化 |
合理地使用技术 | 基于问题选技术,评估 “是否解决问题、易维护性、是否绑定”,不盲目追新 |
保持可以发布 | 按 “本地测试→更新代码→提交” 流程,借持续集成及时发现冲突 / 错误 |
提早集成,频繁集成 | 每天多次集成,用 mock 对象隔离依赖,避免 “大爆炸式集成” |
提早实现自动化部署 | 尽早搭建自动化部署系统,让 QA 同时测试应用与部署过程 |
使用演示获得频繁反馈 | 每 1-2 周向客户演示功能,基于反馈调整,尊重客户时间灵活调整频率 |
使用短迭代,增量发布 | 1-4 周迭代,每次发布 “最小可用功能”,让用户尽早反馈 |
固定的价格就意味着背叛承诺 | 不轻易接固定价格合同,建议 “迭代付费”(如先开发 6-8 周再决定是否继续) |
习惯 | 核心要点 |
---|---|
守护天使(自动化单元测试) | 编写单元测试当 “警报器”,每次编译 / 修改运行,兼作 “可执行文档” |
先用它再实现它(TDD) | 先写失败单元测试,再实现代码让测试通过,从用户视角设计接口 |
不同环境,就有不同问题 | 在所有支持平台 / 环境运行测试,借持续集成检测环境差异问题 |
自动验收测试 | 让客户定义验收测试(如 Excel/HTML 表格),用 FIT 工具对比 “期望 / 实际结果” |
度量真实的进度 | 用 “待办事项列表” 跟踪剩余工作量,记录实际耗时优化评估能力 |
倾听用户的声音 | 重视用户反馈,挖背后真实问题,不归咎 “用户愚蠢” |
习惯 | 核心要点 |
---|---|
代码要清晰地表达意图 | 合理命名(如枚举值代替数字)、遵 PIE 原则,让代码 “自解释” |
用代码沟通 | 注释聚焦 “为什么做”,借 Javadoc/RDoc 生成文档,确保与代码同步 |
动态评估取舍 | 在性能 / 成本 / 上市时间间权衡,性能 “足够用” 则优先用户需求 |
增量式编程 | “编辑→构建→测试” 短循环,频繁重构,避免长时间编码后测试 |
保持简单 | 拒绝 “为模式而用模式”,开发 “能工作的最简单方案” |
编写内聚的代码 | 类 / 组件 “功能集中”(遵单一职责原则),用 MVC 分离逻辑 |
告知,不要询问 | 让对象自主处理逻辑,遵 “命令与查询分离”(命令改状态,查询返数据) |
习惯 | 核心要点 |
---|---|
记录问题解决日志 | 维护 “问题 - 解决方案” 日志(含日期、代码片段),团队共享避免重复踩坑 |
警告就是错误 | 将编译器警告视为错误,调整 IDE / 编译器设置强制消除 |
对问题各个击破 | 隔离问题模块(如用原型复现),用 “二分查找” 缩小范围 |
报告所有的异常 | 不压制异常(不空 catch 块),无法处理则向上传播,含具体原因 |
提供有用的错误信息 | 向用户展 “清晰描述 + 获取详情方式”,向开发记录 “异常栈 + 系统快照” |
习惯 | 核心要点 |
---|---|
定期安排会面时间(站立会议) | 每天 10-15 分钟,每人答 “昨天做什么 / 今天计划 / 障碍”,会后深入讨论 |
架构师必须写代码 | 拒绝 “PowerPoint 架构师”,架构师参与编码,避免设计脱离实现 |
实行代码集体所有制 | 允许成员修改任何代码,任务轮换接触不同模块,降低单人依赖风险 |
成为指导者 | 分享知识(写博客 / 分享会),引导思考而非直接给答案 |
允许大家自己想办法 | 鼓励成员自主解决问题,接受创新方案,困境时提供提示 |
准备好后再共享代码 | 提交前确保 “编译 / 测试通过、与任务相关”,暂存未完成工作用远程访问 / 分支 |
做代码复查 | 通过 “捡拾游戏”“结对编程” 检查代码,尊重差异不盲目否定 |
及时通报进展与问题 | 用 “信息辐射器”(海报 / Wiki)主动分享,按受众调整细节程度 |
引入敏捷的建议 | 管理者:逐步引入习惯、搭基础环境;程序员:以身作则、从小习惯入手 |
类别 | 链接 / 名称 | 用途 |
---|---|---|
敏捷宣言官网 | agilemanifesto.org | 了解敏捷宣言详情1 |
持续集成文章 | Martin Fowler《Continuous Integration》 | 学习持续集成价值与实践7 |
单元测试框架 | JUnit(junit.org)、NUnit(sourceforge.net/projects/nunit) | Java/C# 单元测试工具 |
验收测试工具 | FIT(fit.c2.com) | 自动对比客户期望与实际结果8 |