There was a rage at one stage for product identifiers, customer keys, employee IDs and other elements to be smart. The logic ran as follows

We have an identifier. Its got 8, 12, 16, etc character and into this we will embed intelligence which means that systems can automatically identify what type of thing it is and its classification. So for a person this might include gender, location, date of birth and other elements. Systems therefore would have lots of information just from the key. This was a wonderful and beguiling notion with only a couple of major flaws.

  1. What happens when that key information changes? Names can certainly change and gender has been known to flip as well
  2. What happens if a new piece of information becomes key and you need to make 8 characters 12?
  3. What happens when you merge with another company and they have a different approach to smart IDs?
  4. What happens if you want more than just the standard elements in the smart ID, do you extend the ID?

Ok then, not a couple of major flaws a massive mountain of flaws of which these four are only the surface. The reality is that Smart Keys are a dumb idea and Dumb Keys are smart.

Take the Barcode. Do you know what information is encoded into a barcode? Well there is a lead number to say whether its for local use or a global UPC… but after then its pretty much just a number.

What about the US Social Security Number? Well that is a ‘Smart’ number and guess what? Those clever folks in Pittsburgh at CMU worked out how to reverse engineer the Social Security Number.

Getting the picture?

The point is that in this day and age of reasonably broad network connections its stupid to have smart keys, its much smarter to have dumb keys and then provide a secure mechanism via which a dumb key can be turned into information. In this way you can secure the important information and more importantly you can better map between areas.

This latter element is the final nail in the smart key concept. If you have two divisions that use ‘dumb’ codes you can create a new ‘dumb’ code which works over both and have a simple MDM cross reference which indicates system + dumb code mappings to the new universal dumb code. A Smart Code system would have to agree on the taxonomy, the sub-components and the various other elements that go into the smart code and fundamentally the new Smart Code would not be directly compatible with the old ones and systems that relied on the Smart Code would fail. Those that rely on a ‘Dumb’ code however can simply be repointed to the new information repository and retrieve the right information in the ‘old’ intelligent way.

Smart Coding was really an effort by people to reduce network traffic, and I’m a fan of doing that sometimes, but really in this day and age and with the MDM solutions that exist there is no excuse for choosing such a sub-optimal approach.

Smart Coding is Dumb

Dumb Coding is Smart