I was having dinner with several of my friends when I laid my phone face down at the table. One side of the table was pressed against the wall much so that there isn’t enough space to rest my backpack against it.
An item caught my eye as I was settling down my phone: a small glass-like dispenser with a perforated screw cap. Inside it was a white crystalline-like substance. I picked it up, put some in my palm and tasted it.
One of my friends asked why I did it. It’s a polite way of saying, “How can you be so stupid and not think it’s salt?”
How Assumptions Are Made
We all make assumptions about anything and everything – the weather tomorrow, whether or not a part fits an assembly, the root cause of a problem, etc. More often than not, the assumptions we make are based on our experiences.
As a response to the question, I proceeded to tell a story about the time when my mom hired painters to work on our house. As they were taking a break, one of the guys decided to make himself coffee. Busy chatting with the rest of the folks, he instinctively grabbed a “small glass-like dispenser with a perforated screw cap“, took off the cap, poured the “white crystalline-like substance” in his cup, stirred his coffee with a teaspoon and took a sip. I’m glad I was not anywhere near him or I would have been a casualty of a salted, hot coffee firing off his mouth. This despite the fact that the sugar dispenser was sitting beside the salt dispenser, albeit they look exactly the same but with no labels to distinguish one from the other. I haven’t forgotten that experience. And it happened more than 25 years ago.
The goal of making assumptions is to simplify a problem with the intent of solving it faster. It also proves that we don’t know much about the thing at hand but would like to move forward with the limited information that we have. In the case of the “small glass-like dispenser with a perforated screw cap” sitting beside my phone, anyone could have easily assumed it to be salt. But because my friend ordered coffee first, it could have been sugar. Hence, M.C.T.V.
Dealing with Assumptions
Whether you are troubleshooting a database performance issue, thinking of changing careers, pursuing a goal or anything you can think of, we go thru these steps when dealing with assumptions.
- Make. We start by making an assumption. While we use several parameters to make assumptions, they are all still based on our experiences. A slow query that is doing a table scan is probably missing a covering index. Water heated at 100 Celcius will boil. Or a “small glass-like dispenser with a perforated screw cap” contains salt.
- Challenge. The lazy mind will stop at the assumption. Because it’s easy. Besides, everyone does it. This is how some traditions end up becoming stupid rules. I bet you’ve heard some variation of the Thanksgiving turkey story. The curious mind, however, will challenge the assumption. Is the query really doing a table scan because of a missing index or is it because the table contains a LOB column? Is temperature really only what causes water to boil or does atmospheric pressure have anything to do with it? Is it really salt or could it be sugar?
- Test. This is when the curious mind goes thru the scientific process of dealing with assumptions. You need to gather as much information about the assumption before running tests. Collect query execution plans. Read about Phase diagrams. Or maybe just smell the “white crystalline-like substance“. The information you gather will form the framework for how you will perform your tests. Create test cases. Depending on the complexity of the assumption, your test cases could be as simple as a taste test or as complex as running a variation of a query to collect performance metrics.
- Validate. The results of your tests become proof. Your assumptions are no longer guesses but validated information. You now have ammunition to support your claim. A validation of an assumption is the first step to providing solution to a problem. Maybe create a nonclustered index based on a computed column that grabs some information from the LOB column. Maybe lower the temperature when you’re boiling water in your cottage up the mountains. Or just avoid putting salt on your coffee.
There’s also the psychological benefit of validating an assumption: CONFIDENCE. Who doesn’t like to feel that they are right? Besides, validation is an addictive drug. We all fall prey to it. I know I do.
I knew at the back of my mind that it was a salt dispenser that I was holding. But I knew I could also be wrong. I might as well test my assumptions. I did the same thing with the other dispenser that contains a gray, powder-like substance. It could have been nutmeg. Can you blame me? They served the coffee first.
P.S. I already have a framework on what content and lessons I can include in my upcoming online course on SQL Server Availability Groups. But those are mostly based on assumptions. And I could be wrong. This is my way of challenging my assumptions. And you can help me validate them.