Do you know who Vizzini is? He’s a character from the Princess Bride story (I loved the book and if you want to read it, I would highly recommend the hard-to-find unabridged version). Most people know Vizzini from the movie. He’s this guy:
For those who haven’t seen it… do! I’ll wait. This blog post will still be here when you get back.
As one of the villains in the Princess Bride, he faces the protagonist Westley and they have a battle of wits to the death. Vizzini is asked to decide which of two cups contains poison. Through some pretty heavy-duty reasoning he makes his choice and guesses wrong. His fatal flaw was that he was over-confident in his knowledge. He assumed that he knew a fact and was 100% sure that he was correct. He risked his life based on that assumption and failed. He was kidding himself.
I Kid Myself
I do that too. And way more often than I’m comfortable with. I forget who said it first, but you may have heard “it’s less dangerous to not know something than to know something that’s wrong for sure.”
Here’s how I know that I’m kidding myself (And I’ve played through this scenario many times)
Stage 1: I see behaviour from SQL Server that I don’t expect:
For example, some time ago the performance of a stored procedure took a nosedive when we switched some table columns from VARCHAR to NVARCHAR.
“I’ve seen this behaviour before” I thought, “The parameters are mismatched with the column type and an implicit conversion is being done. We just have to match up the types and problem will be solved. I’m sure of it.”
But that wasn’t the case. The developer came back to me and showed me I was wrong. The parameters for the stored procedures had already been changed to match the table columns. So what was going on?
Stage 2: I get uncomfortable about it:
I’m supposed to know this stuff. But now the behaviour of SQL Server is clearly demonstrating that I don’t and it’s not up for discussion! Sometimes it feels as if I woke up and the sky was green. Why would Unicode string searches behave that many times worse than Ascii string searches?
That’s when I know I’ve been kidding myself. And I feel uncomfortable about it because if I’m wrong about this stuff, what else am I wrong about?
Stage 3: So I go to learn more things:
This is the fun part. Investigation time. I use google, #sqlhelp, and everything I can to help me get to the bottom of the mystery. In the case of the Unicode string mystery, I opened a StackOverflow item and got some quick quality answers. Also after the mystery got solved, it made a great topic for a blog post.
Stage 4: I get more comfortable about it:
So beforehand, I thought I knew what I knew. But now I feel sure about it.
It’s hard to describe. Do you know how when you’re asleep, you still think you’re awake? But when you’re actually awake there’s somehow this extra level of sureness? It’s like that.
A Slightly Different Point of View
Like I said, I’ve been through this process many many times. My typical learning journey goes from knowing I don’t know, through the discomfort and back to optimism again.
And I don’t get too uncomfortable any more about not knowing something. It’s because when I recognize myself in stage 2, I’m anticipating stage 3 already: It’s learning time!
So how about you reader? Have you been through this yourself? I’d love to hear about some of your own experiences. What is the craziest thing you believed that turned out to be wrong?