Secret Assumption of Agile (Chinese)
-
Upload
fred-george -
Category
Technology
-
view
580 -
download
1
description
Transcript of Secret Assumption of Agile (Chinese)
Copyright © 2009 by Fred George 1
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
敏捷背后的隐秘设想Fred George
TrafficBroker, Ltd., London, United Kingdom
1
The Secret Assumption
of Agile
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
敏捷是富有成效的
2
Agile is Productive
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
敏捷是富有成效的
2
传统的 Traditional
12 个月 Months
$28 每小时 per Hour
$2,000,000
Agile is Productive
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
敏捷是富有成效的
2
传统的 Traditional
12 个月 Months
$28 每小时 per Hour
$2,000,000
敏捷 Agile
8 个月.............3 个月5 个月8 个月
$87 每小时
$1,100,0006x
Agile is Productive
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
如何?
3
How?
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
如何?
3
1.能够变化的代码
2.精益管理
3.过程的力量
How?
Code That Can Change
Lean Management
Processing Power
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
“在能够变化的程序中,对象才有用武之地。”Rick DeNatale, IBM
1988
4
“Objects are only good for programs that change.”
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
假定容易变化的故事
5
Stories Assume Easy Change
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
假定容易变化的故事
5
Stories Assume Easy Change
StoryStory Story Story
StoryStory Story Story
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
假定容易变化的故事
5
Stories Assume Easy Change
Story
Story Story Story
StoryStory Story Story
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
假定容易变化的故事
5
Stories Assume Easy Change
StoryStoryStory
Story
StoryStory
Story
Story
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
典型的程序
6
Typical Program
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
典型的程序
6
public void foo( ) {........................
}
Typical Program
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
典型的程序
6
public void foo( ) {........................
}
多少行代码?
Typical Program
How many lines?
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
典型的程序
6
public void foo( ) {........................
}
多少行代码?
每个方法2.3行
Typical Program
How many lines?
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
典型的程序
6
public void foo( ) {........................
}
多少行代码?
每个方法2.3行每个类25行
Typical Program
How many lines?
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
典型的程序
6
public void foo( ) {........................
}
多少行代码?
每个方法2.3行每个类25行
Smalltalk:每个方法1.1行
Typical Program
How many lines?
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
换掉应用
7
Replacement Application
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
换掉应用
7
Replacement Application
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
换掉应用
7
旧的 Old
Java
Oracle DB
Web UI
Replacement Application
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
换掉应用
7
旧的 Old
Java
Oracle DB
Web UI
新的 New
Java
Oracle DB
Web UI
Replacement Application
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
换掉应用
7
旧的 Old
Java
Oracle DB
Web UI
72 Classes
新的 New
Java
Oracle DB
Web UI
Replacement Application
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
换掉应用
7
旧的 Old
Java
Oracle DB
Web UI
72 Classes
新的 New
1400 Classes
Java
Oracle DB
Web UI
Replacement Application
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
测试
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
测试代码
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
测试代码
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
测试代码
集成
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
测试代码
集成
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
8
任务设计
测试代码
集成
交付
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期案例学习
9
任务设计
测试代码
集成
Task Cycle Case Study
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期案例学习
9
任务设计
测试代码
集成1,000,000 行J2EE代码50 个程序员8000 个测试
Task Cycle Case Study
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期案例学习
9
任务设计
测试代码
集成1,000,000 行J2EE代码50 个程序员8000 个测试周期长度?
Task Cycle Case Study
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期案例学习
9
任务设计
测试代码
集成1,000,000 行J2EE代码50 个程序员8000 个测试周期长度?
2-4 小时
Task Cycle Case Study
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
10
任务设计
测试代码
集成
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
10
任务设计
测试代码
集成
15 分钟
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
10
任务设计
测试代码
集成
15 分钟
15 分钟
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
任务周期
10
任务设计
测试代码
集成
15 分钟
15 分钟
Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 11
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
简单设计
12
Simple Design
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
简单设计
1. 是可行的 Works
12
Simple Design
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
简单设计
1. 是可行的 Works
2. 沟通 Communicates
12
Simple Design
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
简单设计
1. 是可行的 Works
2. 沟通 Communicates
3. 无重复代码 No duplicate code
12
Simple Design
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
简单设计
1. 是可行的 Works
2. 沟通 Communicates
3. 无重复代码 No duplicate code
4. 用最少的类和方法 Least classes and methods
12
Simple Design
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
简单设计
1. 是可行的 Works
2. 沟通 Communicates
3. 无重复代码 No duplicate code
4. 用最少的类和方法 Least classes and methods
用在应用和测试中 Applies to Application and Tests
12
Simple Design
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
RefactoringMartin Fowler
13
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 14
任务设计
测试代码
集成
任务周期Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 14
任务设计
测试代码
集成
简单设计
任务周期Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 14
任务设计
测试代码
集成
简单设计
重构
任务周期Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
Refactoring to PatternsJoshua Kerievsky
15
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
重构
16
任务设计
测试代码
集成
任务周期Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
重构引入模式
16
任务设计
测试代码
集成
任务周期Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
重构引入模式
重构
16
任务设计
测试代码
集成
任务周期Tasking Cycle
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
案例分析:复杂度
17
Case Study: Complexity
Cyclomatic Complexity
100分表示最糟
“...never seen less than 5” - Senior Architect
Cyclomatic Complexity: 1.8
9 week test: 1 bug, fixed within 2 hours
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
案例分析:复杂度圈复杂度 Cyclomatic Complexity
17
Case Study: Complexity
Cyclomatic Complexity
100分表示最糟
“...never seen less than 5” - Senior Architect
Cyclomatic Complexity: 1.8
9 week test: 1 bug, fixed within 2 hours
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
案例分析:复杂度圈复杂度 Cyclomatic Complexity
100分表示最糟 100 is Bad
17
Case Study: Complexity
Cyclomatic Complexity
100分表示最糟
“...never seen less than 5” - Senior Architect
Cyclomatic Complexity: 1.8
9 week test: 1 bug, fixed within 2 hours
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
案例分析:复杂度圈复杂度 Cyclomatic Complexity
100分表示最糟 100 is Bad
“... 从来没见过5份以下” - 高级架构师 “...never seen less than 5” - Senior Architect
17
Case Study: Complexity
Cyclomatic Complexity
100分表示最糟
“...never seen less than 5” - Senior Architect
Cyclomatic Complexity: 1.8
9 week test: 1 bug, fixed within 2 hours
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
案例分析:复杂度圈复杂度 Cyclomatic Complexity
100分表示最糟 100 is Bad
“... 从来没见过5份以下” - 高级架构师 “...never seen less than 5” - Senior Architect
圈复杂度: 1.8 Cyclomatic Complexity
17
Case Study: Complexity
Cyclomatic Complexity
100分表示最糟
“...never seen less than 5” - Senior Architect
Cyclomatic Complexity: 1.8
9 week test: 1 bug, fixed within 2 hours
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
案例分析:复杂度圈复杂度 Cyclomatic Complexity
100分表示最糟 100 is Bad
“... 从来没见过5份以下” - 高级架构师 “...never seen less than 5” - Senior Architect
圈复杂度: 1.8 Cyclomatic Complexity
9 周的测试: 1个bug,两小时内得到修复
17
Case Study: Complexity
Cyclomatic Complexity
100分表示最糟
“...never seen less than 5” - Senior Architect
Cyclomatic Complexity: 1.8
9 week test: 1 bug, fixed within 2 hours
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 18
通往驾轻就熟之路Path to Proficiency
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 18
通往驾轻就熟之路Path to Proficiency
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 18
通往驾轻就熟之路Path to Proficiency
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 18
通往驾轻就熟之路Path to Proficiency
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 18
通往驾轻就熟之路Path to Proficiency
培训
经验
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 18
通往驾轻就熟之路Path to Proficiency
培训
经验
实战
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
产品请求(伦敦)
19
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
产品请求(伦敦)
19
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
产品请求(伦敦)
19
23 个故事15 天
28个故事12 天
班5 天
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
产品请求(伦敦)
19
23 个故事15 天
28个故事12 天
班5 天
回报: (Payback)
11天
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
20
OO Boot Camp
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
20
“...教会你如何像程序员一样思考...”
OO Boot Camp
“...teaches you to think like a programmer...”
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 21
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 21
某咨询公司首席设计师 评论美国某大型制造公司的CIO
Lead Designer, Consulting Firm, commenting to CIO of a large US manufacturer.
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 21
“上课15分钟以后,我意识到我对编程一无所知”某咨询公司首席设计师 评论美国某大型制造公司的CIO
“15 minutes after the class started, I realized I knew nothing about programming.”
Lead Designer, Consulting Firm, commenting to CIO of a large US manufacturer.
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
22
OO Boot Camp
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
22
历史:自1995年以来 History: Since 1995
1000多名学生;3个国家 Over 1000 Students; 3 countries
OO Boot Camp
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
22
历史:自1995年以来 History: Since 1995
1000多名学生;3个国家 Over 1000 Students; 3 countries
Java, VB, C#, Ruby
OO Boot Camp
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
22
历史:自1995年以来 History: Since 1995
1000多名学生;3个国家 Over 1000 Students; 3 countries
Java, VB, C#, Ruby苏格拉底方法(问题─回答─问题) Socratic Method (Question - Answer - Question)
OO Boot Camp
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
OO训练营
22
历史:自1995年以来 History: Since 1995
1000多名学生;3个国家 Over 1000 Students; 3 countries
Java, VB, C#, Ruby苏格拉底方法(问题─回答─问题) Socratic Method (Question - Answer - Question)
超过60%课堂编程练习 60%+ Lab
结对编程 Pair Programming
先写测试(15分钟的周期) Test First (15 Minute Cycle)
学生展示解决方案 Students Present Solutions
OO Boot Camp
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 23
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
大师
熟练工
新手
23
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 24
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 24
熟练工
新手
2-6 个月
Tuesday, September 15, 2009
Copyright © 2009 by Fred George 24
大师
熟练工
新手
2-6 个月
2 年甚至永远无法完成
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
第一部分:原则
25
Part 1: Principles
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
第一部分:原则封装 Encapsulation
对象关系 Object Relationships
集成 Inheritance
委派 Delegation
多态 Polymorphism
对象协作 Collaborating Objects
接口 Interfaces
编程模式 Coding Patterns
重构 Refactoring
递归 Recursion
25
Part 1: Principles
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
第一部分:原则封装 Encapsulation
对象关系 Object Relationships
集成 Inheritance
委派 Delegation
多态 Polymorphism
对象协作 Collaborating Objects
接口 Interfaces
编程模式 Coding Patterns
重构 Refactoring
递归 Recursion
25
40-50 个小时
Part 1: Principles
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
第二部分:设计模式
26
Part 2: Design Patterns
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
第二部分:设计模式基本原理 Rationale
模式 vs. 原则 Patterns vs.
Principles
观察者模式 Observer Pattern
迭代器模式 Iterator Pattern
中介者模式 Mediator Pattern
组合模式 Composite Pattern
访问者模式 Visitor Pattern
建造者模式 Builder Pattern
协作 Concerts
模式调查 Survey of Patterns
26
Part 2: Design Patterns
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
第二部分:设计模式基本原理 Rationale
模式 vs. 原则 Patterns vs.
Principles
观察者模式 Observer Pattern
迭代器模式 Iterator Pattern
中介者模式 Mediator Pattern
组合模式 Composite Pattern
访问者模式 Visitor Pattern
建造者模式 Builder Pattern
协作 Concerts
模式调查 Survey of Patterns
26
40-50 个小时
Part 2: Design Patterns
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的陈述
27
Suspicious Statements
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的陈述
case - 几乎一直错 Almost always wrong
27
Suspicious Statements
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的陈述
case - 几乎一直错 Almost always wrong
else - 多数错 Mostly wrong
27
Suspicious Statements
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的陈述
case - 几乎一直错 Almost always wrong
else - 多数错 Mostly wrong
if - 可疑的 Suspicious
除非保证从句位于方法的开始 Unless guard clause at start of method
27
Suspicious Statements
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的陈述
case - 几乎一直错 Almost always wrong
else - 多数错 Mostly wrong
if - 可疑的 Suspicious
除非保证从句位于方法的开始 Unless guard clause at start of method
可替换全部这些的设计模式 Substitute Design Patterns for all these
27
Suspicious Statements
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的方法
28
Suspicious Methods
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的方法
getters - 违背封装 Violates Encapsulation
28
Suspicious Methods
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的方法
getters - 违背封装 Violates Encapsulation
setters - 更差的:违背封装和对象的完善 Worse: violates Encapsulation and Object integrity
28
Suspicious Methods
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的方法
getters - 违背封装 Violates Encapsulation
setters - 更差的:违背封装和对象的完善 Worse: violates Encapsulation and Object integrity
拥有2级或以上缩进的方法 Methods with 2 or more levels of indenting
28
Suspicious Methods
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的类
29
Suspicious Classes
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的类
接口有特殊命名约定Special naming conventions for Interfaces
29
Suspicious Classes
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的类
接口有特殊命名约定Special naming conventions for Interfaces
接口有单一的实现类Interface with a single implementing Class
29
Suspicious Classes
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
可疑的类
接口有特殊命名约定Special naming conventions for Interfaces
接口有单一的实现类Interface with a single implementing Class
类有超过2个的实例变量Classes with more than 2 instance variables
29
Suspicious Classes
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结果
30
Results
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结果
30
退学的 Dropouts
熟练工 Journeymen
预言者 Predictors
保留 Retention
支持 Support
20%
20%
架构、设计、多语言
必须在一个月之内使用Must be used within a month
熟练工、大师 Journeymen, Masters
Results
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结果
30
退学的 Dropouts
熟练工 Journeymen
预言者 Predictors
保留 Retention
支持 Support
20%
20%
架构、设计、多语言
必须在一个月之内使用Must be used within a month
熟练工、大师 Journeymen, Masters
Results
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结果
30
退学的 Dropouts
熟练工 Journeymen
预言者 Predictors
保留 Retention
支持 Support
20%
20%
架构、设计、多语言
必须在一个月之内使用Must be used within a month
熟练工、大师 Journeymen, Masters
Results
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结果
30
退学的 Dropouts
熟练工 Journeymen
预言者 Predictors
保留 Retention
支持 Support
20%
20%
架构、设计、多语言
必须在一个月之内使用Must be used within a month
熟练工、大师 Journeymen, Masters
Results
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结果
30
退学的 Dropouts
熟练工 Journeymen
预言者 Predictors
保留 Retention
支持 Support
20%
20%
架构、设计、多语言
必须在一个月之内使用Must be used within a month
熟练工、大师 Journeymen, Masters
Results
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
Maintenance维护
31
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
Maintenance维护
31
旧的 Old
Java
Oracle DB
Web UI
72 Classes
新的 New
1400 Classes
Java
Oracle DB
Web UI
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
转变计划
32
Transition Plan
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
转变计划
32
没有文档 No Documentation
没有培训 No Training
没有时间 No Time
Transition Plan
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
转变计划
32
没有文档 No Documentation
没有培训 No Training
没有时间 No Time
统统没问题! No Problem!
Transition Plan
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
结对编程的团队
33
Team with Pair Programming
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
问题?
34
Tuesday, September 15, 2009
Copyright © 2009 by Fred George
问题?
34
谢谢
Tuesday, September 15, 2009