Monday, February 2, 2009

Chaos

In his book, Object-Oriented Analysis and Design, Grady Booch relays this story; "A Physician, a civil engineer, and a computer scientist were arguing about the worlds oldest profession. The physician says that the Bible recounts how God created Eve from one of Adam's ribs - certainly the work of a surgeon. Therefore surgery is the worlds oldest profession. The civil engineer explains that before Adam or Eve, God created the heavens and the Earth from chaos. Therefore, engineering was certainly older than surgery. The computer scientist simply asks, so where do you think chaos came from?"

Fred Brooks of Mythical Man-Month fame, wrote in No Silver Bullet, that the complexity of software is an essential property rather than an accidental one, and that this stems from four elements:
  • The complexity of the problem domain
  • The complexity of the development process
  • The flexibility of software (i.e. it allows for the introduction of more complexity)
  • The difficulty in understanding discrete systems (binary computers are discrete systems)

It is no wonder then that computer scientists, programmers, and IT professional believe they are employed in the worlds oldest profession as creators of chaos. Even if we allow the demons of our nature to suggest that creating chaos is the second oldest profession, we're still along way from noble endeavors. I suppose that doing something well, anything, is to be commended, but inserting complexity, disruption, unpredictability, and insanity into a perfectly useless Phantom Zone is enough to depress Clark Kent - Kal-EL as his friends call him.

Booch expresses the philosophy that programmers, computer scientists, and IT professionals are tasked with engineering the illusion of simplicity. Apple introduced the iPod on August 23, 2001, and made the task of buying, downloading, and listening to digital music easy enough for the masses. Unbeknownst to most people is that Apple used 200 lawyers to sift through the complex litigation required to make "Point, click, $0.99, download, unplug, play" actually work. And that doesn't count the complexity of the software itself.

Whether you're building an application, a network, a server, a transaction or any other complex digital solution, the task at hand is to make it work every time as expected, a.k.a. the illusion of simplicity. There is one key to systems that just can't fail - reducing the size of each element to a manageable unit. I'll forgo the description of how this fit into the four pillars of object oriented design (abstraction, inheritance, encapsulation, and polymorphism), and just focus on the benefits of this one concept.

So here's a trick question; how do you write a thousand line program with zero errors. Answer; you can't, but you can write a ten line program without errors. In fact you can write a ten line program that is so blindingly simple it cannot fail. If you do that ten times, and then do that ten times, you've got your thousand line application that cannot fail. I used to teach programmers that if any single function/method/sub-routine had more lines than could fit on one screen, it was too complicated to understand, document, or debug. You have to make each deliverable a manageable unit.

Starting in the 1990's the Standish Group produced research cleverly titled the Chaos Report. It showed that 31% of all IT projects worldwide are considered failures before they are done, another 53% are considered failures within a year of completion, with the remaining 16% being successful. Over the years there have been improvements in these percentages with the number one contributing factor to improved IT project success being a reduction in project size. The use of iterative methodologies such as eXtreme, Agile and SCRUM allowed project managers, developers, testers, and analysts to grasp the entirety of an objective - and thus deliver better results. Smaller things are more easily managed. Making big things out of reliable small things results in reliable big things.

Whether you are building an application, a network, a server, a transaction or a complex multifaceted system, you need to construct it with small, impossible to fail components. One of the hidden tricks to doing this (the 'this'; is building impossible to fail micro-systems) of course is that it is easy to catch errors when the system is very small. A small system can only fail in a limited number of ways - handle all of them, even if that means passing the failure up or down the system. Make sure that each upstream and downstream component that might receive an error deals with it appropriately. This task is considerably easier when the components you're building are very small.

The result is a system comprised of components that cannot fail, and thus a total system which is reliable. The illusion of simplicity is the result of building complex solutions from highly reliable micro-systems, often through an iterative development process using small teams.

Role Models

I recently perused a local art shop looking for a gift when I began to take notice of the portraits of famous people - famous people who had affected my life. What struck me was that I had never given it much thought. For all intents and purposes, I didn't think I had any heroes. I admired my parents to be sure, but I didn't follow sports teams all that much until I moved to Pittsburgh in 1974. But even then, I wouldn't have called any of the Pittsburgh Steelers my heroes, or even role models. But as I looked at the paintings of hundreds of famous people, four stood out as individuals that had a profound affect on my life, although I hadn't realized it before.

The first man that caused me to say, I want to be like him; was Muhammad Ali. To begin with, Ali was great at what he did - make no mistake about it; whether you think he was "The Greatest" or merely one of the best in his field, he was flat out, no doubt about it, just plain awesome at his craft. "Float like a butterfly, sting like a bee" was his motto and he personified it. And... he was funny. He was a joy to watch inside and outside the ring. I learned you could be stunningly good at your job and have fun doing it. I'll let others decide how good I am at my work, but make no mistake - I have fun doing it.

Later when Ali chose to avoid the Selective Service, he showed conviction to a belief system. To me it didn't matter whether you agreed with his belief system or not - that wasn't the point. To be willing to give up your livelihood, your career, and your fun because of your convictions was noble. I learned that there are some things which are more important than your job, your reputation, and your income. Lastly, when he lost his fight with Joe Frazier (Joe actually broke Ali's jaw midway through the fight), Ali was genuinely graceful and complimentary during the press conference afterword. You could see his swollen face and that he was still in pain and yet he had the style and grace to accept his defeat and honor the victor. I learned that sometimes you lose, and that's OK.

My second role model was Dr. Martin Luther King. Yes, yes, I'm Caucasian, white as the new fallen snow. I grew up during the 1960's when racial tensions were broadcast daily on the evening news. We lived in the downtown of the largest city of the county and went to a very integrated school system. It was integrated because no one had the money to move to the suburbs. I was raised by very progressive parents who simply showed no appreciation or tolerance for bigotry. They didn't march, they didn't yell, or scream, or even shake their heads in disdain at prejudice. They just treated everybody as equals - and raised us to be the same. As a result, Dr. King's message of non-violence, of equality, of dignity, of judging people by the content of the character resonated with me. Still does. I learned that leadership can come by delivering the right message, at the right time, with the right words. I can only dream of leading so well.

I am one of five children that 'blessed' the lives and Ed and Jean Meredith (snicker). My brother Ed, Jr. and I shared a bedroom for most of our young life. If you ever want to know about our relationship back then, just listen to Bill Cosby's routine titled, "To Russell, My Brother Whom I Slept With." I honestly thought the title was "To Wrestle My Brother, Whom I Slept With." I listened to all of Cosby's comedy albums as a child because he completely captured life as I knew it. Snakes on the floor, monsters in the closet, walking home after dark, and sharing a room with your brother. He made sense of my life by simply talking about his own. Later, my wife and kids and I religiously watched the Cosby show in the 1980's because, again, he seemed to see the same world we saw. I learned that people are people; and we all worry about the same things; our kids, our future, and monsters in the closet.

By now you may have picked up a theme and are wondering if I had any heroes that "look like me." I'll forgo the discussion of two arms, two legs, and a nose in the middle of my face. I would like to think that these three men resemble me to a very large degree, after all, I've modeled much of my life after them. That we don't share pigmentation is way less meaningful to me than that we do share the same planet at the same time. Henry Adams once said, "A teacher affects eternity, he can never tell where his influence stops." This can surely be said of these men as well.

Lest you think I only admired great men of color, I did have one other role model.

Of the four famous men who helped form my image of a man - the last was none other than Captain James T. Kirk of the Federation Starship, Enterprise (NCC-1701). Go ahead and laugh, but this character (not at all to be confused with the actor William Shatner), was smart, commanding, aggressive and kind when he needed to be, and - and this may be the most important thing of all - he was able to admit when he was wrong. When the Organians prevented Kirk from starting a war with the Klingons, Kirk was embarrassed. Embarrassed because he had actually wanted a war. When he fought against the reptilian Gorn, it was only at the last minute that he realized that his initial motivation for the fight was wrong. He'd overreacted and plunged his ship into a fight over a misunderstanding. How many powerful people do we get to witness admitting mistakes with humility and grace. I realized I didn't have to be perfect person to be a good person.

I've never met any of these people, and I imagine if I ever did, I'd just come across like a bumbling crazed fan. If they only knew how much they meant to me.

Follow by Email