Agile '05 conference, part 5 (last) - Invited talks, TDD workshop
Random notes from Open Space
Overheard: "Whenever I've been late, I've been yelled at by management. One time, we actually pulled it together and finished early. The president called me - not to praise me, but to say, 'You sandbagged me.'"
Is XP Sustainable?
Some things people do:
- Daily: variety
- Medium-term: cleanup projects
- Gold cards (explicitly scheduled 'free time')
Rick Mugridge, Domain-Driven Design Patterns and Fit. Examples: queries vs. operations, entities vs. value objects, aggregates (key root objects), repository (turns into query or iterator). Can use a different test harness with the same fixture and same code, but control whether to connect to a "real" database via configuration.
A test writing pattern: create a setup, do some action, repeat the setup but show what has changed.
Norm K erth: The Secrets of Leading from a Position of No Power
He showed clips of the film Gandhi, then debriefed to explore how Gandhi led. He points out that we can learn about leadership from studying history.
Gandhi: "Without a journal of some kind, you cannot unite a community."
Some principles: transparency, persistence, courage. An unjust law: don't resist, but don't comply either.
How did he do it? "He decided soemthing needed change--something important, and worthy of his effort." He let go of assumed authority.
Inauthentic power = anointed power - ("I'm powerful because I'm a manager.") - a weak form of power since it goes away if the position does. Authentic power - inside yourself.
Gandhi accepted the cost of punishment. "Better to lose your job for doing something, or for doing nothing?" He was respectful, sought commonality. He knew his support system: the law. He started small, finding people of like mind.
Characteristics of change agents:
- Ability to articulate a vision of where you are going (though it can change)
- Confidence - inner energy for the right thing
- Optimism - energy that you lend to someone else so they can gain confidence.
You can cultivate these!
"The most effective coach is sitting next to you, involved from the beginning to the end."
Gandhi: it paid to advertise. Peaceful revolutions are the lasting ones - they're really an evolution. Pick your battles - you don't need to do everything yourself. Know your real mission.
Joshua Kerievsky: Commoditizing Agility
According to Josh, we're right at the edge of Moore's chasm, and need to make it easier to make that move.
He had statistics from a project showing productivity increases by a factor of 2.5, achieved in one year with an XP team.
"The agile community is thriving, but transitions are too slow and expensive." Why? We're not agile enough in transitions. Problem: serialized knowledge transfer. The shift is repetitive and exhausting.
A couple models: 16 days coaching for a 15-person community. Or, inhouse workshop with 3-6 month full-time coaching for a 20-30 person community. Then try to stretch to other communities, transferring experts out and future experts in. The Problem: people are trained technically but not so much in coaching.
The basics are taught manually. This gives inconsistent content and it doesn't scale. Books don't go far enough. Basic knowledge is fragmented. Books require dedicated study.
This marginalizes coaching time: the basics take away from the hard stuff. It burns out the coaches. So we need to commoditize the basics. Experts are in short supply. How many coaches have 3+ years experience? Internal experts are "too indispensable" to share.
"Products and services are so standardized that attributes are roughly the same." A commodity market has declining prices and profit margins, more competition, and lower barriers to entry.
Ian Murdoch: "Open source and the commoditization of software": Commoditization happens eventually. It's unstoppable, but it's good for all. There's a cycle: Innovation leads to standardization [accessible] leads to commoditization (maybe) [affordable] leads to innovation. Innovation builds on a custom platform.
Commoditization can go two ways: Decommoditization is an incompatible innovation, or customization. But be careful with decommoditization - it can leave you out of the innovation loop.
What can be commoditized: basics, stories, planning, chartering, retrospectives, ... What can't: advanced practices, specialized things, "living agile values", people issues.
Josh showed an example of Husqvarna's sales training - a sort of animated comic book, with a model of the sales process built in. He showed a demo he made, using a screen capture tool.
Bottom line: Tomorrow we can have parallel processing for the basics, leaving more quality time for advanced topics. We can get quality, speedy, consistent knowledge transfer.
Workshop: TDD and Beyond, Astels and Marick
Brian Marick emphasized customer-facing tests, that help with project communication. We don't want to do all the tests at once. "Doing Fit tests in a blob creates a bottleneck at the customer/QA level. We don't need all tests, we just need one to get started." He had the image of "programmers as baby birds" [feed me].
Rick Mugridge: We need to move toward declarative tests. "Procedural tests are a smell."
Questions: "Do you have to have normal (JUnit) TDD in place before STDD?" "Do you need a strong customer to make it work?"
Roadblocks: Fit is a challenge because you need programmers and testers to make it work.
Fit Unification Summit
Friday (after the conference), a number of Fit implementors met for a Fit unification summit. If you're interested in that, look for the fit-devl mailing list.