“There are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – there are things we do not know we don’t know.” — Donald Rumsfeld
In a press briefing a little over 10 years go, Rumsfeld popularized the concept of known knowns, known unknowns, and unknown unknowns. I hope my figure below communicates the problem with “unknown unknowns.”
In general you want the small green slice of “known knowns” to be as big as possible; this represents your knowledge of the universe. For example,
I know that I know how to program in the Ruby programming language.
You also want the blue slice of “known unknowns” to be as big as possible. Once you are aware of ignorance about a particular thing, you can then decide to educate yourself (if the benefit of learning outweighs the cost of learning).
I didn’t always know how to program in Ruby, but I knew Ruby existed and had an idea of its value proposition.
Moving from “known unknowns” to “known knowns” is therefore relatively straightforward. However, that big red slice of “unknown unknowns” is really scary. You have no idea what’s in there and you have no idea how big it is. You can’t really decide on your own to move from “unknown unknown” into a “known unknown,” because, well — you don’t even know what knowledge is in that category.
The best you can do with “unknown unknowns” is be aware that the category exists and maintain an open mind. This way when information presents itself to you, you can cognizantly realize that it was an “unknown unknown” and then you’ll either be in the “known knowns” or “known unknowns” category.
I didn’t always know that Ruby existed. One day someone told me about it, and I became aware of its value proposition.
These transitions of knowledge are presented in the figure below.
I’ve already explained the blue and green arrows, but what the hell is that red arrow? The point of this blog post to describe the arrow from “known knowns” to “unknown unknowns;” the transition from knowledge to ignorance.
Becoming ignorant again
It’s often a long road becoming an expert on a topic.
I have been programming for 17 years. I’ve programmed in Ruby for severals years and I know Ruby pretty well now.
Becoming an expert was hard. I remember what it was like to be a beginner — the perplexing error messages and the mystery of source code.
But today some information came my way that made me realize I don’t actually know what it’s like to be a beginner. I thought I knew what it was like; in actuality though, I didn’t know that I didn’t know what it was like to be a beginner.
I was reading an article in Slate about a journalist’s efforts to teach herself programming in Ruby. This is the line that shocked me out of the “unknown unknown” category.
“I started off by saving [my first Ruby program] as a Word document” — Annie Lowrey
I never would have imagined someone would try that. From 17 years of experience, I know that you need to save your programs in text file format, but I had no idea that a beginner wouldn’t know that.
Even worse than being ignorant, I had been deceiving myself into thinking that I remembered what it was like to be a beginner.
I do remember bits and pieces of learning to program, which fooled me into thinking I remembered what it was like to be a beginner. For instance I remember that when I first started programming, the error messages overwhelmed me. Perhaps the only reason these memories stand out is because sometimes they still overwhelm me. Maybe I forgot about the text-file issue because it was one particular issue I learned 17 years ago; and once I learned it, I moved on and never thought about it again.
I can’t relate to what its like to be a beginner programmer. But at least now, I know that I don’t know.





