in reply to
I'm not sure that remark is meant to be taken entirely as it appears at first glance. There are layers of complexity in it that should probably be considered.
Where "weapon" could be construed as "technique", or "tactic", then in terms of the organic whole, specialization is a weakness that can be exploited. Thus, if an adversary presents a challenge that brings out your weakness, either deliberately or accidentally, then your "weapon" will be useless. An army of swordsmen, no matter how well trained, could fall easily to an army of equally skilled riflemen, but an army with both well trained archers and swordsmen would fare much better, perhaps even win.
In terms of programming, someone who relies too much on a particular technique will be vulnerable to problems not easily solved by it. This is to say that one must be versatile and adaptable in order to be truly effective. This is a variation on the "if all you know how to use is a hammer, everything looks like a nail" theory.
The other side of this is that over-generalization is a weakness as well, the classic "Jack of All Trades, Master of None."
Balance between the two extremes, of course, is the key. A variety of specialists, with some degree of overlapping capability to allow for clear
communication and understanding, is what makes a strong team.