具体描述
本书是软件开发界的传奇人物罗伯特·C. 马丁(“鲍勃大叔”)对敏捷发展历程的回顾,对敏捷最初用意的重述,对敏捷价值观和原则的传达。本书首先概述敏捷的历史、敏捷的全貌;然后说明敏捷出现的缘由;接着讲解敏捷的业务实践、团队实践和技术实践,介绍成就敏捷的因素,还谈到敏捷转型中常见的问题与困难;最后提出软件匠艺理念。 本书适合开发人员、测试人员、管理人员、项目经理、业务人员等软件行业从业者阅读。
作者简介
罗伯特·C. 马丁(Robert C. Martin)*软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report杂志前主编。他从20世纪70年代起就是一名程序员,被后辈程序员尊称为“鲍勃大叔”(Uncle Bob)。 他是Clean Coders网站的创始人,这个网站为软件开发者提供在线视频培训。他也是“鲍勃大叔咨询公司”(Uncle Bob Consulting LLC)的创始人,这家公司为世界各地的大企业提供软件咨询、培训和技能发展服务。他的著作有《代码整洁之道》《代码整洁之道:程序员的职业素养》《敏捷整洁之道:回归本源》《架构整洁之道》《敏捷软件开发:原则、模式与实践》等。 译者简介 申健 优普丰全球合伙人,首席敏捷教练,国际Scrum联盟CST认证培训师,全球首位CTC认证敏捷教练及评审委员会成员,极限编程爱好者。在跨国企业从事10多年研发和管理工作,涉及电信、金融、互联网等领域。2007年开始实战敏捷开发,对结合教练技术等软技能来帮助组织提升领导力和导入工程实践,从而提升产品开发的效果与质量很感兴趣。常年担任全国敏捷社区组织者、评委和嘉宾。培训和咨询辅导过的客户达数百家。 何强 有10多年大型外企一线研发与管理经验。进阶CSM认证者和PMP,2011年开始带领团队进行敏捷软件开发,并推动组织级敏捷转型。在公司内部进行敏捷文化推广、敏捷开发流程的制定以及工程实践工具链落地等工作。后逐步担任企业敏捷教练,推动跨国多团队规模化敏捷实施与优化。有多年培训以及对Scrum关键角色辅导与团队转型辅导经验。擅长对不同团队敏捷实施方案的定制与实施、组织内敏捷文化推广、团队从0到1的敏捷转型辅导、敏捷开发工具链的组织与调优等。 罗涛 Scrum@Scale认证实践者,曾任用友集团开发管理部总经理,特聘讲师,集团内多条产品线的敏捷教练/教头,培训师,咨询师,应用架构设计专家。同时作为创新的推进者和实践者,拥有5项国家发明专利,并在集团内部负责培训、评审和推进专利,以及相关的创新工作。除了主流的催化技术,还擅长使用游戏学习、情景戏剧学习等方式进行引导。 审校者简介 熊节 中国IT业界意见领袖、敏捷先行者。从2001年开始将敏捷思想引入中国,引领了中国敏捷浪潮。曾指导多家知名企业导入敏捷方法,对这些企业产生了深远的影响。曾在各类专业媒体发表数十篇文章,并主持翻译了《重构:改善既有代码的设计》《软件工匠》《实现模式》《卓有成效的程序员》等敏捷领域的重要著作,其中《重构:改善既有代码的设计》被誉为“软件业三大必读经典”之一。他的新作《敏捷中国史话》是第一部系统记录敏捷在中国发展历程的著作。 韩磊 互联网产品与社区运营专家,技术书籍著译者。曾任CSDN副总经理、《程序员》总编辑、广东二十一世纪传媒股份有限公司新媒体事业部总经理等职。现任AR初创企业亮风台广州公司总经理。译有《代码整洁之道》《梦断代码》《C#编程风格》等书。此外还与刘韧合著《网络媒体教程》,与戴飞合译《Beginning C# Objects中文版:概念到代码》。
目录信息
第 1章 介绍敏捷 1
1.1 敏捷的历史 3
1.2 雪鸟会议 10
1.3 敏捷全貌 14
1.3.1 铁十字 15
1.3.2 墙上的图 15
1.3.3 你知道的第 一件事 18
1.3.4 会议 18
1.3.5 分析阶段 19
1.3.6 设计阶段 20
1.3.7 实施阶段 21
1.3.8 死亡行军阶段 22
1.3.9 夸张吗 23
1.3.10 更好的方式 23
1.3.11 迭代0 24
1.3.12 敏捷产出数据 25
1.3.13 幻想与管理 27
1.3.14 管理铁十字 27
1.3.15 业务价值排序 31
1.3.16 全貌至此结束 31
1.4 生命之环 31
1.5 结论 35
第 2章 敏捷的理由 37
2.1 专业性 38
2.1.1 到处是软件 39
2.1.2 程序员统治世界 41
2.1.3 灾难 42
2.2 合理的期望 43
2.2.1 我们不会交付一堆垃圾! 43
2.2.2 从技术上随时做好交付准备 45
2.2.3 稳定的生产率 46
2.2.4 划算的适应性 49
2.2.5 持续改进 50
2.2.6 无畏之力 50
2.2.7 QA应该什么也找不到 52
2.2.8 测试自动化 52
2.2.9 我们互相掩护 54
2.2.10 诚实的估算 54
2.2.11 你需要说“不” 55
2.2.12 持续主动地学习 55
2.2.13 指导 56
2.3 权利条款 56
2.3.1 客户权利条款 56
2.3.2 开发人员权利条款 57
2.3.3 客户权利详讨 57
2.3.4 开发人员权利详讨 59
2.4 结论 61
第3章 业务实践 63
3.1 计划游戏 64
3.1.1 三元分析 65
3.1.2 故事和点数 66
3.1.3 ATM的故事 67
3.1.4 故事 74
3.1.5 故事估算 76
3.1.6 对迭代进行管理 78
3.1.7 演示 80
3.1.8 速率 81
3.2 小步发布 82
3.2.1 源代码控制简史 83
3.2.2 磁带 85
3.2.3 磁盘和源代码控制系统 85
3.2.4 Subversion 86
3.2.5 Git与测试 87
3.3 验收测试 88
3.3.1 工具和方法论 89
3.3.2 行为驱动开发 90
3.3.3 实践 90
3.4 完整团队 93
3.5 结论 96
第4章 团队实践 97
4.1 隐喻 98
4.2 可持续节奏 100
4.2.1 加班 102
4.2.2 马拉松 103
4.2.3 奉献精神 103
4.2.4 睡眠 104
4.3 代码集体所有 104
4.4 持续集成 107
4.4.1 然后有了持续构建 108
4.4.2 持续构建的纪律 109
4.5 站会 110
4.5.1 猪和鸡? 111
4.5.2 公开表示认可 111
4.6 结论 111
第5章 技术实践 113
5.1 测试驱动开发 114
5.1.1 复式记账 114
5.1.2 TDD三规则 116
5.1.3 调试 117
5.1.4 文档 117
5.1.5 乐趣 118
5.1.6 完备性 119
5.1.7 设计 121
5.1.8 勇气 121
5.2 重构 123
5.2.1 红-绿-重构 124
5.2.2 大型重构 125
5.3 简单设计 125
5.4 结对编程 127
5.4.1 什么是结对 128
5.4.2 为什么结对 129
5.4.3 结对当作代码评审 129
5.4.4 代价几何 130
5.4.5 只能两人吗 130
5.4.6 管理 130
5.5 结论 131
第6章 成就敏捷 133
6.1 敏捷的价值观 134
6.1.1 勇气 134
6.1.2 沟通 134
6.1.3 反馈 135
6.1.4 简单 135
6.2 怪物博物馆 136
6.3 转型 137
6.3.1 耍花招 138
6.3.2 幼狮 138
6.3.3 哭泣 139
6.3.4 寓意 139
6.3.5 假装 139
6.3.6 在更小的组织中成功 140
6.3.7 个人成功和迁移 141
6.3.8 创建敏捷组织 141
6.4 教练辅导 142
6.5 认证 143
6.6 大型组织中的敏捷 144
6.7 敏捷工具 148
6.7.1 软件工具 148
6.7.2 什么才是有效的工具 149
6.7.3 物理的敏捷工具 151
6.7.4 自动化的压力 152
6.7.5 有钱人用的ALM类工具 153
6.8 教练——另一个视角 155
6.8.1 条条大路通敏捷 155
6.8.2 从过程专家到敏捷专家 156
6.8.3 对敏捷教练的需求 157
6.8.4 将教练技术带给敏捷教练 158
6.8.5 超越ICP-ACC 158
6.8.6 教练工具 159
6.8.7 只有专业教练技巧是不够的 159
6.8.8 在多团队环境中进行敏捷教练的工作 160
6.8.9 大型组织中的敏捷 161
6.8.10 使用敏捷和教练技术 来变得敏捷 161
6.8.11 敏捷导入的成长 162
6.8.12 细处着手成大事 164
6.8.13 敏捷教练的未来 165
6.9 结论(鲍勃大叔回来了) 165
第7章 匠艺 167
7.1 敏捷的宿醉 169
7.2 不孚所望 170
7.3 渐行渐远 172
7.4 软件匠艺 173
7.5 思想体系与方法论 174
7.6 软件匠艺包含实践吗 175
7.7 聚焦于价值而非实践 176
7.8 对实践的讨论 177
7.9 匠艺对个人的影响 178
7.10 匠艺对行业的影响 179
7.11 匠艺对公司的影响 180
7.12 匠艺与敏捷 181
7.13 结论 182
第8章 结论 183
跋 185
索引 191
· · · · · · (收起)
读后感
用户评价
这本书读起来真是让人眼前一亮,它不像那些老掉牙的编程书籍,上来就堆砌那些晦涩难懂的术语。作者的文笔非常生动,仿佛在和你面对面聊天一样,把一些看似复杂的问题掰开了揉碎了,用非常生活化的例子来解释。我印象最深的是关于“坏味道”的那几个章节,它没有直接告诉我哪些代码是“坏的”,而是通过一系列场景,引导我去思考,去感受代码的呼吸。比如,当一个函数长到需要滚动好几屏才能看完,那种阅读的疲惫感本身就是一种强烈的信号。这种引导式学习的方式,让我不再是机械地套用规则,而是真正开始用一种更挑剔的眼光去审视自己的代码结构。读完这些部分,我立刻回去重构了几个老项目,那种“清理门户”的成就感,简直无与伦比。它强调的不是完美,而是持续的、小步的改进,这对于我这种经常被项目截止日期追赶的人来说,简直是救命稻草。它让我明白了,整洁的代码不是写给机器看的,而是写给未来那个可能是我自己但已经忘了细节的程序员看的。
坦白说,这本书对于初学者可能需要一些背景知识才能完全领会其精髓,但对于有一定工作经验,并开始感受到代码“熵增”带来痛苦的开发者来说,它无疑是一剂猛药,也是一剂良方。它没有提供那种“一键修复所有问题”的银弹,而是提供了一套强大的心智模型。我最欣赏的是,它将“整洁”的范畴从单一的函数扩展到了整个项目乃至团队的协作流程。关于如何进行有效的结对编程、如何保持代码审查(Code Review)的建设性而非破坏性,这些软技能的探讨,恰恰是很多纯技术书籍所忽略的。这本书深刻地揭示了一个事实:软件质量是工程、艺术与人际沟通的综合体现。读完之后,我不再仅仅关注自己的代码是否能跑起来,而是开始关心我的代码是否能被团队的其他人理解和信任。这种视角上的转变,才是这本书带给我最持久的影响,它培养的不仅仅是“写代码”的能力,更是“构建可持续软件系统”的责任感。
这本书的语言风格有一种难以言喻的冷静和克制,没有浮夸的修辞,却处处透露出资深工程师的智慧沉淀。它在描述那些复杂的设计模式时,总能找到最简洁的切入点,避免了不必要的哲学思辨。我个人非常喜欢它对“意图清晰性”的推崇。作者反复强调,好的代码应该像散文一样易读,让读者在不查阅文档的情况下,就能大致猜出代码的用途。这种对可读性的极致追求,体现在对命名、注释(以及如何避免不必要的注释)的细致指导上。尤其是在处理并发和并行代码时,书中展现出的那种对状态管理的谨慎态度,让我对多线程编程的恐惧感大为减弱。它提供了一套系统性的思维框架,教你如何将复杂的操作分解为一系列简单、可预测的步骤,从而在保证高性能的同时,避免了那些难以调试的竞态条件。这本书更像是一本技艺手册,而不是理论教材,每一页都充满了可以立即付诸实践的宝贵经验。
这本书的结构设计极其巧妙,它不像传统的教科书那样线性推进,而是采用了模块化、碎片化的叙事方式。每一个章节都可以被视为一个独立的工具箱,里面装着针对特定问题的精妙解决方案。我特别欣赏它对“设计原则”的阐述,它没有把SOLID原则当作教条来宣讲,而是将它们融入到具体的代码重构案例中,让你在实操中体会到“为什么”要这样做,而不是单纯地记住“是什么”。例如,在讲到“依赖倒置原则”时,作者构建了一个模拟的打印服务系统,清晰地展示了紧耦合和松耦合在系统扩展性上的巨大差异。这种基于场景的教学法,极大地降低了理论知识的学习门槛。此外,书中对测试驱动开发(TDD)的介绍也颇为独到,它没有过度强调红-绿-重构的循环本身,而是着重于测试如何作为一种设计约束,反向驱动出更清晰、更易于维护的模块边界。对于那些常常陷入“先实现再测试”怪圈的开发者来说,这本书提供了一个必要的思维矫正。
我发现这本书最宝贵的地方,在于它对“技术债务”的深刻洞察和实用管理策略。以往读到的资料大多只是警告我们要避免技术债务,但这本书却坦诚地承认了技术债务在实际项目中几乎是不可避免的,关键在于如何“负责任地管理”它。作者提供的那些关于如何量化债务、如何说服管理层投入时间偿还债务的实用建议,在我的日常工作中得到了极大的印证和应用。它教我如何将技术层面的问题转化为业务层面的语言,比如,将“我们这个模块耦合太深”翻译成“这个模块的修改风险过高,可能导致本季度关键功能的延迟”。这种将工程实践与商业决策相结合的视角,让我对软件开发的理解上升到了一个新的高度。书中关于“演化式架构”的讨论也十分精彩,它倡导的不是一次性的大爆炸式重构,而是像生物进化一样,通过持续的小型调整来适应不断变化的需求,这使得“整洁”成为一种动态的、持续的状态,而非一个遥不可及的终点。
大叔看不下去了这世间种种敏捷,终于出手正本清源。 前两章主要讲故事。Bob大叔讲故事的功力真不错,看着看着就能哈哈大笑起来。Kent Beck的书就写不成这样。 中间三章讲极限编程三个圈,入木三分。一部分原教旨,一部分现代结合,帮助很大。 第6章读着不顺,感觉不是一把写出来的,会觉得和前面一些观点不吻合,但观点总的来说还是要落脚到技术和协作实践上。 第7章匠艺是在鼓励技术人员,不要被项目牵着鼻子走,要坚持本心打磨技艺,并传递精华给年轻从业者,才能把敏捷践行一代又一代地下去。
bob大叔的书从来不会让人失望,这本书亦是如此。如果说bob大叔以往的书更多的是关注设计,这本书则侧重软件过程。 本书围绕极限编程的生命之环,介绍了业务、团队、技术这三方面的实践。用不多的篇幅,向我们清楚地介绍了敏捷的本质。 强烈推荐,可作为敏捷的入门书籍。
bob大叔的书从来不会让人失望,这本书亦是如此。如果说bob大叔以往的书更多的是关注设计,这本书则侧重软件过程。 本书围绕极限编程的生命之环,介绍了业务、团队、技术这三方面的实践。用不多的篇幅,向我们清楚地介绍了敏捷的本质。 强烈推荐,可作为敏捷的入门书籍。
大叔看不下去了这世间种种敏捷,终于出手正本清源。 前两章主要讲故事。Bob大叔讲故事的功力真不错,看着看着就能哈哈大笑起来。Kent Beck的书就写不成这样。 中间三章讲极限编程三个圈,入木三分。一部分原教旨,一部分现代结合,帮助很大。 第6章读着不顺,感觉不是一把写出来的,会觉得和前面一些观点不吻合,但观点总的来说还是要落脚到技术和协作实践上。 第7章匠艺是在鼓励技术人员,不要被项目牵着鼻子走,要坚持本心打磨技艺,并传递精华给年轻从业者,才能把敏捷践行一代又一代地下去。
大叔看不下去了这世间种种敏捷,终于出手正本清源。 前两章主要讲故事。Bob大叔讲故事的功力真不错,看着看着就能哈哈大笑起来。Kent Beck的书就写不成这样。 中间三章讲极限编程三个圈,入木三分。一部分原教旨,一部分现代结合,帮助很大。 第6章读着不顺,感觉不是一把写出来的,会觉得和前面一些观点不吻合,但观点总的来说还是要落脚到技术和协作实践上。 第7章匠艺是在鼓励技术人员,不要被项目牵着鼻子走,要坚持本心打磨技艺,并传递精华给年轻从业者,才能把敏捷践行一代又一代地下去。