Last post we talked about common semantic problems. How can you find and prevent these insidious troublemakers?
In an ideal environment, with an executable specification, using ubiquitous language, most of these problems are solved before they occur.
When are things ideal? Usually never, so what do we do without any of the above in place.
First, seek understanding. You can’t be picky; to test you need understanding. Talk to people in the know, find out how they view the world. Test their assumptions with mule testing. Never underestimate the wisdom of a crowd around a whiteboard. In extreme cases you could even start reading.
Can we create a bit of certainty? Take it all in, sift through the information, does it sit right in your head? Are there any gaps?
Always test. Does what you know fit with the evidence? Apply what you know in new contexts, an address means different things depending on what side of the envelope it’s on.
Once you understand, share it, talk about it, make it part of your tests and code. Don’t stop now, you’re on a roll -you need to continuously build and re-enforce that shared understanding.
“Understanding is the knowing of misunderstanding” ― Zivarnna Smithies