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.
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
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
78. Big Spec == Big Mistake
the testing‐is‐too‐expensive problem
the antigravity problem
the gluttony problem
the I‐know‐it’s‐what‐I‐asked‐for‐but‐it’s‐not‐what‐I‐want problem
39
79. ‘‘
Maintain only the code and the tests as
permanent artifacts. Generate other
documents from the code and tests.
—Kent Beck
40
80. Regression Testing == Awesome
far less expensive than I thought
makes refactoring so much easier
inspires confidence
makes support and documentation better
41
91. 6
No CRACK Customer
Collaborative + 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. 6
Too Many Customers
just as bad as no customer
Suicide!
great design is also about No
52
93. 6
Cultural Mismatch
agile is about decentralization of responsibility, accountability, ...
centralization + agile == hypocrisy
agile requires openness, honesty about where failures are
53
94. 6
Talent Mismatch
undisciplined + agile == chaos
participants must actively design, optimize
key skill: project factorization to produce running, valuable software every n weeks
54
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