Lean, Mean, & Agile Agile 2009 Conference Report Harold Shinsato - October 8, 2009
Lean, Mean, & AgileAgile 2009 Conference Report
Harold Shinsato - October 8, 2009
YesPower
IntegrityChallengeStrengthCourageWinning
NoViolence
ArroganceEtc.
Truth, Beauty, Fun
Challenge
Agile
Agile Scrum & XP
Lean 5 Steps
Lean Software Development
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
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
User Experience (UX)
• Jared Spool Keynote
• Guerilla Usability Testing
• Guerilla User Research
• Lightweight Design
• Integrated with Agile/Scrum/Iterative dev.
What’s the Story?
As <role> I want <function>so that <business value>
Rachel Davies
Johanna Rothman
Deliberate Practice
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
Uncle “Bob” Martin
objectmentor.com
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
Test Driven Development
TDD Benefits
• Clean code
• Self documenting
• Full unit test suite
• Enables near 0 defect rate
• Ensures flexible code
Behavior Driven Development
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
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, .......
RSpec/Cucumber
JBehave
EasyB
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
JMock ExampleSUT sut = new SUT(); // System Under TestMock mock = new Mock(Collab.class);
//setup expectationsmock.expects(once()).method(“neededMethod”) .with(eq(1), eq(“String param”));
//exercisesut.testedMethod((Collab) mock.proxy());
//verifymock.verify();assertEquals(EXPECTED_STATE, sut.state());
Bad Mocking(thanks Paolini Carolini & Sudhindra Rao)
• Unreadable tests
• Replacing Integration Testing
• Unnecessary (e.g. Value Object)
• Context Confusion
• Mock returns Mock
• Mock Abuse (better: FakeDB, Dummy, Stub, Fixture)
Dynamic Languages & Groovy
Groovy = less code
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
Groovy Adoption
Discussion vs. Dialog
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
Dialog Processes
• World Café
• Open Space Technology
• Deep Democracy
• Appreciative Inquiry
Leadership Stage
• Coaching
• Organizational Development
• Change Management
• Collaborative vs. “Command & Control”
• Leadership & Self-Organizing
• “Stepping Up & Stepping Back”
Post-Heroic Leadership
Gilles Brouillet“Developing Agile Leaders and Team: A Developmental Path”
Stages of Leadership
Responsibility Redefined
• Dr. Christopher Avery
• Leadership means 100% Responsibility
• Responsibility != Accountability
• Responsibility != Shame
Responsibility Process
We cannot solve our problems with the same thinking we used
when we created them.
We Want Your Questions, Thoughts ...