第1章 专业主义 1
1.1清楚你要什么 2
1.2担当责任 2
1.3首先,不行损害之事 4
1.3.1不要破坏软件功能 4
1.3.2不要破坏结构 7
1.4职业道德 8
1.4.1了解你的领域 10
1.4.2坚特学习 11
1.4.3练习 11
1.4.4合作 12
1.4.5辅导 12
1.4.6了解业务领域 13
1.4.7与雇主/客户保持一致 13
1.4.8谦逊 13
1.5参考文献 14
第2章说“不” 15
2.1对抗角色 17
2.2高风险时刻 20
2.3要有团队精神 22
2.3.1试试看 24
2.3.2消极对抗 25
2.4说“是”的成本 27
2.5如何写出好代码 34
第3章说“是” 37
3.1承诺用语 39
3.1.1识别“缺乏承诺”的征兆 40
3.1.2真正的承诺听起来是怎样的 41
3.1.3总结 43
3.2学习如何说“是” 43
3.2.1“试试”的另一面 43
3.2.2坚守原则 44
3.3结论 47
第4章 编码 48
4.1做好准备 49
4.1.1凌晨3点写出的代码 50
4.1.2焦虑时写下的代码 51
4.2流态区 53
4.2.1音乐 54
4.2.2中断 55
43阻塞 55
4.4调试 57
4.5保持节奏 60
4.5.1知道何时应该离开一会 60
4.5.2开车回家路上 61
4.5.3洗澡 61
4.6进度延迟 61
4.6.1期望 62
4.6.2盲目冲刺 62
4.6.3加班加点 63
4.6.4交付失误 63
4.6.5定义“完成” 64
4.7帮助 64
4.7.1帮助他人 64
4.7.2接受他人的帮助 65
4.7.3辅导 66
4.8参考文献 66
第5章 测试驱动开发 67
5.1此事已有定论 69
5.2 TDD的三项法则 69
5.3 TDD的优势 70
5.3.1确定性 70
5.3.2缺陷注入率 71
5.3.3勇气 71
5.3.4文档 72
5.3.5设计 72
5.3.6专业人士的选择 73
5.4 TDD的局限 73
5.5参考文献 74
第6章 练习 75
6.1引子 75
6.1.1 10的22次方 76
6.1.2转变 77
6.2编程柔道场 79
6.2.1卡塔 80
6.2.2瓦萨 81
6.2.3自由练习 81
6.3自身经验的拓展 82
6.3.1开源 82
6.3.2关于练习的职业道德 82
6.4结论 83
6.5参考文献 83
第7章 验收测试 84
7.1需求的沟通 84
7.1.1过早精细化 86
7.1.2迟来的模糊性 87
7.2验收测试 89
7.2.1“完成”的定义 89
7.2.2沟通 91
7.2.3自动化 92
7.2.4额外工作 93
7.2.5验收测试什么时候写,由谁来写 93
7.2.6开发人员的角色 94
7.2.7测试的协商与被动推进 95
7.2.8验收测试和单元测试 96
7.2.9图形界面及其他复杂因素 97
7.2.10持续集成 98
7.3结论 98
第8章 测试策略 99
8.1 QA应该找不到任何错误 100
8.1.1 QA也是团队的一部分 100
8.1.2需求规约定义者 100
8.1.3特性描述者 100
8.2自动化测试金字塔 101
8.2.1单元测试 101
8.2.2组件测试 102
8.2.3集成测试 103
8.2.4系统测试 104
8.2.5人工探索式测试 104
8.3结论 105
8.4参考文献 105
第9章 时间管理 106
9.1会议 107
9.1.1拒绝 107
9.1.2离席 108
9.1.3确定议程与目标 109
9.1.4立会 109
9.1.5迭代计划会议 109
9.1.6迭代回顾和DEMO展示 110
9.1.7争论/反对 110
9.2注意力点数 111
9.2.1睡眠 112
9.2.2咖啡因 112
9.2.3恢复 112
9.2.4肌肉注意力 112
9.2.5输入与输出 113
9.3时间拆分和番茄工作法 113
9.4要避免的行为 114
9.5死胡同 115
9.6泥潭 115
9.7结论 116
第10章 预估 117
10.1什么是预估 119
10.1.1承诺 119
10.1.2预估 120
10.13暗示性承诺 121
10.2 PERT 122
10.3预估任务 125
10.4大数定律 127
10.5结论 127
10.6参考文献 128
第11章 压力 129
11.1避免压力 131
11.1.1承诺 131
11.1.2保持整洁 132
11.1.3危机中的纪律 132
11.2应对压力 133
11.2.1不要惊慌失措 133
11.2.2沟通 133
11.2.3依靠你的纪律原则 133
11.2.4寻求帮助 134
11.3结论 134
第12章 协作 135
12.1程序员与人 137
12.1.1程序员与雇主 137
12.1.2程序员与程序员 140
12.2小脑 142
12.3结论 143
第13章 团队与项目 144
13.1只是简单混合吗 144
13.1.1有凝聚力的团队 145
13.1.2如何管理有凝聚力的团队 146
13.1.3项目承包人的困境 147
13.2结论 148
13.3参考文献 148
第14章 辅导、学徒期与技艺 149
14.1失败的学位教育 149
14.2辅导 150
14.2.1 DIGI-COMP I,我的第一台计算机 150
14.2.2高中时代的ECP-18 152
14.2.3非常规辅导 154
14.2.4艰难的锤炼 155
14.3学徒期 156
14.3.1软件学徒期 158
14.3.2现实情况 159
14.4技艺 160
14.5结论 161
附录 工具 162