Saturday, 29 March 2014

The bigger the rock, the smaller the pieces need to be



You know what I really, really value in a fellow professional in the information technology delivery world? That special, magical ability to decompose a large (and potentially complex problem) into small, simple subtasks.

A child can do this right? This is 'Being a Human Being 101.' So why is it a behaviour that eludes a large percentage of those in the information technology industry. This is a trait of people who I like to call 'people who get things done.' Not through heroism or great feats against monolithic bureaucracies, but a simple application of critical thought.

Is there a problem here? 

People like the idea of building big stuff, stuff to "get hold of", its very grand to say we're building an "enterprise level" application. In that vein, I hear "well, this a step change to the product" or "there is no value in splitting up the project into smaller deliverables" on a regular basis. The justifications of the desperate, determined to protect bloated road maps which perpetuate their own existence.

At its root, the real problem with big stuff is that its is counter to how our brains actually work. We are overwhelmed by it, we cannot hold it within our puny cerebrums. Small stuff is natural, we can encircle it with thought and apply ourselves to it. We can be happy that its done, or at least that its time to stop.

If you are going to be marching for a year, you need plenty of opportunities to stop off on the way. Save it all up for one payload and you are likely to trudge forwards with your eyes to the floor for a large part of the journey. Your destination may well be on the other side of the horizon before you realise. 

So why do I see this all around me? 

Aside from my own bias, its actually a thing which takes thought and effort. It's easier *right now* just to plough on and not consider how an entity can be decomposed. At least that shows progress right?

Wrong. This stems from the perception that skilful decomposition is perceived to be responsible for initially 'slowing down' a delivery, while a slice of functionality is built. Speeds up your ability to generate feedback though. Which then means that you are more likely to deliver the right thing. Which, from experience, means you build what's needed, rather than spending time on what isn't.

Can someone be explicitly taught this ability?

I believe so, although its rarely that simple. At its heart is the ability to recognise flows, change the angle of approach when required, and the application of systems thinking. Decomposing complex systems or problems into simple rules of thumb is critical to an iterative delivery. 

I always like the thought of splitting an entity by the questions you wish to answer about it. Or consider the simplest thing you can do to overcome a constraint, expose information about risk or deliver customer value. I always imagine the entity as sphere and I can go anywhere around its surface. Eventually, I'll see the angle of approach. Hey, its the way my mind works. I have to apply the mental brakes, think, rather than plough on. Its taken some practice and discipline on my part.

This ability enables that most precious of habits, that of delivery of value. For now, the delivery of unvalue is pervasive to my eyes, but I'll strive to ensure that this special but underrated ability continues to have a place in the world. 

Friday, 21 March 2014

If you don't believe it, why should anyone else?



The question of what skills do testers need intrigues me. 

This always occurs to me when engaged in the search for 'good' people to hire. We (as in the technical sphere) tend to hire predominantly on 'skills.' Very rarely do we look for behaviours, even rarer we consider beliefs.

After some consideration (and no little practical finger-burning), starting with skills is often a false position, starting with beliefs can be much more powerful.

The following question always strikes me, when I consider this context. How many testers you know can give you explanation of what they believe the essence of testing is? I know relatively few. In fact, I often received the look of a startled rabbit when I lead with this question. You do it every day, but you can't tell me what you believe it is?

To not be compelling with what you believe testing to be puts you and your chosen vocation at a significant disadvantage when interacting with those who are sceptical about its value. To be not compelling when most reasoning is done for argumentative purposes (to convince, not necessarily to make better decisions) further underpins the disadvantage.

So, when I ask myself the golden question, I begin with this:

'Testing is the skilful exploration of an entity for information about its quality, where quality is value to some person.'

To decompose:
  • I believe testing is a skill not 'just an activity';
  • I believe testing is exploration, more than it is deterministic;
  • I provide information about quality to aid decisions about risk;
  • I believe quality is most meaningfully expressed from the point of view of 'some person', who is important in context. 

Does it fly? I think so. Well, is there a 'right' answer is a more pertinent question. Perhaps the urge to be 'right' (or the desire not to be seen to be 'wrong') prevents people from venturing their thoughts.

Is it different to the next tester? I hope so. Will it change as I learn and grow. I hope for that too. Does it lift the ideas of others in a way that appeals to me? (Nods to Jerry Weinberg). Damn right.

However, when I discuss testing I have an advantage, I have questioned myself and my beliefs about my vocation and talk in a compelling manner. To be less than sincere with what you believe testing to be is to enter into a struggle which you may well lose more often than not.

Monday, 17 February 2014

I KNEW IT!


I like to think I have a nose for a problem. Not necessarily a bug, but just when something doesn't seem right. The extent to which I follow up on these gut instincts varies depending on how strongly the nagging feeling remains. 

These 'hunches' last for days, weeks or even months, often I struggle to find the vocabulary to express what I am thinking or feeling.

For example, on a past project, the system under test needed to store certain characteristics about a customer (derived from an external service) on their first interaction with the system.

'First interactions' could take a number of different paths. Something about this nagged at me after the system went into live service. I looked superficially several times at the evidence (including with the product stakeholders) and all SEEMED to be well, yet something still chipped away at my consciousness. By now I felt a little crazy, but time and change then proceeded to distract me.

Then the big day came. The information was called from its place of storage to generate a product for those customers to consume. Vast swathes of customers stored data was missing, stemming from a couple of customers flows I didn't anticipate in my testing.

I KNEW IT!

I then talked to the stakeholders involved and reiterated how I knew that something was wrong.

This was a while ago, but I haven't reflected until now. 

I probably have more questions than answers. 

Why didn't I act on my suspicions? Especially if deep down I knew that there was a problem.

Why did the testing originally done against the system not cover these flows? What questions did I not ask of myself, the stakeholders and the system under test?

Why did the stakeholders not buy (further) into my suspicions? Perhaps my procrastination and vagueness didn't inspire them to investigate further.

For now, I think I'll take away as a resolution to act on these hunches with a little more determination and strive the grow the vocabulary and skills required to express myself with greater clarity.

But, one conclusion remains for me, the gut is one of my favourite parts of the testers mindset.

Friday, 24 January 2014

Shallow Statement Syndrome


'Surely its just a case of doing X and creating a Y, then we'll obviously get to Z. I've done this lots of times before.'
This is an example of Shallow Statement Syndrome, one I hear often from those involved in software development. It comes loaded with preconception and assumption and is generally delivered with great belief by the speaker. As a tester it sets my common sense tingling.

Lets decompose the highlights:

'Surely' - I have already decided, I'm already sure, my mind is closed to options.

'Just' - I don't believe this to be complex, I am implying simplicity and ease.

'Obviously' - The outcome is obvious to me, I don't need to encourage others to envisage the outcome.

'Before' - The issue at hand stirs nostalgia, I have done this in my past, therefore it can be done again in a similar way, possibly by others. 

The problem with Shallow Statement Syndrome is the chasm beneath them when you scratch the surface. Beneath each shallow statement is analysis and detail which needs to be uncovered layer by layer as you iterate.  Those who used to have the responsibility of using technology to create complex systems are particularly prone to this syndrome, their subconscious often masking the challenges they faced.


Many projects fall into this particular abyss, recognising and critically challenging shallow statements before setting off/during the journey across the sometimes rickety rope bridge of software development can save you a short trip down a deep, crocodile-infested ravine. 

Sunday, 19 January 2014

The Fallacy of Omniscience by Proximity



I was reading about President Hollande's apparently complex love life, and a journalist who used to live in France was asked his opinion on the issue. He responded that although he used to live there, those who wanted his opinion assumed that this meant he knew all about the issue and had a groundbreaking insight into the story. 

Turns out, he hadn't lived in France for years, so was about as wise as the rest of us. Those seeking his opinion had fallen for the wonderfully named:

'The Fallacy of Omniscience by Proximity'

It means (in a general sense) you are/used to be in close proximity to subject, so it stands to reason you must know all about it right?

After pondering this lovely phrase for a while, I realised it has a relevance for us testers. 

Firstly, often, testers are a respected oracle for a domain and/or an application. You know that person who 'has been here forever and knows everything about X.' That is literally not true, and reinforces that all oracles for testing (even our fellow testers) are fallible. I still see (and participate in) this behaviour often.

Secondly, when you have tested an application I have found that it is assumed you have knowledge of every major and minor path through the functionality. As a tester, consider this statement, perhaps by another product stakeholder:

'Well, you tested it! Why didn't you know that when I do Y it triggers behaviour Z?!?'

We know of the impossibility of complete testing (our stakeholders may not) but there can be an assumption that testing brings 'complete knowledge' of an application. This is a classic example of the fallacy in question, and has its roots in a fundamental misunderstanding about the purpose of testing that still permeates today.

For now, I'm delighted to find a new way to describe a problem I ponder often.


Sunday, 5 January 2014

Agile Coaching Book Review - My Favourite Bits Mindmapped!

Quick one!

Recently finished reading 'Agile Coaching' by Rachel Davies and Liz Sedley. Most enjoyable, plenty of wincing moments when I recognised my own faux pas on the coaching front! Lots of practical tips too, which is what I like.

Anyway, I have mindmapped my favourite bits! Enjoy.

http://www.mindmup.com/#m:a198e746e05836013101307a854846eb1d


Tuesday, 24 December 2013

Unaccustomed as I am to public speaking.....


Unaccustomed as I am to public speaking. The ultimate cliché for those who are accustomed to public speaking.

For me though it was true, it was my first time up on stage, in front of the lights, with an audience I (mostly) didn't know. I was surprised. I was nervous, and I'm not a nervous person. But I really enjoyed it, and I think the audience did too. 

When I look back, these positive points come to mind:
  • The subject matter was something I felt strongly about. I have wrestled with the subject for the past four years and had endured some hard lessons and some great successes, giving me real confidence. It was based on experience and not theory. 
  • Lots (and lots) of practice. Both in my head and out loud. This allowed me to get my timing right, tweak content and most importantly, the talk felt natural. As soon as I started, my brain knew what was up next and how long to spend on area.
  • I went light on the slide content. My previous attempts at speaking had been focused on the slides themselves and reacting to the content on them rather than speaking. However I took a conscious decision to lighten the slides and talk from within.
  • I worked in small chunks, allowing for iterative improvements. Mainly because I built the content on the train on the way to work. Half an hour at a time for both content creation and to practice delivery. Walking away then re-engaging seems to compliment my style.

Maybe I could have improved by:
  • I went big on ideas, then cut down to a small presentation. Maybe I went too large, I built thirty to forty minutes worth of content. After four years with wrestling with the topic I had a lot of ideas! It led to some hard decisions over what to leave out, and a timing horror a couple of days before!
  • I could have done more practice but in front of other humans. My first opportunity to get feedback was on the night itself, when I had a multitude of opportunities to get some real human input before the big night.
  • A little less humour and more message. I intentionally went for a light tone, as I think a lightning talk should have a couple of laughs, but I left afterwards feeling that I may have overdone it. However I won't beat myself up too much for that one.
Plus I didn't wear a hat. Appeared to be a deal breaker....