0
My
Case
forAgile
MethodsCary
Millsap@CaryMillsap
/
cary.millsap@method‐r.comODTUG
KScope
2011,
Long
Beach
CA11:15a–12:15p
...
2
follow
professional
comedian                               2
follow
professional
comedian                               2
follow
professional
comedian       yell
at
audience                               2
follow
professional
comedian       yell
at
audience                               2
follow
professional
comedian                 yell
at
audiencemandate
awkward
social
contact
with
your
seatmate            ...
follow
professional
comedian                 yell
at
audiencemandate
awkward
social
contact
with
your
seatmate            ...
Cary
MillsapTeaching      Consulting        Business        Method   Software           1985–1987           1988–1989     ...
MeTHOD R                   Cary
MillsapIf
you’d
like
to
talk
about
software
this
week,           tweet
me
at
@CaryMillsap ...
1. Agile
and
me2. Five
practices
from
XP3. How
Agile
has
helped
me4. What
has
not
worked5. Discussion                     ...
❶❷❸❹❺Agile
and
me               6
Agile
as
a
joke...7    Photo:
http://www.sxc.hu/browse.phtml?f=view&id=1174739
DBAs   Developers                    8
9
DBAs   Developers                    10
DBAs   Developers                    11
Why
Agile?             Embrace change.                    —Kent Beck                                 12
1                         RealizationChange
is
unpredictable,
inevitable,
multidimension                                  ...
2                  RealizationResponsiveness
to
change
is
an
advantage.                                            14
3              RealizationTraditional
design‐build
methods   were
not
working
for
me.                                   15
XP
==
“Embrace
Change” seeking
a
discipline
for
responding
to
change                                                 16
agile
≠
undisciplinedIf
agile
looks
undisciplined
to
you,
then
you’re
doing
it
wrong.                                     ...
18
Developers             18
Believers
ofDevelopers   agile
values
and
                principles                                 18
Believers
ofDevelopers                   agile
values
and
                                principles             Disciplin...
19
Everyone           19
Everyone   Says
X                    19
Everyone            Says
X           Does
X                             19
a) Satisfy
the
customer
through
early
and
   continuous
delivery
of
valuable
software.b) Working
software
is
the   primary...
Manufacturing
 optimization                 21
Manufacturing
                 =   Database
Application optimization            optimization                              ...
Manufacturing
                 =   Database
Application                                            =   Software
Developmen...
Manufacturing
                 =   Database
Application                                            =   Software
Developmen...
Manufacturing
                 =   Database
Application                                            =   Software
Developmen...
22
Agile?Why
            22
Why
Agile?✓   better


❶
net
profit




❷
cash
flow




❸
return
on
investment                                              ...
Why
Agile?✓   better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓   higher
quality                            ...
Why
Agile?✓   better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓   higher
quality✓   more
fulfillment         ...
Why
Agile?✓   better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓   higher
quality✓   more
fulfillment✓   more
...
Why
Agile?✓   better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓   higher
quality✓   more
fulfillment✓   more
...
Why
 Agile?✓   better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓   higher
quality✓   more
fulfillment✓   more...
❶❷❸❹❺Five
Practices
from
XP                         23
Incremental
Design     The question is not whether or not to     design, the question is when to     design. Incremental d...
Plans
fail.There
are
ways
to
prevent
a
failed
plan
      from
failing
your
project.                                       ...
26
26
26
BigDesign Up  Front            26
BigDesign Up  FrontIncrement al Design             26
Rapid
Iteration         Working software is the         primary measure of progress.                             —Kent Bec...
28
The
worst
software
in
the
world?                                   28
The
worst
software
in
the
world?“...90%
complete,
but
nobody
can
run
it
yet.”                                             ...
29
29
29
29
Test‐First
Programming         Continuous testing reduces the         time to fix errors by reducing         the time to d...
Ever
been
afraid
to
improve
your
code?                                         31
32

Test‐First
Programming
works:How                                   32

Test‐First
Programming
works:How1. Add
a
case                                   32

Test‐First
Programming
works:How1. Add
a
case2. Add
a
test                                   32
How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)                 ...
How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)4. Write
code    ...
How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)4. Write
code5. R...
How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)4. Write
code5. R...
Pair
Programming     Silence is the sound of risk piling up.                                 —Kent Beck                   ...
Stuck?Not
in
the
mood?Skipping
steps?                   34
Programmer   Wingman       Wingman              (option
1)    (option
2)                                    Wingman       ...
Ten‐Minute
Build     Practices should lower stress. An     automated build becomes a stress     reliever at crunch time. “...
[exec]   Result: PASS    [echo]    [echo]   mrtim    [exec]   # ./t/4154.test    [exec]   # ./t/4160.test    [exec]   # ./...
❶❷❸❹❺How
Agile
has
helped
me                          38
Big
Spec
==
Big
Mistake              the
testing‐is‐too‐expensive
problem                    the
antigravity
problem      ...
‘‘ Maintain only the code and the tests as permanent artifacts. Generate other documents from the code and tests.         ...
Regression
Testing
==
Awesome         far
less
expensive
than
I
thought        makes
refactoring
so
much
easier           ...
Incremental
Design
==
Better
Design        makes
decisions
easier,
more
obvious         thus
less
expensive
and
just
bette...
!""# $%"&  (#"         43
Here’s
what
I
thought
I
wanted           when
I
designed
big
up
front...                       timefeatures               ...
features                                                     time           Build
something
valuable
that
runs,           ...
features                                                    time           Build
a
little
more
and
release,             a
...
features                                         time           ...and
discover.features               time               ...
features                                             time              What
I
want
is           not
what
I
imagined.featur...
featuresfeatures                       time✓          Usable
software
earlier✓          Experience
informs
the
design✓    ...
Awesomefeatures                                           Notfeatures                                           Awesome   ...
❶❷❸❹❺What
has
NOT
Worked                      50
6              No
CRACK
CustomerCollaborative
+
Representative
+
Authorized
+
Committed
+
Knowledgable                nobo...
6Too
Many
Customers    just
as
bad
as
no
customer             Suicide!   great
design
is
also
about
No
                   ...
6              Cultural
Mismatchagile
is
about
decentralization
of
responsibility,
accountability,
...                cent...
6                        Talent
Mismatch                           undisciplined
+
agile
==
chaos                    parti...
❶❷❸❹❺Discussion             55
Cary
Millsap    MeTHOD R     http://method‐r.comhttp://carymillsap.blogspot.com @CaryMillsap



@MethodR                  ...
57
Upcoming SlideShare
Loading in...5
×

My Case for Agile

307

Published on

Among Oracle database administrators (DBAs), "Agile" is widely regarded as a dirty word, a synonym for "sloppy programming." But in the most commercially and technically successful projects I've ever worked on, the principles of the Agile Manifesto have defined our work (specifically, the implementation of the Agile Manifesto called Extreme Programming (XP), as explained by Kent Beck). In fact, further than that: the principles of Agile, implemented as XP, have profoundly enriched my entire life—not just professionally, but personally. The contradiction between the typical DBA's perception of "Agile" and my own is, thus, stunning.

This session describes my experiences with Agile values and our implementation of them. I describe the circumstances that have led me to believe passionately that it's XP that will best assure the success of my projects. I describe what has worked for me and why, and I describe what hasn't worked and why.

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
307
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • Three things I learned in this morning’s keynote...\n
  • Three things I learned in this morning’s keynote...\n
  • Three things I learned in this morning’s keynote...\n
  • Three things I learned in this morning’s keynote...\n
  • Three things I learned in this morning’s keynote...\n
  • Three things I learned in this morning’s keynote...\n
  • \n
  • \n
  • \n
  • \n
  • “They must be doing ‘agile’ in the kitchen.”\n
  • I have 4 questions for you:\nHow many would be willing to show your hand?\nHow many DBAs?\nHow many developers?\nHow many both DBA and developer?\n
  • Crush the Castle\n
  • Here’s a great metaphor that Tom Kyte showed one time.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • This is where the DBAs in the room will stiffen up.\n“Change is not inevitable; it’s a consequence of not planning well enough.”\nChange is inevitable, multidimensional.\n\n
  • I know this from running my own business.\n
  • “Some long stories, I can tell you later…”\n\n
  • \n
  • Some agile practices require extraordinary discipline.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • “The more general case…”\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • Said another way: “Because I think Agile optimizes software development for me.”\n...But it’s worth it.\n
  • \n
  • \n
  • \n
  • Top picture: attempt at optimizing (Frederick Taylor style) by separating “thinking” from “doing.”\nBut it doesn’t work when you’re inventing, which software development almost always is.\n
  • Top picture: attempt at optimizing (Frederick Taylor style) by separating “thinking” from “doing.”\nBut it doesn’t work when you’re inventing, which software development almost always is.\n
  • Top picture: attempt at optimizing (Frederick Taylor style) by separating “thinking” from “doing.”\nBut it doesn’t work when you’re inventing, which software development almost always is.\n
  • Top picture: attempt at optimizing (Frederick Taylor style) by separating “thinking” from “doing.”\nBut it doesn’t work when you’re inventing, which software development almost always is.\n
  • \n
  • \n
  • \n
  • These loops aren’t “design reviews,” they’re runnable software reviews.\n
  • These loops aren’t “design reviews,” they’re runnable software reviews.\n
  • These loops aren’t “design reviews,” they’re runnable software reviews.\n
  • \n
  • \n
  • Write code and refine tests until all tests pass.\n
  • Write code and refine tests until all tests pass.\n
  • Write code and refine tests until all tests pass.\n
  • Write code and refine tests until all tests pass.\n
  • Write code and refine tests until all tests pass.\n
  • Write code and refine tests until all tests pass.\n
  • Write code and refine tests until all tests pass.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Testing is too expensive: No normal human can test and retest to a 300-page spec.\nAntigravity: I can spec in English things that are impossible to do in code; ambiguity also a problem.\nGluttony: When you’re writing, you’re king; nothing can stop you (cost is not in focus).\nIt’s not what I want: Imagination is just no substitute for touch/use experience.\n
  • One of the most elemental principles behind relational design: store information once and only once.\nPrevent update anomaly.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Agile principle YANGNI (you’re not going to need it): prove that you’ll need it before you build it.\n\nhttp://www.truesake.com/newsletters/2008-01.php\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "My Case for Agile"

    1. 1. My
Case
forAgile
MethodsCary
Millsap@CaryMillsap
/
cary.millsap@method‐r.comODTUG
KScope
2011,
Long
Beach
CA11:15a–12:15p
Monday
27
June
2011©
2011
Method
R
Corporation 1
    2. 2. 2
    3. 3. follow
professional
comedian 2
    4. 4. follow
professional
comedian 2
    5. 5. follow
professional
comedian yell
at
audience 2
    6. 6. follow
professional
comedian yell
at
audience 2
    7. 7. follow
professional
comedian yell
at
audiencemandate
awkward
social
contact
with
your
seatmate 2
    8. 8. follow
professional
comedian yell
at
audiencemandate
awkward
social
contact
with
your
seatmate 2
    9. 9. Cary
MillsapTeaching Consulting Business Method Software 1985–1987 1988–1989 1990–1992 1993–1995 1996–1999 2000–2003 2004–2008 2009–2010 2011–201x 0 25 50 75 100 3
    10. 10. MeTHOD R Cary
MillsapIf
you’d
like
to
talk
about
software
this
week, tweet
me
at
@CaryMillsap 4
    11. 11. 1. Agile
and
me2. Five
practices
from
XP3. How
Agile
has
helped
me4. What
has
not
worked5. Discussion 5
    12. 12. ❶❷❸❹❺Agile
and
me 6
    13. 13. Agile
as
a
joke...7 Photo:
http://www.sxc.hu/browse.phtml?f=view&id=1174739
    14. 14. DBAs Developers 8
    15. 15. 9
    16. 16. DBAs Developers 10
    17. 17. DBAs Developers 11
    18. 18. Why
Agile? Embrace change. —Kent Beck 12
    19. 19. 1 RealizationChange
is
unpredictable,
inevitable,
multidimension al,
comple x,
... 13
    20. 20. 2 RealizationResponsiveness
to
change
is
an
advantage. 14
    21. 21. 3 RealizationTraditional
design‐build
methods were
not
working
for
me. 15
    22. 22. XP
==
“Embrace
Change” seeking
a
discipline
for
responding
to
change 16
    23. 23. agile
≠
undisciplinedIf
agile
looks
undisciplined
to
you,
then
you’re
doing
it
wrong. 17
    24. 24. 18
    25. 25. Developers 18
    26. 26. Believers
ofDevelopers agile
values
and
 principles 18
    27. 27. Believers
ofDevelopers agile
values
and
 principles Disciplined
agile
 practitioners 18
    28. 28. 19
    29. 29. Everyone 19
    30. 30. Everyone Says
X 19
    31. 31. Everyone Says
X Does
X 19
    32. 32. a) Satisfy
the
customer
through
early
and
 continuous
delivery
of
valuable
software.b) Working
software
is
the primary
measure
of
progress. 20
    33. 33. Manufacturing
 optimization 21
    34. 34. Manufacturing
 = Database
Application optimization optimization 21
    35. 35. Manufacturing
 = Database
Application = Software
Development optimization optimization optimization 21
    36. 36. Manufacturing
 = Database
Application = Software
Development = Baseball
Club optimization optimization optimization optimization 21
    37. 37. Manufacturing
 = Database
Application = Software
Development = Baseball
Club optimization optimization optimization optimization Global
goal:
maximize... ❶
net
profit




❷
cash
flow




❸
return
on
investment 21
    38. 38. 22
    39. 39. Agile?Why
 22
    40. 40. Why
Agile?✓ better


❶
net
profit




❷
cash
flow




❸
return
on
investment 22
    41. 41. Why
Agile?✓ better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓ higher
quality 22
    42. 42. Why
Agile?✓ better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓ higher
quality✓ more
fulfillment 22
    43. 43. Why
Agile?✓ better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓ higher
quality✓ more
fulfillment✓ more
enjoyment 22
    44. 44. Why
Agile?✓ better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓ higher
quality✓ more
fulfillment✓ more
enjoyment Not
because
it’s
easy. 22
    45. 45. Why
 Agile?✓ better


❶
net
profit




❷
cash
flow




❸
return
on
investment✓ higher
quality✓ more
fulfillment✓ more
enjoyment Not
because
it’s
easy. It’s
not. 22
    46. 46. ❶❷❸❹❺Five
Practices
from
XP 23
    47. 47. Incremental
Design The question is not whether or not to design, the question is when to design. Incremental design suggests that the most effective time to design is in the light of experience. —Kent Beck 24
    48. 48. Plans
fail.There
are
ways
to
prevent
a
failed
plan
 from
failing
your
project. 25
    49. 49. 26
    50. 50. 26
    51. 51. 26
    52. 52. BigDesign Up Front 26
    53. 53. BigDesign Up FrontIncrement al Design 26
    54. 54. Rapid
Iteration Working software is the primary measure of progress. —Kent Beck 27
    55. 55. 28
    56. 56. The
worst
software
in
the
world? 28
    57. 57. The
worst
software
in
the
world?“...90%
complete,
but
nobody
can
run
it
yet.” 28
    58. 58. 29
    59. 59. 29
    60. 60. 29
    61. 61. 29
    62. 62. Test‐First
Programming Continuous testing reduces the time to fix errors by reducing the time to discover them. —Kent Beck 30
    63. 63. Ever
been
afraid
to
improve
your
code? 31
    64. 64. 32
    65. 65. 
Test‐First
Programming
works:How 32
    66. 66. 
Test‐First
Programming
works:How1. Add
a
case 32
    67. 67. 
Test‐First
Programming
works:How1. Add
a
case2. Add
a
test 32
    68. 68. How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails) 32
    69. 69. How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)4. Write
code 32
    70. 70. How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)4. Write
code5. Run
all
tests


(✔✔✔✔✔

...all
tests
succeed) 32
    71. 71. How
Test‐First
Programming
works:1. Add
a
case2. Add
a
test3. Run
all
tests


(✔✔✔✔✗


...new
test
fails)4. Write
code5. Run
all
tests


(✔✔✔✔✔

...all
tests
succeed)6. Refactor 32
    72. 72. Pair
Programming Silence is the sound of risk piling up. —Kent Beck 33
    73. 73. Stuck?Not
in
the
mood?Skipping
steps? 34
    74. 74. Programmer Wingman Wingman (option
1) (option
2) Wingman (option
3) 35
    75. 75. Ten‐Minute
Build Practices should lower stress. An automated build becomes a stress reliever at crunch time. “Did we make a mistake? Let’s just build and see.” —Kent Beck 36
    76. 76. [exec] Result: PASS [echo] [echo] mrtim [exec] # ./t/4154.test [exec] # ./t/4160.test [exec] # ./t/4163.test [exec] # ./t/4175.test [exec] # ./t/4176.test [exec] # ./t/core01.test [exec] # ./t/opt01.test [exec] # ./t/pod01.test [exec] ./t/test.t .. ok [exec] All tests successful. [exec] Files=1, Tests=14, 29 wallclock secs ( 0.02 usr 0.00 sys + 26.73 cusr 3.22 csys = 29.97 CPU) [exec] Result: PASS [echo] [echo] mrtimfix [exec] # ./t/opt01.test [exec] ./t/test.t .. ok [exec] All tests successful. [exec] Files=1, Tests=7, 6 wallclock secs ( 0.02 usr 0.00 sys + 4.52 cusr 0.56 csys = 5.10 CPU) [exec] Result: PASS [echo] [echo] mrcallrm [exec] # ./t/4119.test [exec] # ./t/4137.test [exec] # ./t/4138.test [exec] # ./t/4139.test [exec] # ./t/pod01.test [exec] ./t/test.t .. ok [exec] All tests successful. [exec] Files=1, Tests=11, 5 wallclock secs ( 0.02 usr 0.00 sys + 4.28 cusr 0.54 csys = 4.84 CPU) [exec] Result: PASSBUILD SUCCESSFULTotal time: 3 minutes 20 seconds 37
    77. 77. ❶❷❸❹❺How
Agile
has
helped
me 38
    78. 78. Big
Spec
==
Big
Mistake the
testing‐is‐too‐expensive
problem the
antigravity
problem the
gluttony
problemthe
I‐know‐it’s‐what‐I‐asked‐for‐but‐it’s‐not‐what‐I‐want
problem 39
    79. 79. ‘‘ Maintain only the code and the tests as permanent artifacts. Generate other documents from the code and tests. —Kent Beck 40
    80. 80. Regression
Testing
==
Awesome far
less
expensive
than
I
thought makes
refactoring
so
much
easier inspires
confidence makes
support
and
documentation
better 41
    81. 81. Incremental
Design
==
Better
Design makes
decisions
easier,
more
obvious thus
less
expensive
and
just
better creates
inspired
innovation 42
    82. 82. !""# $%"& (#" 43
    83. 83. Here’s
what
I
thought
I
wanted when
I
designed
big
up
front... timefeatures time 44
    84. 84. features time Build
something
valuable
that
runs, and
release
it.features time 45
    85. 85. features time Build
a
little
more
and
release, a
little
more
and
release...features time 46
    86. 86. features time ...and
discover.features time 47
    87. 87. features time What
I
want
is not
what
I
imagined.features time 48
    88. 88. featuresfeatures time✓ Usable
software
earlier✓ Experience
informs
the
design✓ Better
design
in
the
end 49
    89. 89. Awesomefeatures Notfeatures Awesome time✓ Usable
software
earlier✓ Experience
informs
the
design✓ Better
design
in
the
end 49
    90. 90. ❶❷❸❹❺What
has
NOT
Worked 50
    91. 91. 6 No
CRACK
CustomerCollaborative
+
Representative
+
Authorized
+
Committed
+
Knowledgable nobody
to
say
No,
so
everything
is
Yes Suicide! team
doesn’t
know
what
to
do,
makes
it
up
as
it
goes
along 51
    92. 92. 6Too
Many
Customers just
as
bad
as
no
customer Suicide! great
design
is
also
about
No
 52
    93. 93. 6 Cultural
Mismatchagile
is
about
decentralization
of
responsibility,
accountability,
... centralization
+
agile
==
hypocrisy agile
requires
openness,
honesty
about
where
failures
are 53
    94. 94. 6 Talent
Mismatch undisciplined
+
agile
==
chaos participants
must
actively
design,
optimizekey
skill:
project
factorization
to
produce
running,
valuable
software
every
n
weeks 54
    95. 95. ❶❷❸❹❺Discussion 55
    96. 96. Cary
Millsap MeTHOD R http://method‐r.comhttp://carymillsap.blogspot.com @CaryMillsap



@MethodR 56
    97. 97. 57
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×