Sometimes I’m the most helpful when I just sit there and mainly keep quiet – assuming I’ve gotten the right people together to talk.
Today was a good example. One of our stories this sprint is an algorithm to calculate internal rate of return on a 401(k) account. This is pretty complex (especially for me, given that my math education topped out at algebra). The product owner has done a lot of research and experimentation to come up with the formula. He documented the formula on the wiki, and created a spreadsheet with numerous real examples from production data. The developers have done their own research as well. They wrote code to do the figuring and a couple of FitNesse tests based on the spreadsheet examples to check the results, and their answers didn’t match the PO’s answers.
The developer came over and started asking me questions about the PO’s formula. I thought we ought to be discussing it with the PO, who fortunately showed up right at that time. We had the “Power of Three” going. I didn’t participate much, other than to ask an occasional question. I don’t grasp the details of the formula well enough to make suggestions. My main contribution was to have made sure the three of us got together and talked.
We worked through some examples, and the PO decided the dev’s ideas were good and agreed to change the formula, but brought up a suggestion from another dev that would make the formula more ‘elegant’. They talked about this for a few minutes, obviously neither totally understood this other idea, so I went and got that developer. After more discussion, the decision was to proceed with the current formula, see how it works, then later on, see if the more elegant solution is appropriate. I’m not even the main tester on this story, so I made sure that the person who is got filled in on what happened.
I didn’t contribute hardly anything to this discussion, other than to make sure the right people talked, that they reached a consensus, and that appropriate action was taken to document the new formula on our wiki. But let’s say we were a team without testers. Maybe the developer would have gone directly to the PO, but would they have gone and gotten the other developer? Would the decision have been made and documented? It’s possible, but the number of times that I’ve been the instigator in getting the right people together to discuss and decide is pretty high. I’m also often the first person to say “Let’s work through a real example”. And back when we first started Scrum, and direct communication between customers and developers was new, these kinds of impromptu discussions sure didn’t happen naturally.
I recently joined the KanbanDev mailing list, and there’s been a discussion there about whether testers should be involved with the dev team and how they would add value. As simple as it sounds, getting people together to talk has always been one of my major contributions. The Power of Three, as Janet Gregory calls it, is truly powerful.