Wednesday, July 21, 2021

Why Knowledge Transfer (KT) is not as easy as Fund transfer (FT)?

Those in IT industry - there is a familiar phrase called "Knowledge Transfer" or popularly known as KT. Having genesis in IT services industry this phrase was coined to indicate a training process between someone who is considered as SME (subject matter expert) and someone who is receiver of the training.

Typically happens between client side SME and an engineer/analyst from vendor side. In the early days of outsourcing between US and India - you could hear this term in all client and management meetings. "How is KT going on", "when are we completing KT and start doing work",  "Client SME does not have enough time to complete KT".

In its new avatar - this KT make its way into cross training within the team and breaking "key person dependency". 

I always wondered how knowledge is transferred between two individuals or one individual and a group of individuals? What knowledge we are talking about? What is knowledge after all? What it means to know anything? How do we measure level of knowledge that one person has at any given point of time.

These questions took me to the idea of Tacit knowledge and explicit knowledge.

From Harry Collin's Tacit knowledge book 

"Much of what humans know we cannot say. And much of what we do we cannot describe. For example, how do we know how to ride a bike when we can’t explain how we do it? Abilities like this were called “tacit knowledge” by physical chemist and philosopher Michael Polanyi, but here Harry Collins analyzes the term, and the behavior, in much greater detail, often departing from Polanyi’s treatment.

In Tacit and Explicit Knowledge, Collins develops a common conceptual language to bridge the concept’s disparate domains by explaining explicit knowledge and classifying tacit knowledge. Collins then teases apart the three very different meanings, which, until now, all fell under the umbrella of Polanyi’s term: relational tacit knowledge (things we could describe in principle if someone put effort into describing them),  somatic tacit knowledge (things our bodies can do but we cannot describe how, like balancing on a bike), and collective tacit knowledge (knowledge we draw that is the property of society, such as the rules for language). Thus, bicycle riding consists of some somatic tacit knowledge and some collective tacit knowledge, such as the knowledge that allows us to navigate in traffic. The intermixing of the three kinds of tacit knowledge has led to confusion in the past; Collins’s book will at last unravel the complexities of the idea.

Tacit knowledge drives everything from language, science, education, and management to sport, bicycle riding, art, and our interaction with technology.  In Collins’s able hands, it also functions at last as a framework for understanding human behavior in a range of disciplines."

This post from Michael Bolton takes the ideas around "tacit knowledge" and "explicit knowledge" using very entertaining video where kids give written instructions to make peanut butter sandwich  to their dad. See what happens.

Time to learn more about this....


Revisiting Jerry's famous Mary had a little lamb heuristic

 Let me propose a hypothesis "Anything written/expressed in natural language is inherently ambiguous".  As one of hallmarks of civilization and evolution - language evolved as a tool for communication. Language connected people, got embedded in culture, grown into world of literature and finally technologists (being human) started using natural languages to represent and communicate "technological content".  This is where the hypothesis I mentioned in the beginning of this post comes into being. 

For technological or any formal purposes such as finance, legal transactions -  absolute clarity on intent and meaning of constructs of the language - words and sentences is a mandatory requirement. As we can see sentences in natural language can be interpreted in many different ways. Each reader/consumer of such language constructs makes his/her own meaning based on context that is assumed. Also there are differences in spoken and written versions of same text. So we have a problem in use of natural language in formal cases like software development and other areas. In addition to fundamental ambiguity as part and parcel of natural language - transmission of content from person to person add's its own elements of complicating meanings.

Jerry Weinberg, father of testers - recognized and wrote about this long ago. In a book "Exploring Requirements - Quality before design" with Donald Gause - he introduces a tool/technique or heuristic with a catchy name "Mary had a little lamb" - to find out how ambiguous simple line from popular nursery rhyme can become. "Nursery rhymes are infamous examples of ambiguity because of some of them have been transmitted from child to child over hundreds of years, and the original meanings of the rhyme might have been lost of transformed" writes Jerry when introducing the technique.

"Is it possible that a line from Rhyme "Mary had a little lamb" have hidden meanings ?" asks Jerry. In order to bring out such hidden meanings - he proposes following trick.

"If we emphasis each word in a line, one by one and then in combinations we can easily identify 6 or with some additional effort up to 30 meanings of just one line of the rhyme"

Illustration:

Mary had a little lamb

(Its Mary's Lamb - Not Sophie or John)

Mary had a little lamb

(She no longer holds the lamb now)

Mary had a little lamb

(she had only one lamb not many)

Mary had a little lamb

(Its really surprisingly small)

Mary hand a little lamb

(she did not have a dog or a rabbit - it was a lamb)

With all emphasis

Mary had a little lamb

(As contrasted with Pallas who still has four turtles)


So you have one way to subject a sentence to a sharp scrutiny for ambiguities.  Jerry in same book provide yet another corollary to MHALL (Marry had a little Lamb) technique.

This is called MCTT  - Mary Conned the Trader. In this technique - we substitute synonyms for each word in the sentence. Once we have listed down probable synonyms for each word - we can create new sentences as probable interpretation of original sentence taken in another context. By changing context's we would try to identify hidden meanings and possible interpretations.

How does this work? First - take the help of dictionary and elaborate meanings and synonyms of words and list them down.

Let us take words "had" and "lamb"

Had - Past Tense of Have

Have - to hold possession, to acquire ownership, accept, to marked or characterized by, to build a position of disadvantage, beget, bear (have child), bribe, eat

Lamb - young sheep one year old or without permanent teeth, young of various other animals (antelope), person as gentle or as weak as lamb, dear or pet, a person easily cheated, flesh of lamb as food.

With these different meanings - let us get some more meanings of MHALL

- Mary owned a young antelope

-  Mary is (or was) mother of particular small, gentle person

- Mary bribed a small person trading securities who was easily cheated

- Mary ate a little of flesh of a lamb

- Mary held a little sheep under one year of age or without permanent teeth in a position of disadvantage or certain defeat

- Mary acquired a little sheep under one year of age or without permanent teeth.


Well - what if Mary is not a human  but another animal or tree or a group of people.

Mary (Sheep) had given birth to a little lamb last month.

Jerry concludes the section in the book with following comments -

"The commonly held view that the poem is about an innocent young lady with a loyal pet is naive in the extreme - not as naive, though as sophisticated adults who pick some line out of requirements document and without giving a second thought, proceed to develop a product based on single, wrong interpretation."

For testers - its important to look at requirements from multiple angles and perspectives. Application of these two techniques - MHALL and MCTT as heuristic (thumb rule) helps them to see ambiguities in natural language constructs.

Some additional resources about natural language and ambiguity

http://www.gray-area.org/Research/Ambig/

https://cs.uwaterloo.ca/~dberry/handbook/ambiguityHandbook.pdf

Before I end this post - a question. Why communication in natural language had to be fundamentally ambiguous?

When are you trying to use these in your projects? Do let me know.




Friday, May 21, 2021

What is Test Design and Test modeling

 Test modelling - Activity of representing system/feature under test as a model. 

A sample hierarchy

System

        Entities/Objects/Users (Roles)

            Dependencies between objects

                Relationships - IS A and HAS A (Type and containment)

                    One to one, One to Many

                        Properties (variables and constants)

                                Values (domain) of properties

                                    Default values, boundaries of values

                                        Combinations of Values to create test scenarios


Object - Action - State Change.

List actions on each objects.

Create a map of what will happen when an action on object happens

Simultaneous actions

Dead locks

Hangs

how do we use  BB design techniques

EQ partitioning

State machine

Decision Tree

Combinatorics


Take  a par of variables and create a Grid.

GUI Testing check lists (applicable to new GUI)


Static vs Dynamic Models

Model - when nothing is happening. No user interaction

Dynamic - when users are interacting

Time element


It might help to user Object Oriented Design to represent above idea.

There are objects - have properties and functions.

Nouns and Verbs


System will have objects/entities. Objects have properties, properties can be constant or variable.

Take each variable - explore the domain of the variable. See what kind of values it can take and 

String these variable values into test scenarios.


This act of modeling - goes through iterations. It's like a photo film negative development. With each iteration  - various features of system start showing up.


Idea of Test coverage -

Imagine a 2 D shape - area of features in two dimensions.

Covering area means exercising the walking through the area.

how about Volume ? 3rd dimension - features and values

Wednesday, May 19, 2021

How to improve Questioning skills

 Following up on a post in The test tribe FB group - here are my toughs on improving questioning skills

First - few ground rules on questioning

  • Questioning is a skill - improvable on deliberate practice
  • Questioning does not mean being disrespectful to other party
  • At times questioning might be taken as challenging the authority - deal with it appropriately.
  • Empty your ego and false sense of "I know this stuff" - instead approach "what else I don't' know here" What else is hidden from me now.
  • Frame questions and follow-ups in a way that it does not turn off or irritate other party
  • One good way to start question is to describe or re-phrase the understanding in words of other person wherever possible and seek view on if your understanding is correct
  • No question is silly (from the view point of the asker...:) Only unasked question is silly
  • while answer is being given - listen carefully - where applicable watch body language of the responded. Do not rush or pounce on  immediately.
  • Listen with an intention to understand not with an intention to answer in return
  • If you question basic ideas - it will not make you less in any way or a fool
  • Display courage and humility

Tips/Practice ideas
  • Ask one question at a time (Courtesy : Jerry Weinberg narrated by Ajay Balamurugadsa) 
  • Approach everything with "awe" and a sense of wonder.
  • Approach everything with mind of "newness or not seen before"
  • Develop good vocabulary and skill to say one thing in many different ways
  • Be good with creating examples and analogies
  • Dramatize your answers and questions
  • Do a role play
  • Create diagrams 
  • Ask "What does *this* mean? 
  • Seek meanings , interpretations and context of words
  • Learn about word etymologies
  • Develop understanding through responses received
  • Do lots of imaginations
  • Show child like curiosity
  • Split words from sentences - ask "what does this mean" to every word
  • ask "what id"
  • Ask what are constrains or limitations here - what if these constrains are not there - for example - what if we can fly defying the gravity or what it we can walk on water
  • Question universally known and understood words and ideas
  • Question authority
  • Do not settle for right answer - seek more broader set of responses
  • Be respectful
Human relationship aspects of Questioning
  • You always run into risk being perceived as arrogant, egoistic, "know all" OR completely dumb
  • You are mostly likely to put people out of their comfort zone and make them feel nervous
  • People may not speak to you nicely or avoid talking to you
  • Understand emotional aspects

Types of Questions:
  • Open Ended -  Non conclusive answers
  • Specific - 
  • Binary - Yes/No
  • Questions to check knowledge
  • Questions to understand