Monday, September 5, 2022

Requirements Gathering ... and how to define a "thing"

Gathering requirements is one of the hardest and most important aspects of software development.


The world is full of ideas, and when one person tries to communicate an idea to another person, They’re stuck with having to pick a specific word to identify each thing that they’re talking about.


So when one person uses a word to describe a thing, if the person they’re speaking with is familiar with that word they will think of the same thing when they hear it. 


But if they’re not familiar with it, or have a different understanding, the result is that they are actually thinking about a different thing.


Same word, different thing.


This is a fundamental problem with language. Human language, spoken language, written language, programming languages, all languages.


A different approach


For the first time in history, though, we have a tool in the computer that allows us to take an entirely different approach.


In about the same amount of time that it would take to describe a thing, in 2022 we can simply create a digital instance of the thing being described. Just one.


The critical aspect of this one, digital example of the idea, is that the things being described exist (or don’t exist) within the digital model being built, regardless of what you call it.


Each person might actually call it something different, but within the model _it_ only exists once. And it’s relationships to the other things being discussed are also relationships that exist independently of what you call the various participants in that relationship.


In this way, answers to simple questions become possible, even trivial to answer – whereas, with a linguistic description of an idea there will always be ambiguity about whether two different words refer to the same thing or to two different things, making it difficult to even just count how many “things” are being discussed.  


Knowing how many things are involved is not typically an important piece of information. But… 


Being *able* to answer that question versus having absolutely no mechanism to even begin to answer such a question reflects a deep, deep flaw in literally any linguistic description of a complex idea.


Structure of the digital twin


The digital twin, or model, or single source of truth as we call it - is actually two separate things mixed into one.


In other words, in order to take a piece of language and extract from it a digital model of the ideas being discussed, there are two parts of that conversation.


In the first part of the conversation, we have to agree about what the structure of that model will be. Literally every single idea will have a slightly different structure.


In fact, the structure Of that model essentially act as a fingerprint for the idea.


Once we can agree on that model though, we can then begin to take the Content of the idea and enter it into that model.


But this is an iterative process, so anytime the contact doesn’t fit into the model, it prompts another discussion About and potentially changes to the structure of the model. The scheme of the idea.  


The last part of the process then, is to write a report against the single source of truth, which can reassemble the words back into a linguistic description of the idea.


What essential however, is that the linguistic description is not the source. It is a product that is produced from the source, which is a digital, multi dimensional representation of the idea itself. 


Thursday, September 1, 2022

Language is like a picture of a sculpture

 English might be an oil painting. German, a charcoal sketch. French, a watercolor. 


Each a slightly different representation of the same marble sculpture of a beautiful horse.


A Single Source of Truth, by contrast, is a scale replica of the statue itself.


Let’s examine the question of whether the statue is a horse, or whether it’s actually a mythical creature, the winged Pegasus.  


The first picture we look at, from the front might not show whether or not the statue has wings.


Another picture of the statue from the side might make it look like it has wings, and yet another picture from a slightly different perspective might make it clear that those wings actually belong to another animal behind the horse. 


Part of the problem with this model is that every time a new idea is introduced, more pictures get added to the pool of evidence. In other words, each opinion considered ends up being more and more subjective, as to which evidence is included, or not, when considering the question at hand.  


With a single source of truth, by contrast, the question of whether or not the horse has wings becomes a binary, easily verifiable fact. There is very, very little room for disagreement when we can all just look at the same horse.


In this case, the problem emerges because the statue is three-dimensional and the pictures are all two dimensional. Because of this, it requires many, many, many pictures, each only capturing part of the actual statue itself.  The problem is further amplified if we have to fall back to one-dimensional language to describe the statue.


If we can just create the statue itself then we don’t need many of them. We only need one. 


At the heart of the matter, ideas are multi-dimensional.  So trying to describe ideas with one dimensional language, two dimensional pictures, or even 3d sculptures is usually an exercise in futility.


But, with computers and literally just some simple tools, literally hailing from the 1960s and 70s, we can sketch up a digital twin of even complex, multi-dimensional ideas… effectively at the speed of speech.   


Not a description of the idea.  Not a picture of the sculpture.  But rather a scale replica of the thing itself - a digital twin of the abstract notions described; a model of the claims made, which unambiguously encodes the facts described.  


So, not a description of the idea, but a scale model, which digitally mirrors what was described originally. Like sheet music for the idea.


With this sculpture, this single source of truth in hand, the painter can paint the horse from any angle he chooses. The sketch artist can sketch him; the writer can describe him; and all of these different perspectives will tend to match each other because they’re all looking at the same scale model of the sculpture for motivation.


And if one of them adds wings to their horse, literally anyone should be able to just glance at the sculpture and say, definitely, that the painting does not accurately represent the horse. 


It should not be a debate. 


Without the sculpture in hand, by contrast, it’s always a debate, facilitated by adding more and more perspectives of the same thing. From some angles it will look like the horse has wings. From other angles, it won’t. And thus the debate rages on.


Let's change the conversation, by agreeing to shared context.  A shared model.  A shared set of facts.  


I.e. a Single Source of Truth