Implementing Knowledge Management


Next: , Previous: (dir), Up: (dir)

Knowledge

COMPLETE TABLE OF CONTENTS

Summary of contents


Next: , Previous: Top, Up: Top

What is knowledge management?


Everyone agrees that Knowledge Management is important, but few really appreciate what it means to manage knowledge, or how to begin. Ironically perhaps, even learning institutions (so-called knowledge based industries) like schools and universities often do not do a good job of this. Having a wealth of knowledge is not the same as knowing how to foster and protect it. Most organizations take their knowledge for granted.

In the worst case, poorly run organizations end up as collections of individuals, each of whom possesses knowledge and experience, but none of whom knows anything about the others' roles. This scenario presents a high risk for the continuity of the organization, since taking out even a single player could cripple a key work process.

The end result is that many organizations are caught in a poverty trap of knowledge: they spend their time reacting to emergencies cultivated by a lack of confidence and certainty, and they are too busy patching over holes that they never have time to learn enough to escape the pattern.


Next: , Previous: What is knowledge management?, Up: Top

Risk and uncertainty


Knowledge exists to reduce our uncertainty about the world. We don't generally learn in order to get smart, or to be experts; rather we learn by necessity and feel smart when there are no remaining surprises. Experts are people who can answer questions they already know the answer to; they are supposedly extra-ordinary. Innovators are people who can solve new problems – they are even rarer.

The main aim of knowledge management is not to make everyone an expert, but to improve the predictability of workflow processes so that we can respond to unpredictable changes in the environment with greater confidence, without losing the feeling of control over the situations we find ourselves in. To do that, we have to make the connections between the appropriate parts to that we can always obtain the answers.


Next: , Previous: Risk and uncertainty, Up: Top

How should you begin?


The road to maturity can be seen as stepping through one or more of the following progressions:


DIKW

Each of these sequences represents an increasing level of commitment. You need to have data to interpret them as information. You need to have goals or objectives in order to realize them and see results. You need to have intentions to make promises, and so on. Ask yourself: does everyone in your team know your business goals, and how to translate their efforts into progess?


Next: , Previous: How should you begin?, Up: Top

The Copernicus Knowledge Map in CFEngine

Maps guide us to where we need to get to from where we are (even when we don't fully understand where we are). A map places us in the context or a larger picture and helps us to find our way. The Copernicus Knowledge Map is a part of the CFEngine Mission Portal, which in turn is provided with CFEngine Nova and Constellation Editions. Significant instrumentation of the software, user process and policy analysis are provided in these editions in order to make Knowledge mining as transparent to the user as possible.

Our first task in Knowledge Management is to create a map of the knowledge landscape in which we work.

CFEngine contains a tool cf-know for creating a map called a Topic Map, that forms to basis of our approach to documentation. Further, CFEngine Enterprise Editions, starting with Nova help fill in the landscape of this map automatically.

To build a map, you will need data (hence the beginning of the DIKW chain). To use a map, you need an objective or an intention, hence the others.

Ask yourself: what are the places in this map, and what are the paths between them? This is a question every organization needs to ask itself.



Next: , Previous: The Copernicus Knowledge map, Up: Top

Pitfalls to avoid


CFEngine does a lot of work for you, but you need to do something to help yourself too. Your organization should create documents and references to capture its internal knowledge. If you are doing this well, it should not be a major task.

Knowledge gets out of control when you don't standardize ideas, concepts and procedures. By standardizing topics and concepts, you prevent an explosion of redundancy – only then can you see the signal in the noise. Standardization minimizes the number of things you have to deal with. Be careful though, if you go too far, standardization can become a straightjacket, preventing you from clear and free expression. Too much standardization and you will be stuck in a rut.

Dedicate yourself to a culture of simplicity, but not of over-simplification (which often backfires). Always work to avoid special cases and exceptions, unless they can be rigorously justified.

This is a question of economics: is it worth the cost of maintaining a special case? CFEngine's is designed to make it a lot easier and cheaper to manage exceptions, so you needn't worry too much. Just don't go mad.

Simplification is the hardest thing you will ever do. Anyone can make something more complicated, but it takes real work to simplify something1. Einstein's famous quote captures this: You should always make everything as simple as possible, but no simpler.


Next: , Previous: Pitfalls to avoid, Up: Top

Types of information


There are many kinds of information that contribute to a strategy for managing knowledge. The ability to learn from past mistakes demands that we look both forwards and backwards, while realizing that knowledge grows older and less useful the older it gets. For instance, what is known about the past? What is current? How can we track these things? Information comes in logically different categories as well as different types. Data have different sources, and are about different epochs. We need to unify and integrate these in Knowledge Management.
Conceptual information (Always)
Conceptual information is knowledge of a general nature that defines basic terms and concepts that describe the operational area of the organization. e.g. background theory, compliance requirements, frameworks, license expiry documents. Contracts and agreements.

This information comes from the wider culture of the enterprise. It is often treated poorly as our modern culture has an unreasonable suspicion of anything that seems `academic'.

System observations (Past)
Recording what has actually happened in the organization. This includes the IT system, but also the business services and workflows, e.g. changes, transactions, logs, incidents, events, performance values (Key Performance Indicators), audits, security scans, etc. This includes what it traditionally called system monitoring.

This comes from probing and monitoring human-computer processes.

Enterprise process documentation (Now)
These documents are about business internals, recipes, manuals and how-tos. They allow individuals to work autonomously without constant supervision, because they all have a copy of the script. This information is about orchestration of parts. In an orchestra each player can manage to play his or her part with only minimal advice from a conductor because they each have a copy of their music. Their music is their process documentation.

This is closely related to policy and comes from internal management bodies.

Policy (Future)
Here are the promises and intentions of the IT mission. Documents of all degrees of technicality form policy. They contain the decisions you have made for steering the mission under all possible contingencies.

Policy is informed by all of the above, and usually changes in response to recurring `problems' identified in the observations. It originates from internal management.


Creating your own map


CFEngine provides a lot of knowledge about your system out of the box, that includes a domain model about the space of IT management, and an automated analysis of the deployed policy. Below are some notes about how this is built, and things you can do to improve the information by adding knowledge that cannot be discovered automatically.
  1. You begin by documenting your intentions by creating a cfengine automation policy, i.e. bundles of promises.
  2. You add comments, handles, promisees etc to your policy to full explain your intentions.
  3. You can assign each host in your network to a special class that represents its physical location, using classes: promises. You should then collect such classes into a topic context called ‘locations::’ in the company_knowledge.cf file.
  4. CFEngine runs cf-promises -r to build a decompsition of your current policy.
  5. CFEngine runs cf-know -bf enterprise_build.cf to build the knowledge map.
  6. You may create enterprise process documents and written policies for your organization, which you will link into the knowledge map.
  7. CFEngine Nova creates the Copernicus Knowledge Map which includes a conceptual framework for IT management, and which integrates with the cfengine software documentation. Copernicus has two parts: i) a self-organizing map that belongs to you, and ii) a static map of more encylopædic information that is located at cfengine.com.
  8. You may now extend the basic knowledge map with more of your own special documentation by placing references and additional concepts into the file company_knowledge.cf, on the policy server.

Documenting goals

Business goals are shown in the service catalogue in the Mission Portal of CFEngine Nova and Constellation for each hub. To document the fact that a promise or bundle contributes to a business goal, you must do two things:

  1. Document the goal (see below under the example company_knowledge.cf file). e.g.
         topics:
    
           goals::
             "goal 1" comment => "Do good things";
             "goal 2" comment => "Be first";
             "goal 3" comment => "Be best";
    
    
  2. Make the goal a promisee of the promise concerned.
         methods:
    
            "security"  -> { goal_1, goal_2 }
    
                            comment => "Basic change management",
                          usebundle => change_management;
            "maintenance"
                            comment => "Perform log rotation",
                          usebundle => garbage_collection;
    

Documenting locations

To document the location of a host, make sure that it is placed inside a class that represents its address:

classes:

  "london"     or => { "host1", "host2" };
  "alexandria" or => { "host3", "host4", "host5" };

Then designate these classes as locations in the knowledge map:
topics:

 locations::

  "london"     comment => "29 Market Street, London XW4, third on the left";
  "alexandria" comment => "Secret chamber, discovered by Indiana Jones";


Next: , Previous: Types of information, Up: Top

Example company_knowledge.cf

bundle knowledge company_knowledge
{
things:

 regions::

   "Americas" comment => "USA, Latin America and Canada";

   "EMEA"     comment => "Europe, The Middle-East and Africa";

   "APAC"     comment => "Asia and the Pacific countries";

 countries::

   "USA";

   "Germany";

   "UK"            synonyms => { "Great Britain" },
              is_located_in => { "EMEA", "Europe" };

   "Netherlands"   synonyms => { "Holland" },
              is_located_in => { "EMEA", "Europe" };

   "Singapore"     is_located_in => { "APAC", "Asia" };

 site_locations::

   # Use this for the names of

   "London_1"  is_located_in => { "London", "UK" };
   "New_Jersey"  is_located_in => { "USA" };

 routers::

  "oslo-hub-p6 "   comment => "Cisco xyz router, 3rd floor machine room, 6 Penny Street";
  "oslo-hub-trunk" comment => "Cisco BGP router,  floor machine room";
  "nyc-hub-456"    comment => "Juniper 123 router, 3rd floor machine room";

 networks::

  "192.23.45.0/24"
                  comment => "Secure network, zone 0. Single octet for corporate offices",
          is_connected_to => { "oslo-hub-123" };

  "192.12.74.0/23"    comment => "Zone 1, double octet for the London office developer network",
              is_connected_to => { "oslo-hub-123" };

  "192.12.74.0/23"
                     comment => "Secure, single octet for the NYC office",
             is_connected_to => { "nyc-hub-456" };


#######

topics:

 company::

  "ED"  comment => "Exceptional Devices Ltd";

 ED::

  "EGC"             comment => "Enterprise grid computing",
                association => a("develops stuff within",
                                 "ED",
                                 "contains its engineering unit");

  "EBC"             comment => "Enterprise business computing",
                association => a("handles business services within",
                                 "ED",
                                 "contains its business unit");

  "ED terminology" comment => "Internal company nomenclature";

 ED_terminology::

  "interactive job"   comment => "Interactive software running in the grid";

  "apps"              comment => "Software applications",
                  association => a("are also referred to as",
                                   "interactive jobs",
                                   "are also referred to as");

  "business services" comment => "Support services for sales";

########################
# GOALS as topics
########################

  goals::

    "goal 1" comment => "The company mission depends on reliability to our customers";
    "goal 2" comment => "Should be running recent versions of key software";
    "goal 3" comment => "The company must be compliant with Sarbanes Oxley act.";
    "goal 4" comment => "Comply with US Export restrictions for class D countries";


#######
# Documents below
#######

occurrences:

 # Fill in company references here

 work_shifts::

    "http://www.example.com/shifts_and_rotas.ods"
       represents => { "Spreadsheet" };


 current_projects::

    "http://www.example.com/scope_of_work.html"
       represents => { "SOW" };


 software_licenses::

    "This cfengine software license expires <b>$(sys.expires)</b>"
   representation => "literal",
       represents => { "CFEngine Nova" };

}


What other special documents should an organization have?


CFEngine cannot produce everything you need for your library of knowledge. There cannot be hard and fast rules about this. Here are some suggestions:

Hint: a simple way to have a log is to use a tickets system like OTRS or a moderated mailing list, and to email new entries. Something like a Mailman archive allows then tracking and integration.



Next: , Previous: Example company_knowledge.cf, Up: Top

Knowledge transfer


Passing on knowledge to others could be considered a `best practice'. Alas, this is not as easy as it sounds. There are plenty of strategies to achieve knowledge transfer:

These are just a few. However, this list is old news, and these items alone will not lead to knowledge transfer.

One of the most important barriers to knowledge transfer is that individuals refuse to learn new things. A lack of dynamism in a company or organization establishes patterns of habit that are hard to break. The longer they last, the more likely they are to continue.

Promise theory makes clear that, even if all staff promise to write excellent documentation, they do not necessarily promise to read each others' documents. Transfer requires a commitment both to send and to receive.

  • The final step to managing knowledge is to foster a culture of knowledge acquisition, retention and transfer.
  • Knowledge transfer requires a commitment by all parties
    • to learn outside of their box.
    • to pass on their expertise to others.

Communication skills are clearly important, but this is a serious flaw in the idea. Written communication skills are not as common as we might think. This means it is hard for the writer, and also for the reader.

The solution taken by cfengine is to reduce the problem of documentation to one of coding notes and relationships. This requires only minor writing skills. The technology can then assemble these notes using intelligent algorithms and present the result in an organized form with visual aids. You should pay special attention to the syntax items:

 comment =>
 handle =>
 depends_on =>

 -> { promisees }

You need to foster a culture of using information, in order for it to become assimilated as knowledge. Unused information will perish.


Previous: Knowledge transfer, Up: Top

How does CFEngine Nova help?

Table of Contents


Footnotes

[1] This is a general statement of the second law of thermodynamics – entropy tends to increase. If we want to reduce it locally, we have to expend a lot of effort.