As a housewife, my wife (the Product Owner)
Wants the bed in one room swapped with the couch/futon/bed in another
So that she can more comfortably sit and watch the Olympics on TV in the sunnier, warmer room.
With 3 programmers in the room, it was inevitable that we would choose an Agile approach to this requirement. The User Story above was our first step, and was duly agreed to by said wife as Accurately Describing What She Wanted and its Business Value.
Given the constraint that both rooms involved are too small to contain both pieces of furniture simultaneously, we realised that we would need a temporary variable as a swap space. I’m pretty sure that, barring some major advance in our understanding of Quantum Mechanics, pieces of furniture can’t be swapped by being XOR’d through each other.
We broke the Story down into some Tasks:
- Remove the bed from Room 1 into the Swap Space.
- Remove the Futon from Room 2 into the Swap Space.
- Move the Futon Base (a finger-eating piece of folding woodworkery) from Room 2 into Room 1 and position it in its final position.
- Move the Futon from the Swap Space into Room 1 and position it on its Wooden Base.
- Move the bed base from the Swap Space into Room 2 and position it in its final position.
- Move the mattress from the Swap Space into Room 2 and place it on its base.
Seemed like a reasonable breakdown at the time. We did some estimations and figured we could fit it all into a single Sprint.
Here’s how it played…
Task-1 went quite smoothly. Mattress and bed base moved to the Swap Space.
Task-2 also went well. Please bear in mind that the futon and mattress are large, floppy and heavy items, so not all that easy to move about.
Martin and I – Pair Moving – make an attempt at Task-3. Space is very constrained, so moving the Futon-base into Room 1 involves a brief detour into Room 3. Halfway there we suddenly realise that – because the base is asymmetric – we have to turn it around in the Swap Space before it can be Deployed into Production.
We complete Task-4, only to realise that we were entirely wrong about which way round the base has to go. We’ve moved it into the room the wrong way round. And the room is too small for us to turn it around short of Interesting Topological Manoeuvres.
So we back out again, via Room 3, back into the Swap Space where there is sufficient room to turn the base around.
Some discussion ensues. We realise that we should have had better Unit Tests in place for this Task. Finally we manage to complete the Task.
It’s a tight fit, but the Futon/couch will serve our User perfectly as she wished.
Sadly there’s an unforeseen bug. A small drawer unit now blocks the doorway, making for extremely poor UX. Not our problem, though. We’ve met our spec and implemented the Story. People will simply have to leap over the drawer-unit for the time being. Changes will have to be the subject of a subsequent Sprint. Maybe if we’d done a little design up-front…
Happily I can report that the rest of the Sprint went quite as anticipated. We were even able to implement a small Improvement Task by orienting the bed in Room 2 in a much more User Friendly fashion.
I do wish Furniture Topology was amenable to Version Control, though. It would have made our Task-4 issues a bit simpler to resolve. But then, perhaps we should have abandoned the Sprint at that point.
Still not quite sure how all the Scrum ceremony helped, though. We did what needed doing, and the task took exactly as long as it took, estimates notwithstanding.