Hi, my name is Done and I'm conflicted
If there is ever one word that highlights the difference between a tester and a developer's mindset it has to be the word done. Developers¹ tend think of done as a form of sign off. A story is done when the code is complete. For many developers, it's when the code is complete, tested and deployed. Done is a sign of completion, of moving onto something else.
Testers² look at Done as the beginning of a quest, an exploration. Done is to be prodded, probed, explored and dissected. Under what conditions can 'done' fail? What data tests the limits of Done? How about if two Done's are put together, how will they behave?
With these two different mindsets it's no surprise that at times there is conflict and disagreement.
Most testers (most people for that matter) shy away from conflict in order to maintain team harmony. Instead, they try to gain agreement upfront on Done. The goal is clarity and scope definition. Make done clear upfront (before coding begins) and it lessens the conflict later.
In many companies, conflict is seen as a 'bad thing'. Being in conflict suggests that you're not a team player. But conflict is a not always bad. According to the 5 dysfunctions of a team by Patrick Lencioni conflict is healthy indicator of trust and ought to be encouraged.
And testers must not forget that our primary role in a team is to raise uncertainty about Done. This has to come ahead of wanting to be everyone's friend and being accepted. The reality is, if we are doing our job we will be testing the limits of preconceptions of Done.
Because as appealing as it is to think of Done in terms of black and white, zero and one, the reality is a lot different. Done is subtle and muted with hidden dimensions and unknown crevices. Exploring and shining a light³ on these dark corners generates new information. That information helps mould and develop our understanding of Done. The more we test, the better this becomes. Whether this new information turns out to be accepted or rejected is to some extent irrelevant, both contribute to fleshing out our understanding.
So sure, have your discussions on 'Done' before code is written, but let's realise that it's only the beginning not something final written in concrete. Allow testing and testers to expands that understanding.
In fact, I would go as far to say that true harmony is having a mutual goal of building our understanding of what Done means. Who knows? Maybe through that mutual goal can real trust and respect be built within a team.
¹ ² generalisations
³ kudos James Bach