Tacit Software Knowledge

June 16th, 2006
[ General ]

If you’ve heard of the concept of refactoring then you may have heard of code smells or database smells.

While these smell concepts have developed to the point where they have names and formal definitions, I’m guessing that wasn’t the original intention. That clarity only came through the work of documenting and conveying them as a formal topic through books and articles.

My guess is that orginally the concept of ‘smells’ was all about tacit knowledge. It’s about embracing a hunch which isn’t always done in technology, quite the opposite. Heavyweight processes often force tacit knowledge out by way of reviews, design documents, etc. If you can’t explain it, convey it, or write it out then it doesn’t exist.

The problem is that our greatest knowledge is tacit. You know something long before you can explain. How could that ever be the opposite? When was the last time you said I can explain it clearly but I don’t understand it. How many times have you said to your partner “crap, I’m sorry, I’m not explaining myself right”?

The greatest athletes can’t explain how they do it. Some brain doctor types argue that in order to do something at your complete potential requires you to put it into your sub-conscious, stop thinking about it. Athletes think about, and can explain, what they’re learning, ie the basics, the fundamentals. They can’t explain how to score 50 goals or throw 5 touchdown passes in a game.

Spoken and written word is flawed, it’s a hack, and we’ll never be able to completely convey what we experience through language. You break what’s beautiful about an idea the minute you attempt to convey it in words. In technology we sometimes allow ourselves to believe it’s all 1’s and 0’s and therefore has no place for tacit knowledge. In doing so we may lose out on the best part we have to offer.