Two weeks ago, I wrote a rather ambiguous post. It hinted at how data can be easy when a dedicated group of people divides and conquers the problem together. It also suggested that it’s not all that simple.
This post puts ambiguity forward again but in a different way.
The toughest problem in software is understanding what the customer needs. At least two things are necessary to get it right. The first is a proper understanding of what the customer says. The second is translating what the customers think they need into what really makes their lives easier.
Both are infested with ambiguity.
Say a customer wants “sales by month.” What could be simpler and clearer? Where is the ambiguity in that? Well, it depends on who said it and in what context.
Salespeople need the value of signed contracts because that’s what their commission is based on. Operations people need the invoiced amount because it says how much work was delivered. Finance people need the invoiced amount, including taxes, because it says how much money should be collected. Or, the salespeople may need the invoiced amount, including taxes because they must report it to the finance people.
Not that bad so far. But wait, it can get much more complicated very quickly. Do the sales include returns? Voids? How about discounts? All discounts or only a certain kind? The whole discounts, or just a portion? Always the same portion? Taxes? (Please, don’t get me started on taxes.) At least the “month” portion is easy, right? Or is it? Is this a regular calendar or a manufacturing calendar? Fiscal numbering?
Are we taking the time zone of the contract into effect? Which timezone? Is it always the same timezone, or does it depend on the wording? Signing date, submission date, activation date, posting date or approval date?
What makes “doing data” seem deceptively simple is the human ability to deal with ambiguity in language very effectively. Like-minded people use very few words (often ambiguous) to communicate clearly and efficiently. They share a very non-trivial common context in which the words can be understood.
However, even for like-minded people, the common understanding breaks down when it comes down to data and the level of precision required. People would often assume that they understand what the other person is saying. But more often than not, “revenue by month” means different things even to long-time co-workers.
At Infostrux, our job is to remove the ambiguity by breaking the language down into a myriad of small, simple details so that even a machine can get it.
It is not easy.