Secret Assumption of Agile (Chinese)2. The Secret
Assumption
of Agile
Fred George
TrafficBroker, Ltd., London, United Kingdom
Copyright © 2009 by Fred George 1
Tuesday, September 15, 2009
4. Agile is Productive
Traditional
12 Months
$28 per Hour
$2,000,000
Copyright © 2009 by Fred George 2
Tuesday, September 15, 2009
5. Agile is Productive
Traditional Agile
3
12 Months 8 .............
5
8
$28 $87
6x
per Hour
$2,000,000 $1,100,000
Copyright © 2009 by Fred George 2
Tuesday, September 15, 2009
6. How?
Copyright © 2009 by Fred George 3
Tuesday, September 15, 2009
7. How?
1. Code That Can Change
2. Lean Management
3. Processing Power
Copyright © 2009 by Fred George 3
Tuesday, September 15, 2009
8. “Objects are only good for
programs that change.”
“
”
Rick DeNatale, IBM
1988
Copyright © 2009 by Fred George 4
Tuesday, September 15, 2009
10. Stories Assume Easy Change
Story Story Story Story
Story Story Story Story
Copyright © 2009 by Fred George 5
Tuesday, September 15, 2009
11. Stories Assume Easy Change
Story Story Story
Story Story Story Story
Story
Copyright © 2009 by Fred George 5
Tuesday, September 15, 2009
12. Stories Assume Easy Change
Story
Story Story Story
Story Story Story Story
Copyright © 2009 by Fred George 5
Tuesday, September 15, 2009
13. Typical Program
Copyright © 2009 by Fred George 6
Tuesday, September 15, 2009
14. Typical Program
public void foo( ) {
...
...
...
...
...
...
...
...
}
Copyright © 2009 by Fred George 6
Tuesday, September 15, 2009
15. Typical Program
public void foo( ) { How many lines?
...
...
...
...
...
...
...
...
}
Copyright © 2009 by Fred George 6
Tuesday, September 15, 2009
16. Typical Program
public void foo( ) { How many lines?
...
...
...
...
... 2.3
...
...
...
}
Copyright © 2009 by Fred George 6
Tuesday, September 15, 2009
17. Typical Program
public void foo( ) { How many lines?
...
...
...
...
... 2.3
... 25
...
...
}
Copyright © 2009 by Fred George 6
Tuesday, September 15, 2009
18. Typical Program
public void foo( ) { How many lines?
...
...
...
...
... 2.3
... 25
...
... Smalltalk:
} 1.1
Copyright © 2009 by Fred George 6
Tuesday, September 15, 2009
21. Replacement Application
Old
Java
Oracle DB
Web UI
Copyright © 2009 by Fred George 7
Tuesday, September 15, 2009
22. Replacement Application
Old New
Java Java
Oracle DB Oracle DB
Web UI Web UI
Copyright © 2009 by Fred George 7
Tuesday, September 15, 2009
23. Replacement Application
Old New
Java Java
Oracle DB Oracle DB
Web UI Web UI
72 Classes
Copyright © 2009 by Fred George 7
Tuesday, September 15, 2009
24. Replacement Application
Old New
Java Java
Oracle DB Oracle DB
Web UI Web UI
72 Classes 1400 Classes
Copyright © 2009 by Fred George 7
Tuesday, September 15, 2009
25. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
26. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
27. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
28. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
29. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
30. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
31. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
32. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
33. Tasking Cycle
Copyright © 2009 by Fred George 8
Tuesday, September 15, 2009
34. Task Cycle Case Study
Copyright © 2009 by Fred George 9
Tuesday, September 15, 2009
35. Task Cycle Case Study
1,000,000 J2EE
50
8000
Copyright © 2009 by Fred George 9
Tuesday, September 15, 2009
36. Task Cycle Case Study
1,000,000 J2EE
50
8000
Copyright © 2009 by Fred George 9
Tuesday, September 15, 2009
37. Task Cycle Case Study
1,000,000 J2EE
2-4 50
8000
Copyright © 2009 by Fred George 9
Tuesday, September 15, 2009
38. Tasking Cycle
Copyright © 2009 by Fred George 10
Tuesday, September 15, 2009
39. Tasking Cycle
15
Copyright © 2009 by Fred George 10
Tuesday, September 15, 2009
40. Tasking Cycle
15
15
Copyright © 2009 by Fred George 10
Tuesday, September 15, 2009
41. Tasking Cycle
15
15
Copyright © 2009 by Fred George 10
Tuesday, September 15, 2009
44. Simple Design
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
45. Simple Design
1. Works
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
46. Simple Design
1. Works
2. Communicates
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
47. Simple Design
1. Works
2. Communicates
3. No duplicate code
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
48. Simple Design
1. Works
2. Communicates
3. No duplicate code
4. Least classes and methods
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
49. Simple Design
1. Works
2. Communicates
3. No duplicate code
4. Least classes and methods
Applies to Application and Tests
Copyright © 2009 by Fred George 12
Tuesday, September 15, 2009
50. Refactoring
Martin Fowler
Copyright © 2009 by Fred George 13
Tuesday, September 15, 2009
51. Tasking Cycle
Copyright © 2009 by Fred George 14
Tuesday, September 15, 2009
52. Tasking Cycle
Copyright © 2009 by Fred George 14
Tuesday, September 15, 2009
53. Tasking Cycle
Copyright © 2009 by Fred George 14
Tuesday, September 15, 2009
54. Refactoring
to Patterns
Joshua Kerievsky
Copyright © 2009 by Fred George 15
Tuesday, September 15, 2009
55. Tasking Cycle
Copyright © 2009 by Fred George 16
Tuesday, September 15, 2009
56. Tasking Cycle
Copyright © 2009 by Fred George 16
Tuesday, September 15, 2009
57. Tasking Cycle
Copyright © 2009 by Fred George 16
Tuesday, September 15, 2009
59. Case Study: Complexity
Cyclomatic Complexity
Copyright © 2009 by Fred George 17
Tuesday, September 15, 2009
60. Case Study: Complexity
Cyclomatic Complexity
100 100 is Bad
Copyright © 2009 by Fred George 17
Tuesday, September 15, 2009
61. Case Study: Complexity
Cyclomatic Complexity
100 100 is Bad
“... 5 ”-
“...never seen less than 5” - Senior Architect
Copyright © 2009 by Fred George 17
Tuesday, September 15, 2009
62. Case Study: Complexity
Cyclomatic Complexity
100 100 is Bad
“... 5 ”-
“...never seen less than 5” - Senior Architect
: 1.8 Cyclomatic Complexity
Copyright © 2009 by Fred George 17
Tuesday, September 15, 2009
63. Case Study: Complexity
Cyclomatic Complexity
100 100 is Bad
“... 5 ”-
“...never seen less than 5” - Senior Architect
: 1.8 Cyclomatic Complexity
9 : 1 bug
Copyright © 2009 by Fred George 17
Tuesday, September 15, 2009
72. 28
12
23 5
15
Copyright © 2009 by Fred George 19
Tuesday, September 15, 2009
73. : 28
(Payback)
11 12
23 5
15
Copyright © 2009 by Fred George 19
Tuesday, September 15, 2009
74. OO Boot Camp
OO
Copyright © 2009 by Fred George 20
Tuesday, September 15, 2009
75. OO Boot Camp
OO
“... ...”
“...teaches you to think like a programmer...”
Copyright © 2009 by Fred George 20
Tuesday, September 15, 2009
77. CIO
Lead Designer, Consulting Firm, commenting to CIO of a large US manufacturer.
Copyright © 2009 by Fred George 21
Tuesday, September 15, 2009
78. “15 minutes after the class started, I realized I
knew nothing about programming.”
“ 15
”
CIO
Lead Designer, Consulting Firm, commenting to CIO of a large US manufacturer.
Copyright © 2009 by Fred George 21
Tuesday, September 15, 2009
79. OO Boot Camp
OO
Copyright © 2009 by Fred George 22
Tuesday, September 15, 2009
80. OO Boot Camp
OO
1995 History: Since 1995
1000 3 Over 1000 Students; 3 countries
Copyright © 2009 by Fred George 22
Tuesday, September 15, 2009
81. OO Boot Camp
OO
1995 History: Since 1995
1000 3 Over 1000 Students; 3 countries
Java, VB, C#, Ruby
Copyright © 2009 by Fred George 22
Tuesday, September 15, 2009
82. OO Boot Camp
OO
1995 History: Since 1995
1000 3 Over 1000 Students; 3 countries
Java, VB, C#, Ruby
Socratic Method (Question - Answer - Question)
Copyright © 2009 by Fred George 22
Tuesday, September 15, 2009
83. OO Boot Camp
OO
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
Copyright © 2009 by Fred George 22
Tuesday, September 15, 2009
87. 2-6
Copyright © 2009 by Fred George 24
Tuesday, September 15, 2009
88. 2
2-6
Copyright © 2009 by Fred George 24
Tuesday, September 15, 2009
90. Part 1: Principles
Encapsulation Collaborating Objects
Object Relationships Interfaces
Inheritance Coding Patterns
Delegation Refactoring
Polymorphism Recursion
Copyright © 2009 by Fred George 25
Tuesday, September 15, 2009
91. Part 1: Principles
Encapsulation Collaborating Objects
Object Relationships Interfaces
Inheritance Coding Patterns
Delegation Refactoring
Polymorphism Recursion
40-50
Copyright © 2009 by Fred George 25
Tuesday, September 15, 2009
92. Part 2: Design Patterns
Copyright © 2009 by Fred George 26
Tuesday, September 15, 2009
93. Part 2: Design Patterns
Rationale Composite Pattern
vs. Patterns vs. Visitor Pattern
Principles
Builder Pattern
Observer Pattern
Concerts
Iterator Pattern
Survey of Patterns
Mediator Pattern
Copyright © 2009 by Fred George 26
Tuesday, September 15, 2009
94. Part 2: Design Patterns
Rationale Composite Pattern
vs. Patterns vs. Visitor Pattern
Principles
Builder Pattern
Observer Pattern
Concerts
Iterator Pattern
Survey of Patterns
Mediator Pattern
40-50
Copyright © 2009 by Fred George 26
Tuesday, September 15, 2009
96. Suspicious Statements
case - Almost always wrong
Copyright © 2009 by Fred George 27
Tuesday, September 15, 2009
97. Suspicious Statements
case - Almost always wrong
else - Mostly wrong
Copyright © 2009 by Fred George 27
Tuesday, September 15, 2009
98. Suspicious Statements
case - Almost always wrong
else - Mostly wrong
if - Suspicious
Unless guard clause at start of
method
Copyright © 2009 by Fred George 27
Tuesday, September 15, 2009
99. Suspicious Statements
case - Almost always wrong
else - Mostly wrong
if - Suspicious
Unless guard clause at start of
method
Substitute Design Patterns for all these
Copyright © 2009 by Fred George 27
Tuesday, September 15, 2009
101. Suspicious Methods
getters - Violates Encapsulation
Copyright © 2009 by Fred George 28
Tuesday, September 15, 2009
102. Suspicious Methods
getters - Violates Encapsulation
setters -
Worse: violates Encapsulation and Object integrity
Copyright © 2009 by Fred George 28
Tuesday, September 15, 2009
103. Suspicious Methods
getters - Violates Encapsulation
setters -
Worse: violates Encapsulation and Object integrity
2 Methods with 2 or more levels of indenting
Copyright © 2009 by Fred George 28
Tuesday, September 15, 2009
105. Suspicious Classes
Special naming conventions for Interfaces
Copyright © 2009 by Fred George 29
Tuesday, September 15, 2009
106. Suspicious Classes
Special naming conventions for Interfaces
Interface with a single implementing Class
Copyright © 2009 by Fred George 29
Tuesday, September 15, 2009
107. Suspicious Classes
Special naming conventions for Interfaces
Interface with a single implementing Class
2
Classes with more than 2 instance variables
Copyright © 2009 by Fred George 29
Tuesday, September 15, 2009
108. Results
Copyright © 2009 by Fred George 30
Tuesday, September 15, 2009
109. Results
Dropouts 20%
Journeymen 20%
Predictors
Retention
Must be used within a month
Support
Journeymen, Masters
Copyright © 2009 by Fred George 30
Tuesday, September 15, 2009
110. Results
Dropouts 20%
Journeymen 20%
Predictors
Retention
Must be used within a month
Support
Journeymen, Masters
Copyright © 2009 by Fred George 30
Tuesday, September 15, 2009
111. Results
Dropouts 20%
Journeymen 20%
Predictors
Retention
Must be used within a month
Support
Journeymen, Masters
Copyright © 2009 by Fred George 30
Tuesday, September 15, 2009
112. Results
Dropouts 20%
Journeymen 20%
Predictors
Retention
Must be used within a month
Support
Journeymen, Masters
Copyright © 2009 by Fred George 30
Tuesday, September 15, 2009
113. Results
Dropouts 20%
Journeymen 20%
Predictors
Retention
Must be used within a month
Support
Journeymen, Masters
Copyright © 2009 by Fred George 30
Tuesday, September 15, 2009
114. Maintenance
Copyright © 2009 by Fred George 31
Tuesday, September 15, 2009
115. Maintenance
Old New
Java Java
Oracle DB Oracle DB
Web UI Web UI
72 Classes 1400 Classes
Copyright © 2009 by Fred George 31
Tuesday, September 15, 2009
116. Transition Plan
Copyright © 2009 by Fred George 32
Tuesday, September 15, 2009
117. Transition Plan
No Documentation
No Training
No Time
Copyright © 2009 by Fred George 32
Tuesday, September 15, 2009
118. Transition Plan
No Documentation
No Training
No Time
No Problem!
Copyright © 2009 by Fred George 32
Tuesday, September 15, 2009
119. Team with Pair
Programming
Copyright © 2009 by Fred George 33
Tuesday, September 15, 2009