I sometimes reference Keithâs Law in my teaching, but I donât think Iâve ever explained it. Keithâs Law runs something like this:
Any large external step in a systemâs capability is the result of many incremental changes within the system.
The reason incremental changes within a system appear as a single large step to outside observers is the smaller changes are normally hidden by abstraction. This is, in fact, the purpose of abstractionâto hide small changes inside a system from external view. Keithâs law is closely related to Clarkeâs third law that âAny sufficiently advanced technology is indistinguishable from magic.â What looks like magic from the outside is really just a bunch of smaller thingsâeach easier to understand on its ownâcombined into one single âthingâ through abstraction.
If youâve read this far, youâre probably thinkingâwhat does this have to do with network engineering?
Well, several things, really.
Firstâthe network is just an abstraction that moves packets to its users. Moving packets seems so ⦠simple ⦠to network users. You put data in here, and data comes out over there. All the little stuff that goes into making a network work are lost in the abstraction of the virtual connection between two hosts.
If you want users to understand why building a network is hard, youâre going to have to work hard at it. And youâre not likely to succeedâitâs often better just to live with the reality that users arenât going to understand. Of course, this isnât necessarily a bad thing, at least until itâs time to buy hardware and software to make all this magic work.
Secondâno-one outside the network is ever going to understand the refactoring, simplification, and new features youâre trying to build into the network on their own. Users will only understand these things when they are related to some bigger picture, something they can see beyond the abstraction the network presents.
If youâre going to justify doing new things, you need to do so in terms of âlarger things,â things that can be seen from outside the abstraction.
Thirdâno-one is going to pat you on the back for all the little things that need to be done to deploy a new major service. From the outside, that new service, or new cost savings, or whateverâitâs all just indistinguishable from magic.
Keithâs law is both good and bad. But it also means you need to learn how to frame your work in a way that users, who donât have access to the inner workings of the network, can understand why youâre doing what youâre doing.
Turning this around, this also means you shouldnât accept the âmagicâ of vendor products. That brilliant new capability your vendor is showing you is really made up of a lot of smaller components. The abstraction is just thatâan abstraction. If you really want to understand the positive and negative consequences of deploying something new, you need to look beyond the abstraction.