9. A little history
• agilemanifesto.org - February 2001
• Programmers tired of bureaucracy
• lean.org - Toyota Post WWII
• Few customers
• Had to remove waste
• Scrum Conference + XP Conference
10. Agile 2009 Conference
• Chicago - August 24-27
• 1350+ Attendees
• Large Music Festival Model (21 “stages”)
• 20+ sessions going on at any time
• Any number of “Open Jam” sessions
11. User Experience (UX)
• Jared Spool Keynote
• Guerilla Usability Testing
• Guerilla User Research
• Lightweight Design
• Integrated with Agile/Scrum/Iterative dev.
12. What’s the Story?
As <role> I want <function>
so that <business value>
Rachel Davies
Johanna Rothman
14. 10 Years to World Class
• The Role of Deliberate Practice in the
Acquisition of Expert Performance
- by Anders Ericsson
• Sufficient time (hours a day)
• Mentor/Coach/Teacher
• Specific practice
• Immediate Feedback
16. Software Craftsmanship
• Software Craftsmanship North America
• Know your craft
• Study more than 1 language (Java, C#,
Dynamic, Functional)
• YOU are responsible for your training
• No technical debt - only mess making
20. BDD Benefits
• TDD is actually not about testing
• TDD is a design methodology
• “Test” Driven Development encourages
“Test” mindset and delays mastery of TDD
• BDD encourages starting from the
behavior and the use of
• Mock objects
21. BDD Sessions + Tools
• Agile 2009 Sessions:
• “Acceptance Testing Java Applications
with Cucumber, RSpec, and JRuby”
• “How to Make Your Testing More
Groovy”
• Tools
• RSpec, Cucumber, JBehave, EasyB, .......
25. Mock Objects
• Mock Roles not Objects
• System Under Test & Collaborators
• “Mocks aren’t Stubs” (or dummies)
• State vs. Behavior Verification
• Java tools - jMock, EasyMock, Mockito
26. JMock Example
SUT sut = new SUT(); // System Under Test
Mock mock = new Mock(Collab.class);
//setup expectations
mock.expects(once()).method(“neededMethod”)
.with(eq(1), eq(“String param”));
//exercise
sut.testedMethod((Collab) mock.proxy());
//verify
mock.verify();
assertEquals(EXPECTED_STATE, sut.state());
30. Other Groovy Features
• Fully compatible with Java code
• Can use Static Types
• Easy to make Domain Specific Language
• Dynamic typing, closures,
metaprogramming, etc.
• Easy XML processing, string & list handling
33. Decision vs.
Exploration
• Discussion is “convergent”. It assumes a
single viewpoint must be chosen.
• Dialog or Conversation allows for
exploration and does not require decision.
• Dialog is critical for many Agile processes.
• User Research, Retrospectives, Learning