索 引

    A

    Acceptance testing(验收测试),90, 177

    Acronyms(缩写),28

    Agile Developer web site (敏捷开发人员网站),176

    Agile Manifesto(敏捷宣言),2

    Agile vs. fragile(敏捷与脆弱),88, 122

    agilemanifesto.org(敏捷宣言网站 agilemanifesto.org),2

    Agility(敏捷性),1 definition of(敏捷性定义),4

    All-nighter(通宵),165

    Andy Hunt’s blog(Andy Hunt的博客),176

    Architect(架构师),152

    Aristotle(亚里士多德),20, 161

    Audit trail(审核记录),145

    Automated testing(自动化测试),90

    Avoiding lawsuits(避免诉讼),25

    B

    Backlog(待办事项),94, 95

    Battle(战役)Battle of Somme (WWI) (第一次世界大战,所门战役),179

    Be the worst(成为最差的),32

    Beck, Kent(Kent Beck),113

    Belling the cat(给猫系铃铛),23

    Best vs. better(最好与更好),20, 22

    Big ball of mud(大泥球),137

    Big design up front(在前期做大量设计),51

    Bill Nye(Bill Nye,科普节目主持人),76

    Binary chop(二分查找),138

    Blame(指责),12

    Blog(博客),158, 169

    Blogs(多个博客),29

    Bock, David(David Bock),121

    Broken Windows(破窗),3

    Brown bag sessions(午餐会议),31

    Bug fix(bug修复),63

    Bugs inevitability of(不可避免的bug),128

    Build automation(自动构建),6, 56

    Build error(构建错误),132

    Build machine(构建机器),79

    Building construction(建筑业),73

    Burnout(精疲力竭),42

    Business decisions(业务决策),45

    Business logic(业务逻辑),90 testing(业务逻辑测试),91

    C

    Change(变化)coping with(拥抱变化),34

    Code(代码)inspections(代码检查),165 procedural vs. object-oriented(过程化代码与面向对象代码),121 quality(代码质量),25 reviews(代码复查),164 rot(腐烂代码),165 sharing(共享代码),163 understanding(理解代码),100

    Coding(编码)incrementally(增量式编码),113

    Cohesion(内聚),117

    Command-query separation(命令与查询相分离模式),121

    Comments(注释),106

    Commitment(承诺),149

    Compiler error(编译错误),132

    Compliance(符合标准),13

    Composition(聚合),126

    Conference room(会议室),150

    Conferences(会议),29

    Continuous build(持续构建),173

    Continuous development(持续开发),58

    Continuous integration(持续集成),6, 56, 60, 63,134, 176 multiple platform(多平台),88

    Contracts, fixed price(固定价格合同),73

    Coupling(耦合),104

    Courage(勇气),25

    Courtesy(礼貌),19

    CRC card design(CRC卡设计),50

    Crisis management(危机管理),4

    Customer demos(客户演示),68

    Customers(客户)working with(与客户一起工作),66

    CVS(CVS),163

    D

    Data holders(数据容器),123

    Daylog(日志),157 see also Solutions log(另见解决方案日志)

    Deadlines(最终期限),41 setting(设定最终期限),20

    Death march(死亡之旅),14

    Debug log(调试日志),140

    Debugger(调试器),78, 136

    Debugging information(调试信息),144

    Decision making(制定决策)tracking(记录决策制定过程),131

    Decisions(决策)business(业务决策),45

    Delegation(委托),126

    Deployment(部署),61

    Deprecated methods(弃用方法),135

    Design(设计),48 Evolution(设计演进),152flaws(设计缺陷),81 hand-off(设计交付),49 Is design dead?(设计已死?),177 Patterns(设计模式),115 using testing for(使用测试完成设计),85

    Development methodology(开发方法论)understanding(理解开发方法论),16

    Devil(魔鬼)about(关于魔鬼),7

    Diagnosing problems(问题诊断),37

    Differences(不同),87

    Docking(笔记本电脑底座扩展),163

    Documentation(文档),81, 92, 105, 108

    Don’t Repeat Yourself(“不要重复你自己”原则),105

    Done(完成),3, 4, 41, 93, 163

    DRY, see Don’t Repeat Yourself (DRY原则,参见“不要重复你自己”原则)

    E

    Eisenhower(艾森豪威尔)U.S. president(美国总统艾森豪威尔),51

    Elegance(优雅),116

    Emergency project rescue(紧急救助项目),172

    Emerging technologies(正在涌现的技术),30

    Encapsulation(封装),121

    Environmental problems(环境问题),145

    Environmental viscosity(环境黏性),162

    Error messages(错误信息)details in(详细错误信息),143

    Error reporting(错误报告),144

    Estimation(估算),74, 93

    Evolutionary development(演进开发),69

    Exceptions(异常),140

    Expertise(专家知识),156

    Extreme programming(极限编程),113n, 148, 166

    F

    Failure, graceful(优雅的失败),141

    Farragut, Admiral David(海军上将David Farragut),24

    Feedback(反馈),3, 41, 50, 66, 76, 78, 80, 96,114

    Fire drills(消防演习),40

    FIT(FIT自动验收测试框架),90

    Fixed-price contracts(固定价格合同),73

    Fragile vs. agile, see Agile vs. fragile(脆弱与敏捷,参见敏捷与脆弱)

    Framework(框架)justify(证明框架可用),178

    Friction(摩擦、不和),3

    G

    Gang of Four(GoF,设计模式“四人帮”),115

    Glossary(词汇表),67

    Goal-driven design(目标驱动设计),50

    H

    Habits(习惯),35

    Hacking, crude(未经认真考虑的随意解决方案),15

    Hand-off(交付),49

    Hardware vs. software(硬件与软件)relative costs(硬件与软件的相对成本),111

    Heraclitus(赫拉克利特,希腊哲学家),28

    Hippocratic oath(希波克拉底的誓言),60

    Hoare, C.A.R.(C.A.R. Hoare英国著名计算机科学家),100

    Hungarian notation(匈牙利表示法),105

    I

    Impatience(焦急),25

    Incremental(增量的)development(增量开发),113

    Incremental development(增量开发),69

    Information radiators(信息辐射器),168, 177

    Inheritance(继承),125

    Installer(安装程序),62, 63

    Integration(集成),58

    Intellectual capital(知识资本),161

    Investment(投入),112

    ISO-9001(ISO-9001标准),13

    Isolation(隔离),16

    Issue tracking(问题跟踪),68

    Iteration(迭代),4, 41, 65, 67

    Iterative development(迭代开发),69

    J

    Javadoc(Javadoc工具),107

    Jefferson, Thomas(托马斯·杰弗逊),157

    Jones, Capers(卡珀斯·琼斯),165

    JUnit(JUnit单元测试工具),78

    K

    Kitchen timer(厨房计时器),150

    Knowledge(知识)sharing(知识分享),157

    Knuth, Donald(唐纳德·努斯),112, 153

    L

    Learning(学习)and diversity(学习和多样性),31 iteratively(迭代式学习),29 unit tests as aid(用单元测试辅助学习),81 and unlearning(学习与忘记),35

    Lewis and Clark(刘易斯与克拉克),50

    Life cycle(生命周期),3

    Liskov, Barbara(Liskov替换原则发明人),124

    List,The(列表),94

    Log, see Solutions log(日志,参见解决方案日志)

    Log messages(日志信息)in version control(版本控制系统中的日志信息),163

    M

    Maintenance costs(维护成本),53

    Manager role(管理者的角色)in meetings(管理者在会议中的角色),149

    Mediator(仲裁人),20

    Meetings, stand up(站立会议),148

    Mentoring(指导),157

    Messaging(消息发送),123

    Metaphors(隐喻)using(使用隐喻),31

    Methodology(方法论)understanding(理解方法论),16

    Metrics(度量指标),94

    Milestone(里程碑),69

    Mistakes(错误)making enough(犯下足够的错误),14

    Mock objects(mock对象),59, 136

    Model-View-Controller (MVC)(MVC设计模式),119

    N

    Naming(命名),67, 103, 105

    NDoc(NDoc文档生成工具),107

    Negativity(消极),19

    Next most important thing(下一件最重要的事),94

    Noah(建造方舟的诺亚),33

    O

    Object-oriented vs. procedural code(面向对象与面向过程),121

    OO design principles(面向对象设计原则),177

    Opaque code(意图不清的代码),16

    Options(选择)providing(提供选择),46

    Outcome(产出),12

    Overcomplication(过于复杂),85, 115

    P

    Pair programming(结对编程),159, 166

    Paperboy and the wallet(送报纸的男孩和钱包),121

    Pascal, Blaise(布莱士·帕斯卡),109

    Patent claim(专利声明),117

    Patterns(模式),119

    Pick-up game(捡拾游戏),166

    PIE principle(按表达意图编程原则),102

    Pizza bribes(用比萨饼行贿),33, 42

    Plan vs. planning(计划与做计划),51

    Plan-based projects(按计划行事的项目),3

    Planning(做计划),43

    Politics(政治),19

    PowerPoint architects(用PowerPoint的架构师),152

    Pragmatic Programmer(《程序员修炼之道》)web site(《程序员修炼之道》网站),178

    Pressure(压力),37, 45

    Privacy(隐私),145

    Problem(问题)diagnosis(诊断问题),129 identification(识别问题),52, 97 isolating(隔离问题),137 solving, chance for(解决问题的机会),161

    Procedural vs. object-oriented code(过程化与面向对象的代码),121

    Production environment(生产环境),61

    Program defects(程序缺陷),145

    Program intently and expressively(按表达意图编程),102

    Progress reporting(进度报告),168

    Project automation(项目自动化),56

    Project glossary(项目词汇表),67

    Project roles(项目职责),10

    Prototype(原型),51, 60, 86, 136

    Q

    QA testing(质量保证测试),61

    Quick fix(快速修复),15

    R

    Résumé-driven-design(简历驱动的设计),52

    Raising the bar(提升标准),32

    RDoc(RDoc文档生成工具),107

    Readability(可读性),100

    Refactoring(重构),4, 80, 113

    Regression tests(回归测试),80

    Remote access(远程访问),163

    Repeatable tests(可重复的测试),79

    Requirements(需求)freezing(需求冻结),64

    Responsibilities(职责),120

    Retrospectives(回顾),174

    Return on investment(投资回报),25

    Reuse Release Equivalency(重用发布等价原则),119

    Reversibility(可逆转性),52, 153

    Risk(风险),55 and integration(风险与集成),58

    Roles(职责),10

    Root cause analysis(根本原因分析),38

    RSS feed(RSS Feed),169

    Ruby(Ruby编程语言),106

    Ruby on Rails(Ruby on Rails框架),35

    Rut vs. grave(车辙与坟墓),36

    S

    Saboteurs(怠工分子),3

    Sam Houston(萨姆·休斯顿将军),55

    Santa Anna(圣安那将军),55

    Scrum(Scrum敏捷方法论),40, 95

    Security concerns(安全考虑),143

    Sharing code(分享代码),163

    Sharing learning(分享经验和体会),31

    Side effects(副作用),122

    Simple vs. simplistic(简单与简化),115

    Single Responsibility principle(单一职责原则),119

    Slackers(懒惰之人),3

    Smalltalk(Smalltalk编程语言),123

    Snowbird(犹他州雪鸟市),2

    Software architect(软件架构师),152

    Solutions log(解决方案日志),46, 129, 138, 157

    Sprint(Sprint迭代),40, 95

    Stand-up meeting(站立会议),148, 171

    Starter Kit(入门工具箱),173

    Strategic(战略的)decisions(战略决策),152 design(战略设计),49

    Stub program(桩程序),78

    Stupid users(愚蠢的用户),97

    Subclass(子类),124

    Subversion(Subversion版本控制软件),163

    T

    Tactical(战术的)

    decisions(战术决策),152

    design(战术设计),49

    Teaching(讲授),158

    Teams(团队)

    size(团队大小),4

    Teamwork(团队精神),151

    Technology stew(技术大杂烩),53

    Tell, Don’t Ask(告知,不要询问),121

    Territorial code ownership(代码“领土”所有权),155

    Test coverage(测试覆盖率),81

    Test Driven Development(测试驱动开发),82

    Testing(测试)user involvement(用户参与测试),90

    Testing frameworks(测试框架),78

    Time boxing(时间盒),20, 41, 128

    Time sheets(时间表)problems with(时间表的问题),93

    Tools(工具),6

    Track issues(跟踪问题),68

    Trade-offs(权衡),54, 111

    Transitioning(转换),36

    U

    Unit testing(单元测试),6, 16, 56, 163, 174, 177 automated(自动化单元测试),78 jUnit(JUnit工具),177 jUnitPerf(JunitPerf工具),177 nUnit(NUnit工具),177

    Unlearning(丢弃),35

    User errors(用户错误),145

    User groups(用户组),29

    V

    Version control(版本控制),6, 162, 173

    Versioning(建立版本),57

    W

    Warnings(警告),132

    Waterfall(瀑布式开发),49

    Why (为什么)benefits of asking(问“为什么”的好处),38

    Wiki(维基),6, 46, 67, 130, 169

    Working overtime(加班工作),42

    X

    XP, see Extreme programming (XP,参见“极限编程”)

    xUnit(各种语言的单元测试工具),78

    Y

    YAGNI(“你可能永远都不需要它”原则),84

    Z

    Zoom-out(缩小),114