Recently, a friend asked me what does it take to be a good computer programmer. So I told him this story below.
I remember talking with a client who was a math professor. He asked me, "What is zero times infinity?"
I replied, "Oh crap, I did not do well in calculus....Umm...which kind of infinity? Which kind of zero? Is this a trick question?"
"The answer is zero. It doesn't matter which kind of infinity and which kind of zero...anything times zero is always zero."
"Oh right."
"These days, we have an increasing number of specialists who know so much about so little. Let's take engineering for example. We started off by having electrical engineers. Some time later, we started having electrical engineers that specialize in circuitry. And still later, we have electrical engineers that specialize in semi-conductor fabrication. The trend is professionals knowing more and more about infintesimally smaller things. Knowledge approaches infinity as subject matter approaches zero. Some day, we will know everything about nothing."
I started laughing. The client continued, "And this speaks to the responsibility of an engineer. Too many engineers tunnel vision. They learn so much about one thing to the exclusion of everything else that their work becomes meaningless in the world. A good engineer should always understand the context of his work and its impact on the lives of others."
I like this story because it explains why for me, being a technology specialist is just a means to an end, and not the end itself. I don't want to be the guy knows everything about nothing. I want to know what I need to know to get the job done. Being an above-average programmer is an unexpected and advantageous result.