Monday, October 18, 2010

What is the meaning of 'No Tribal Knowledge'?

To answer your question we first need to define what I define as Tribal Knowledge

From Wikipedia's 'Tribal knowledge' page:
Tribal Knowledge is a term most often associated with a process step of the Six Sigma process. It is often referred to as knowledge 'known' yet undocumented such as information that has been handed down generation to generation with no documentation. Knowledge contained within a group that is assumed to be factual but has no known data or analysis to verify that it is factual. The Six Sigma community has adopted the term to use the description of 'tribe' as an analogy of a company.
Anyone who has ever worked with me knows that I always ask for the why of any process. One of my core beliefs circles around understanding why the process is being done, as opposed to the how the process is being done or even the end result of the process. My logic lies in the idea that if you can fully understand why the process was done, then you gain a deeper understanding of the process, and in most cases are able to derive the how on your own.

To bring this back down to a development perspective: I am a stickler for documentation and commenting of code. I truly believe that any quality code should be documented; such that should another developer need to re-implement your code they can do it from documentation alone. This, in my opinion, by definition excludes Tribal Knowledge, as you now have a written account of this information.

This belief also includes the concept of well documented Application Programming Interfaces (API). I feel that in any development project of size is more successful when API is well understood by all on the development team. Its advantages are that is cuts down on duplication of work, and also extraction/encapsulation of logic to areas of specialty.

I look to Microsoft's lead with the MSDN Library. Here is a wealth of information that allows any developer to easily reuse well documented, well tested, well supported, and well understood libraries to develop applications that the original Library designers probably never even imagined. Further more the fact that, if you had followed the documentation to the T and not relied on undocumented functionality or behavior, that you can take a program that was written for Windows 95 and run it in Windows 7 and beyond. That fact alone is staggering and in my opinion (and apparently others as well) the reason that Microsoft has continued to dominate the Industry in the ways it has.

But back to the topic at hand (the above will probably be covered in a future blog post), because my believes directly counter the concept of Tribal Knowledge I have chosen to make my rally cry 'No Tribal Knowledge', and therefore thought it was the perfect name for a blog on development.

No comments:

Post a Comment