Archive

Monthly Archives: July 2018

What is “Working Software”?

We have for decades now been informed by the Agile Manifesto, and its four guidelines. Guideline number two is “working software over comprehensive documentation”. I’m sure many folks skip over this with no more than a quick nod of agreement (and a implicit interpreting of “comprehensive documentation” as “reams of useless documentation”).

But what exactly do we mean by “working software”? A quick trawl through the Internet finds little in the way of a definition of this term, nor any explicit explanations of the why – the value – of “working software”.

For me, working software is simply any software that is actively being used by customers (a.k.a. users) in their real jobs. Until and unless it’s actually being used for the core purpose for which it was built, no one will be any the wiser as to its fitness for purpose.

Who Benefits from “Working Software”?

Developers

Developers get to understand how close they came to understanding the customers’ needs. Assuming, of course, that the feedback loop from customs to developers is a closed loop, rather than having no feedback from customers, or any feedback that is provided falling into a hole or getting hopeless garbled somewhere along the line from customers to developers. In the latter case working software is a pretty useless and ultimately frustrating concept.

Customers

Customers get to apply the software in the context it was intended. By which I mean their using it to help them be more successful (whatever that might mean in any individual case). They’re reassured that the developers are attending to their needs (although not necessarily fully meeting them). By applying the software in their work context, they get to see its true nature and fit. And they get to tell their story, or at least a part of it. Folks find telling their stories cathartic (assuming they’re being listened-to).

The Producers

The producers (the company supplying/building the software) get to exercise their channels to and from the market, and to and from active users. Shortfalls in the clear communication of needs (customers -> developers), smooth deployments (company -> customers) and clear communication of feedback (customers -> developers) can be identified and addressed. In principle, anyways.

Other Benefits

“Working software” as defined above, promises other benefits, above and beyond those already mentioned.These additional benefits  include:

  • Provides a definitive and unambiguous definition of what has been shipped/deployed, in a way that written requirements or documentation (one of the forms of documentation mentioned in the aforementioned Agile Manifesto guideline) simply cannot.
  • Promotes interaction and collaboration. Not just via feedback on the final version, but all the way through the evolution of the product or service under development. (Assuming the product or service deployed is capable of supporting real users in real work).
  • Early & regular delivery of value:
    Value to the customer / user (the growing utility of the product or service, as it evolves through numerous deployments and instances of real use).
    Value to the producers (assuming the producers get paid for each deployment + live use).
    Value to the developers (kudos and the joy inherent in materially attending to folks’ needs).
  • Flow (assuming iterative deployments + live use).
  • The Check phase of PDCA (hypothesise -> experiment -> compare proposed results with actual results -> draw conclusions )
  • A valuable measure of progress (“how well are we contributing to the success of our customers?”)

What “Working Software” is Not

It’s not:

  • “works on my machine”
  • “passes the test suite”
  • “runs in the test environment”
  • “runs in production”

None of these provide the acid test of real users doing real work with the thing.

Proviso

As with most things Agile, the label “working software” misleads as much as it helps. I’d propose renaming it to e.g. “deployed product or service” but that horse is already out of the stables and far over the hills. “Working” is ambiguous, and “software” omits mention of all the other elements of the deployed product or service necessary to put it to real use (user guides, release notes, other documentation, training, support, etc.).

– Bob

Further Reading

Online Experimentation at Microsoft ~ Ronny Kohavi et al.

Please Don’t Irk Me with Fast Arguments

I love Twitter for its ability to facilitate conversations over time and space. Recently, I have found myself feeling irked by a style of conversation which I could describe – and have described – as “cargo-culted argument”. In other words, arguments attempting to promote a position based on widely-held existing beliefs and ideas (and where the arguer appears have not thought through that belief).

“A great many people think they are thinking when they are merely rearranging their prejudices.”

~ William James

Socratic Questions

I find Socratic questioning to be useful when mutually exploring a topic or question (my preferred mode of conversation). In using Socratic questioning I seek to invite parties to the conversation to reflect on and think about the issue afresh. Occasionally, however, one party will choose to repeat “conventional wisdom” on the topic, without, seemingly, pausing for said reflection. I say “choose”, but I wonder how much of a conscious choice it is. We humans are creatures of habit, not least when it comes to thinking.

I feel saddened on such occasions, when we miss the opportunity for deeper mutual exploration of a topic (and thereby a deepening of our relationship or Twitter connection).

“No problem can withstand the assault of sustained thinking.”

~ Voltaire

Fast Arguments – or Slow?

Kahneman writes about this phenomenon in his book “Thinking, Fast and Slow”. He describes Slow (system 2) thinking as the kind of reflective, conscious, consider-things-afresh thinking Socratic questions invite, whereas we all prefer to default to what he labels as Fast (system 1) thinking, which so often, in this context, leads to a simple regurgitation of conventional wisdom.

Would you be willing to set aside your Fast arguments in favour of a more Slow exploration of topics of conversation?

– Bob

Further Reading

Thinking, Fast and Slow ~ Daniel Kahneman