The Five Orders of Ignorance
The Five Orders of Ignorance
The Five Orders of Ignorance
Phillip G. Armour
I
n my first column (Aug. 2000, software because it doesn’t contain So, the hard part of building
p. 19), I argued that software is much knowledge. Software is eas- systems is not building them, it’s
not a product, but rather a ier to produce using an application knowing what to build—it’s in
medium for the storage of knowl- generator, because much of the acquiring the necessary knowledge.
edge. In fact, it is the fifth such knowledge is already stored in the This leads us to another observa-
medium that has existed since the application generator. Software is tion: if software is not a product
beginning of time. The other easy to produce if I’ve already pro- but a medium for storing knowl-
knowledge storage media being, in duced this type of system before, edge, then software development is
historical order: DNA, brains, because I have already obtained the not a product-producing activity, it
hardware, and books. The reason necessary knowledge. is a knowledge-acquiring activity.
software has become the
storage medium of Hacking
choice is that knowledge It is quite easy to show that
in software has been software development is a
made active. It has knowledge-acquisition activ-
escaped the confine- ity using a slightly exagger-
ment and volatility of ated example. Imagine a
knowledge in brains; it hacking project. With hack-
avoids the passivity of ing, there is no real attempt
knowledge in books; it to acquire the knowledge
has the flexibility and first, the project just hacks
speed of change missing code. As the code is written
from knowledge in and executed (testing may be
DNA or hardware. too strong a word), there
If software is not a comes a point where validity
product, then what is of the knowledge in the code
the product of our is checked somehow. This
efforts to produce soft- accomplishes two things: it
ware? It is the knowl- identifies what in the code is
edge contained in the “correct” (the knowledge) and
software. It’s rather easy what in the code is “incor-
to produce software. It’s rect” (what I call “unknowl-
much more difficult to edge”). This unknowledge is
produce software that often—somewhat incor-
works, because we have rectly—considered to be
PAUL ZWOLAK
helpful in understanding what is 3rd Order Ignorance (3OI)— variables is known, but not their
needed to reduce our ignorance Lack of Process. I have 3OI when values. When I have 1OI, I have
and build a system that works. I don’t know a suitably efficient the question. Usually, having a
They also help explain some of the way to find out I don’t know that I good question makes it fairly easy
artifacts of the software develop- don’t know something. This is lack to find the answer.
ment environment, and some of of process, and it presents me with • 2OI: This is the real problem.
our behaviors working in this envi- a major problem: If I have 3OI, I Not only do I not have the
ronment. don’t know of a way to find out answer I need, I don’t even have
Since we are computer folk, we there are things I don’t know that I the question. This is where we
start counting from zero, rather don’t know. Therefore, I can’t start many projects. When we
than one. And so we’ll apply this change those things I don’t know begin projects, we know, from
to the Orders of Ignorance: that I don’t know into either things experience there are many things
0th Order Ignorance (0OI)— that I know, or at least things I we have to learn. We just don’t
Lack of Ignorance. I have 0OI know that I don’t know, as a step know what they are. 2OI
when I know something and can toward converting the things I explains, for instance, most varia-
demonstrate my lack of ignorance know that I don’t know into things tion in project estimates and the
in some tangible form, such as by I know. For system development, concept of “contingency” (to
building a system that satisfies the the “suitably efficient” proviso allow for things we haven’t
user. 0OI is knowledge. As an must be added, since there is thought of). 2OI also explains the
example, since it has been a hobby always a default 3OI process avail- famous “90% complete program
of mine for many years, I have able: try and build the system. syndrome,” where a programmer
0OI about the activity of sailing, Whereupon the customer can be asserts with conviction that he or
which, given a lake and a boat, is relied on to inform me of all the she is 90% complete, sometimes
easily verified. things I did not know. for months on end. The program-
1st Order Ignorance (1OI)— 4th Order Ignorance (4OI)— mer is not “lying,” but certainly is
Lack of Knowledge. I have 1OI Meta Ignorance. I have 4OI when not correct. Basically the pro-
when I don’t know something and I don’t know about the Five grammer doesn’t know how com-
can readily identify that fact. 1OI Orders of Ignorance. I no longer plete he or she is. Why? Because
is basic ignorance. Example: I do have this kind of ignorance, and of 2OI, the programmer doesn’t
not know how to speak the Russ- now, neither, dear reader, do you. know what the programmer does-
ian language—a deficiency I could n’t know. 2OI also accounts for
readily remedy by taking lessons, The Five Orders of rework cycles, late-phase
reading books, listening to the Ignorance in System “gotchas,” and what project man-
appropriate audiotapes, or moving Development ager and author Fred Brooks calls
to Russia for an extended period Each of the Five Orders of Igno- “second system effect.”
of time. rance plays a significant role in • 3OI: Coupled with 2OI, 3OI
2nd Order Ignorance (2OI)— building systems: presents a real danger (I don’t have
Lack of Awareness. I have 2OI a way to resolve my lack of knowl-
when I don’t know that I don’t • 0OI: Since 0OI is knowledge, edge during the available time I
know something. That is to say, this is the correctly functioning have). Personally, I think all soft-
not only am I ignorant of some- element of the system that I ware development methodologies
thing (for instance I have 1OI), I understood and successfully incor- are actually 3OI processes, whose
am unaware of this fact. I don’t porated into the system. When I main job is to show the areas of
know enough to know that I don’t have 0OI, I have the answer to the product or process, or where I
know enough. Example: I cannot the problem. lack knowledge. There is an
give a good example of 2OI (of • 1OI: These are the known vari- important thing to note—the
course). ables, where the presence of the answer I am looking for cannot be
in the methodology. With few 3OI to 2OI generates either 1OI business. A functioning system is
exceptions, methodology simply or more rarely 0OI—the process the by-product of the activity of
gives me a syntax in which to either gives us the answer (0OI) or finding things out. The working
frame the question and a discipline more commonly, it gives us the system is the proof that I have the
for identifying those areas where I question (1OI). This is one of the knowledge. Looked at pragmati-
might have 2OI. But it can’t know major purposes of process and is cally, the goal is to resolve our
what I’m trying to do. The answer the major role of methodologies orders of ignorance to 0OI. We
must come from elsewhere. and modeling. spend most of our energies acquir-
• 4OI: This is probably not too The critical point here is that ing knowledge. Since finding the
much of an issue, though I’ve the application of 3OI processes answer to 1OI is straightforward,
found thinking of process this way (methodologies and process) does we must be spending most of our
helps. We’ve found ways to com- not give the answer; it gives me production energy on 2OI, and
pensate for our orders of igno- the question. As a business model, most of our process energy on
rance, like the use of contingency we have been looking to these 3OI. We can use the Orders of
for 2OI. I added 4OI to this tools for the wrong thing. We Ignorance to categorize what we
model mostly because knowledge expect them to provide us with know, and what we don’t know, to
is inherently recursive. answers, and that’s not what they estimate the likelihood of what we
do. It is very frustrating to expect don’t know we don’t know, and to
The critical levels seem to be 2OI an answer and instead get a ques- assign to process and methodology
and 3OI. I view most of our work tion; to use a methodology to their true place in the order of
to be the reduction of 2OI, and reduce the amount of work, and things. c
the development and use of all apparently increase it; or to consci-
software and systems methodolo- entiously apply a process only to Phil Armour ([email protected]) is a
vice president and senior consultant at Corvus
gies as being 3OI processes. The have it tell us just how little we International Inc, Deer Park, IL.
job of a 3OI process is to illumi- actually know. But that is the real-
nate our 2OI. The application of ity of the software development © 2000 ACM 0002-0782/00/1000 $5.00