Ah..Bureaucracy

July 31, 2007 § Leave a comment

Question: How many people does it take to change a light bulb?
Answer: At least 3.

I had a humorous experience yesterday that I want to share.  It has no direct relationship with software development, but if you ever dealt with a business processes that seemed overly bureaucratic, you can laugh with me.

As always, I have omitted details to protect the innocent and keep the post short.

I was waiting for a friend at a place of business.  This business is well established having several offices throughout the city.  A serviceman walked in and went up to the front desk.

Serviceman: "I am here to replace 2 burned out florescent light bulbs in the hallway."

Receptionist: "Sure, go ahead."

Serviceman: "Do you have the service approval?"

Receptionist: "The what?"

Serviceman: "The approval.  I need approval before I can replace the bulbs."

Receptionist: "I never heard of that before."

Serviceman: "You need to contact the service department at the home office to get the approval." (FYI: the ‘home office’ is in another city)

Receptionist: "Ok.  I need to look up the phone number."

(jump ahead a minute)

Receptionist: "I could not find the number, but I did find this memo for the approval."

Serviceman:  "That is it.  I will go and change them now."

(jump ahead another minute)

Serviceman: "All done."

Receptionist: "Bye."

(Total Time = 5 minutes)

So let’s crunch some numbers.  One serviceman to replace the bulbs, plus one receptionist to present the approval, plus (at least) one person to draft and send the approval, equals 3 people to complete a one minute task to replace a couple light bulbs (note: I am focusing on what it takes to get them fixed, which is why I did not include one person to request the service department replace the bulbs).

Would it not make more sense to send the serviceman the approval with the service request?  This way the receptionist could deal with the customers that were lining up behind the serviceman.  Then again, why bother drafting an approval form for such a trivial task?  Oh well, I am sure it looks good on paper.

Child Driven Design (CDD)

July 14, 2007 § Leave a comment

The connection between raising children & object oriented design (OOD).

Those of you who have experience raising children will relate to this article.  Those of you who have no experience, read on, the point I make will improve your designs.

I love my kids.  They make me laugh when they point out the silly things we adults do.  I marvel at their memory when they recall significant details of events which occurred years ago.  Their smiles & hugs cheer me up every time.  And when they snuggle next to me while we watch a movie, they remind me how much I cherish them.

I want to be a great father, so as they experience life I want be there to witness it & guide them when needed.  While I like to be involved, there are times when I step away and let them figure things out for themselves.  Dory from the movie "Finding Nemo" had the perfect saying for this "If you never let anything ever happen to him, then nothing would ever happen to him".

Sometimes my kids encounter a new problem and try to figure out how to solve it.  Like getting that toy under the couch which is out of arms reach, or practicing putting on their new shoes.  As long as they are focused & not getting frustrated, I stand back and let them work through the problem.  In some ways, Object Oriented Design (OOD) parallels raising children; specifically, the relationship between the parent and child sometimes mirrors the relationship between a software engineer and an object class.

When you create a class, you endow it with certain capabilities because the class needs to fulfill a role in your software ecosystem.  Over time, your class continues to evolve and its role becomes clearer and its character becomes more pronounced.  Eventually, when your class matures enough, you send it out in to the world to fulfill its destiny.

If, however, your class is highly dependent on other code to function effectively, then your class will not have the independence it needs to flourish and succeed.  Classes which are highly coupled to other classes are easily affected by changes in those classes, and vice versa.  You want your class to be independent & have relationships, not dependencies, with other code. If your class is highly coupled, then you need to refactor it and give the class what it needs: sufficient knowledge, skill, & intelligence so that it does not depend on others to fulfill its existence.

By the way, the idea for this article came when I witnessed the following code snippet.  It has been altered to protect the innocent:

UpdateVariableInTheObject(GetTheObject(), TheNewInformation);

You can see that the object relies on other code to fulfill its existence.  The class should instead control itself, like this:

GetTheObject()->UpdateVariableInTheObject(TheNewInformation);

Now the class has the tools to solve its own problems.

Making the most of a Commute

July 4, 2007 § Leave a comment

A little time well spent, adds up.

My commute to and from work is very short.  It’s about 30 minutes round trip.  15 minutes to get to work, and 15 to get home.  It is nothing compared to some who spend hours getting to and from work, but I do get annoyed when is takes me five minutes longer.  I guess it is because I know how long it typically takes.  Though as short as my commute is, I find it boring & a waste of time.

Sometimes there is something interesting on the radio, but more often than not there is little which catches my interest.  I think I have burned & listened to every conceivable combination of my CD library.  I even started borrowing my wife’s CD’s which is scary because we do not have the same tastes in music.  Many times I felt there was a better way to fill the time.

Recently I found a happy medium; one that satisfies my boredom & allows me to enjoy the commute.  I started listening to podcasts on my iPod.  I have listened to podcasts before as they caught my interest, but I have never subscribed to them, nor listen to them with regularity.  Now I subscribe to several.  iTunes automatically downloads the latest podcasts to my iPod, so all I have to do is plug-in the earphones and drive away.  Now I am satisfied that my commute is more productive.

There are a great variety of podcasts out there.  Here are some of the ones I currently subscribe to:

dotNet Rocks!

Hansel Minutes

Channel9

Where Am I?

You are currently viewing the archives for July, 2007 at Journeyman.