When I was a child, my Grandfather gave me as a present a Swiss Army Knife.
If had all these cool features, like a toothpick, tweasers, big knife blade, small knife blade, scissors, a mini saw, etc.
I thought this was the greatest invention ever.
It had a tool for any project you needed.
A utility knife for every occasion.
And then there a knifes specifically for hunting, fish cleaning, digging, small knives for key chains.
These knives have one or two purposes and they work great for what they were intended.
As a programmer, I like to think of my skills as a Swiss Army Programmer.
I can troubleshoot an IIS server, I can write code in Java, I can program in other languages like .net and Visual Basic, I can write reports in a variety of platforms, I can speed up queries, interact with the Mainframe, etc.
I can do all sorts of things.
Then you have programmers who do one or two things really well, and that's about it.
So as you can see, both types serve a purpose, the utility and the specialized.
One is not better than the other.
Regarding Knives or Programmers.
And I thank my Grandfather for the great gift!