
Copyright © 2009 Corvus International Inc. All Rights ReservedArticles...
He who knows not and knows
not that he knows not, is a fool—shun him!
He who knows not and knows that he knows not, is unlearned—teach him!
He who knows and knows not that he knows, is asleep—awaken him!
He who knows and knows that he knows, is enlightened—follow him!
An Arab Proverb
quoted by Isabel Lady Burton (1831-1896) in "The Life of
Captain Sir Richard F. Burton"
Software Development = Knowledge Acquisition = Ignorance
Reduction
Software is not a product, it's a medium for storing knowledge (see The Case for a New Business Model).
Therefore, software development is not a product producing activity--it is a knowledge acquiring activity.
Knowledge is just the other side of the coin of ignorance, therefore software development is an ignorance-reduction activity.
There are five levels or "Orders of Ignorance". They are (starting from zero--computer people always count from zero):
0th Order Ignorance (0OI)—Lack of Ignorance
I have Zeroth Order Ignorance (0OI) when I
provably know something…
…and can demonstrate my lack of
ignorance in some tangible form, such as by building a system that satisfies
the user. The presence of the knowledge has to be
"provable" otherwise we might simply be self-deceived and not know it at
all. This is why we require developers to test (and proved they've tested)
their systems rather than simply taking their word for it.
1st Order Ignorance (1OI)—Lack of Knowledge
I have First Order Ignorance (1OI) when I don’t know
something…
…but I know I don't
know it. 1OI is actually a kind of knowledge (I do
know what I don't know).
2nd Order Ignorance (2OI)—Lack of Awareness
I have Second Order Ignorance (2OI) when I don’t know that I don’t
know something.
…not only am I
ignorant of something, I am unaware of what that
something might be. Sometimes called the "unknown, unknowns" or "unk, unk"
(See Don Rumsfeld quote below).
3rd Order Ignorance (3OI)—Lack of Process
I have Third Order Ignorance (3OI)
when I don’t know of a suitably efficient way to find out that I
don’t know that I don’t know something….
…so I
cannot resolve my 2OI. For
systems development, I have to add the qualifiers "suitably efficient" since
there is a default 3OI process: ship it!
If you ship a system and simply wait by the phone, the customer will be sure
to call you up and tell you all the things you didn't know you didn't know
about the system you just shipped.
Shipping the system is an effective process, but it is neither
suitable nor efficient.
4th Order Ignorance (4OI)—Meta Ignorance
I have Fourth Order Ignorance (4OI) when I don’t know about the Five Orders
of Ignorance…
…which, dear reader, you
no longer have.
These Five Orders of Ignorance play an
tremendously important role in systems development. For example: our
job is the reduction of 2OI.
As another example: all systems processes and methodologies are
actually 3OI processes whose job is to convert 2OI into
1OI (and more rarely 0OI).
2OI and 3OI explain most of our problems in systems development. Our management systems are set up to deal only with 0OI and 1OI (the application of what we already know), they don't properly deal with the activity of uncovering what we don't know and are rather inadequate for the modern world of systems development. This is mostly because of most organizations suffer form 4OI.
Support from an unlikely source:
"Reports that say that something hasn't happened are always interesting to
me,
because as we know, 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—the ones we don't know we don't know.”
Donald Rumsfeld, US Secretary of Defense.
Department of Defense News Briefing. Feb 12 2002
Thanks Don, but I beat you by a few years on this one. Also, shame about that Iraq War thing.