One reason people find it hard to see the existence of level 3 is that we have natural tendency to try to understand something in terms of something we already know. Most of the stuff we already know is at level 2, so we easily conflate the two levels. In other words the logic we naturally tend to use is that level 3 uses endemes, endemes are like X, X exists at level 2, therefore level 3 does not exist.
My job is to find something already at level 3 that people already know about. Trouble is, level 3 has been severely underdeveloped. So what is there? Search for keywords?
The trouble with this example is that major search engines use level 4 or above, so we get the opposite problem. We conflating level 3 with level 4.
Maybe we can use a trick to try to combine two things at once in our minds, one at level 2, the other at level 4. and see if holding these two concepts at the same time can give us an insight to level 3. How about combining advanced keyword search (level 4), and most programming (level 2). Advanced keyword search uses relationships, those are at level 4. You can do keyword search on a column (level 2). What if you did programming that included some intelligence like advanced keyword search but left out the relationship part of it. Does that help at all?
OK, maybe search isn’t the best approach to making level 3 real for you.
Let’s try categorization and characterization. Categorization exists mostly at level 2.
Products might be categorized into product groups, Dates might be categorized into days of the week. Musical instruments might be categorized into brass, percussion, wind, electric etc. Categorization puts each item to be categorized into one category. Parrots are birds, ferrets are mammals etc. This is a level 2 approach and very useful but it is not what we are talking about.
Characterization is similar but it is part of level 3. When you characterize things you put them in more than one category. For example a musical instrument may be a string instrument and an electronic instrument at the same time. Not such a good example because with musical instruments you get into categories of categories. A better example is buildings.
- Some buildings are residential.
- Some buildings are commercial retail.
- Some buildings are manufacturing
Some building are two or more of these at the same time. In addition a building that is two or more of these may be mostly residential with a little commercial retail or mostly commercial retail with a little manufacturing. There is an order to the characteristics. This is information. This is at level 3. Yes you could use bits to mechanize this but level 3 endemes provide a much more natural approach.
Places that level 3 shows up often are in typing, coded indexes, resource balancing,
fuzzy categorization, Holland codes, temperament measurement etc.
It’s interesting when level 3 shows up in software development. I write a lot of code. Some of it is object (level2) oriented. Some of it is information (level3) oriented. I have enough experience to see which realm I am working in with any given piece of code. usually, programs have a mixture of both. I find many differences between the types of code. L3 code can have latent failures and needs sanity checkers and bug interpreters, L2 code should throw exceptions. L2 code either works or it doesn’t. L3 code has a tendency to gracefully degrade. L3 code is less scalable. L2 code is highly scalable. L2 code has a small middle tier. L3 code has a large middle tier. Data in L3 code can be represented almost directly tot he user. Data in L2 code needs to be organized to present to the user. L2 has few right ways of doing things (best practices) . L3 code can be built many right ways. L3 code is often open for change and closed for extension. L2 code is often closed for change and open to extension. L3 code processes meaning. L2 code accesses data.
The Three-Way Focus Approach
Another approach to try to avoid conflation is to get to know the following diagram:
This diagram shows that each level has three foci. This is not to say that the issues of a focus are not important outside their circle, they just aren’t the focus of development. So being precise in an A.I. program is important, it just isn’t the focus. Similarly coding is part of knowledge representation level and yet it isn’t the focus.
Level 3 can now be differentiated. The difference between level 3 and level 2 is that level 3 focuses on meaning, and level 2 focuses on precision. They both focus on coding and structure. The difference between level 3 and level 4 is that level three focuses on coding and level 4 focuses on intelligence. They both focus on meaning and structure. It is easy to conflate levels because the focus of each one is similar to the one above it in two ways and the one below it in two ways.
Is This Distinction Important?
I think the distinction is important. It is easier to write code and develop systems using approaches and technologies to which they are suited. As a common example you can do many things that object orientation does well in stored procedures but the system is harder to build, more expensive, and harder to change. Similarly, you can build your own data managing system in an object oriented language which handles flat files and looks up saves and accesses data from them. But it is usually much easier to do this with an RDB database. (You can also use an object oriented database that combines the two paradigms, but just for the sake of the example let’s leave that aside).
Similarly in my experience, working with information is easier and cheaper to do using information oriented techniques like endemes, fuzzy logic, data semantics, and knowledge representation than object orientation or RDB.This blog is a great deal about the details of this distinction and why and how to do information oriented software development.