Knowing the unknown
As a teenager, I remember being struck by the poignancy of the tomb of the unknown soldier. I'm not sure which tomb it was, in which city. I don't recall there being one in Ireland, so perhaps it was in London. I remember feeling sad and perhaps a little understanding of the horror of war crept into me. For such a simple monument, the message was powerful. For me, the tomb itself signified a lot more than missing soldiers. Somehow it symbolises those untold stories. Who was that person, why did they die? Was it painful, did they have a wife, children? it makes me think about history too, and how really its a story told by the victor. We rarely hear the story of the defeated. So many stories untold.
Roll on many, many years and I realise that we in software development, particularly in agile, we have many untold stories that only make the light of day when we find bugs in software. We fail to hear the stories that stakeholders wanted to say, but fell aside because of time pressure. We fail to hear stories that stakeholders have not realised exist. We fail to hear stories because some stakeholders weren't seen as needed. We failed to tell the story because we simply didn't think it was important enough.It's a wonder software works at all!
Testing to helps us uncover and tell these untold stories. How? Each bug we find, has a story behind it. It may be story of why the bug came into being in the first place. Or the story may turn out to be unimportant. Often not only do we uncover stories,we also end up adding meat the stories that exist.
I find this particularly true of agile. The simplistic approach to stories that start with "As a <insert oversimplified description of user here>, I want <some oversimplified goal> so that I can <insert oversimplified ambiguous reason>" . I do understand that the point of these stories is to initiate conversation, but it's my experience that often conversations are skipped and this skeleton like sentence ends up becoming the story. And as Allister Scott pointed out these stories would totally fail the bedtime story test performed by any 5 year old. Regardless these skeleton like stories then become converted into automated acceptance tests which significantly influences the decision to release or not. Well, in my experience anyhow.
As I understand it, one of the reasons for these simplistic stories is to achieve the goal of "dealing with the problem at hand". By focusing on only what needs to be done now, we avoid over engineering a product. Now believe me, after working on some large scale telecommunications switches in the 80's and 90's, I totally appreciate this sentiment. However, the drive to simplicity has I think led to deficiencies in how we model our systems.
For example, we fail to recognise that firstly, some systems cannot (and perhaps should not) be modelled from a user perspective. (I'm happy to be proven wrong in this, my experience in testing r&d products and layer3 protocols leads me to believe this is the case though). Also by focusing on only the problem at hand we fail to appreciate the subtleties and impacts of the unknown unknowns.
I'd like to see software development attempting to re-address this balance. When I went to Agile Australia lots of people were talking about systems thinking and my first response was "Brilliant!" but it seemed that the systems thinking was focused primarily on business systems, as opposed to products. Perhaps its me with too narrow a focus, but I'd really like to see more discussion on how we can become better at modelling software in agile.For one thing, lets move away from telling stories ONLY from a user perspective. There are many ways to model a system and greater diversity of models may bring about deeper appreciation and understanding of the problem were trying to solve.
And so to the unknown solider. I'm glad no-one has tried to simplify his story into a sentence beginning with "As a soldier...". The monument conjured up more questions than answers, questions about the unknown. Questions that can never be answered. He was the unknown solider and it was fitting. i guess one question to ask is this: is the unknown story a fit for agile?
The title for this post is inspired by Colin Cherry's talk at KWST3 about Johari windows. [thanks for the spelling check Srinivas]