Complexity
I've been thinking about complexity lately. Several times in the past few weeks I've attended meetings where the comment was made along the lines of "please help me because I can't begin to understand everything that's happening in my network".
The person making this statement always does so with a bit of hesitation. It takes some amount of courage to admit this truth. Curiously, no one ever makes a negative remark when the conversation turns in this direction. Probably because we can all relate.
Grady Booch, author of the book "Object Oriented Analysis and Design", has some interesting insights on complexity. He specifically addresses software development; however, these ideas can be applied to network technology as well.
In part here is what Mr. Booch has to say:
A physician, a civil engineer, and a computer scientist were arguing about what was the oldest perofession in the world. The physician remarked, "Well, in the Bible, it says that God created Eve from the rib taken out of Adam. This clearly required surgery, and so I can rightly claim that mine is the oldest profession in the world." The civil engineer interrupted, and said, " But even earlier in the book of Genesis, it states that God created the order of the heavens and the earth from out of the chaos. This was the first and certainly the most spectacular application of civil engineering. Therefore, fair doctor, you are wrong: mine is the oldest profession in the world." The computer scientist leaned back in her chair, smiled, and then said confidently, "Ah, but who do you think created the chaos?"
The distinguishing characteristic of industrial-strength software is that it is intensely difficult, if not impossible, for the individual developer to comprehend all of the subtleties of its design. Stated in blunt terms, the complexity of such systems exceeds the human intellectual capacity. Alas, this complexity we speak of seems to be an essential property of all large software systems. By essential we mean that we may master this complexity, but we can never make it go away.
Certainly, there will always be geniuses among us, people of extraordinary skill who can do the work of a handful of mere mortal developers, the software engineering equivalents of Frank Lloyd Wright or Leonardo da Vinci. These are the people whom we seek to deploy as our system architects: the ones who devise innovative idioms, mechanisms, and frameworks that others can use as the architectural foundations of other applications or systems. However, as Peters observes, "The world is only sparsely populated with geniuses. There is no reason to believe that the software engineering community has an inordinately large proportion of them." Although there is a touch of genius in all fo us, in the realm of industrial-strength software we cannot always rely upon devine inspiration to carry us through. Therefore, we must consider more disciplined ways to master complexity.
As Brooks states, "The complexity of software is an essential property, not an accidental one." We observe that this inherent complexity derives from four elements: the complexity of the problem domain, the difficulty of managing the developmental process, the flexibility possible through software, and the problems of characterizing the behavior of discrete systems.
Grady Booch, "Object Oriented Analysis and Design", Chapter 1: Complexity
As I said earlier, these ideas about complexity can be applied to networks. The least complex, most simple a network will ever be is when it is first installed. From that time on things get more and more complex. New sites are added. New technologies are added. First it's just routers running RIP or IGRP. Before long it's switches, then it's switches from multiple vendors. Now we have multliple protocols, multiple manufacturers, multiple technologies, multiple carriers, mutliple systems and no one person can understand it all. Rarely can we find one person who can give a high level overview of everything we do at UEN, let alone how it is to be done.
Mastering complexity is a very difficult task. It cannot be undertaken by any one individual and is very nearly impossible for a small group. Only in pooling our collective talents can we even approach this mastery. Those who feel overwhelmed by complexity are not in the minority. Even acclaimed experts struggle with the complex nature of this business.
The ideas behind complexity are fun to explore and a topic that will fill many more of our waking hours.
Next Week: Exploring ideas about Network Operating Centers
8:18:35 AM
|
|