Chris Wheeler writes:
I have some brief thoughts on two of your entries.
The first is about the Readable FIT Documents. I loved what you were doing up to this point:
Searching from invisible node 3.1 finds (nothing)
Searching from node 3.2 finds node 3.2, node 3.2.1
Searching from node 3 finds node 3, 3.2, node 3.2.1
As you mentioned, this is defined almost conversationally. Quite prose-like. But then I think the programmer in you crept to the surface and you wanted to get rid of the duplication. So you made two more steps and refactored to a more traditional looking ColumnFixture.
I don't really like that last refactoring, because to me, it doesn't convey the meaning as clearly as the more conversational sentences. Certainly the duplication is removed. And I agree that duplication is usually a bad thing, in process, in programming, and yes, in a lot of instances, it's a bad thing in story tests. But I wonder if duplication is a natural communication mechanism, because once the duplication was removed, the intent wasn't as clear any more.
A thought that struck me just now is that duplication in specification isn't as bad as having ideas scattered across many different tests. High cohesion in story tests is more important to me than removing duplication.
Of course, these aren't hard and fast rules when writing specifications - I can't think of any hard and fast rules. It's just something to be aware of.
I agree with what Chris is saying here. That example is nice and readable, and I also agree that duplication in a single table isn't as bad as having cohesion problems.
I still think the first ColumnFixture form is really pretty, but that could just be the programmer in me. :) Either way, I think a key idea here (thanks to Brian Marick) was to have the "given" data in a separate table. Without that, neither form would work well.
My other thoughts are around the blog entry on Retrospectives. I've thought of this very thing too, to have a box that people drop cards into. Not having done this, my comments are based mostly on thought experiments I've carried out in my head.
If this were to be implemented, I could imagine that continuous improvement might be stalled somewhat. People might not speak up when things bother them. If they don't speak up, issues that could be addressed immediately won't be addressed immediately. And information about the issue could be lost.
I could imagine that this might be used as a tool for avoiding tension or participation. Tension brings out creative solutions at times. People uncomfortable in this type of environment might use the box as a place to hide - almost as a way to not share their feelings or thoughts publicly, perhaps holding back important contributions.
That said, I've never tried it, and would be interested in hearing how this works. We've changed the way we do retrospectives, and it works amazingly well. Recently, we've moved to one week iterations and pair-hours, a la XP Explained 2.0. In so doing, we have done a few things:
- We retrospect on every story that went significantly over or significantly under our original estimate. We gain a tonne of understanding about the way we are working, and we find areas that we can make specific improvements. This takes about 30 or 40 minutes in iteration planning. (By the way, we are down to about 90 minutes of planning, and 30-40 minutes of retrospective now)
- Every two weeks we do a full retrospective, with the black hat [negative thinking] and yellow hat [positive thinking] cards, using the Same, Less, More [SaMoLo] technique. We've gotten much better at this too.
- We've created a working agreement that says that when there is pain, for whatever reason, we will become relentless advocates for the removal of that pain. We have also agreed to solve problems immediately, rather than waiting till the retrospective to talk about them. That was a big step for us, but it helped us to tackle many more inefficiencies and issues than we've ever done before, and we only have big, meaningful things brought up at the biweekly retrospective.
Well, that was more than a few thoughts.
Thanks, Chris! Some good thoughts here. I particularly like the idea of being relentless advocates for immediate removal of pain. I don't share the concern about people using the emotion box as a way to hide--as I see it, it gives people who wouldn't otherwise express themselves an avenue to do so. But the point about delaying action is well taken. I also liked Chris's idea of retrospecting on every story that goes significantly off-estimate.