Comparative advantage[1] would be reason enough by itself. Why invest in becoming a good programmer if you're bad at programming if you'll probably never be as super-great at it as someone who found it easy and does it all the time? It would make more sense for you to work on something you're already really good at and trade with them to get the code you want.
In terms of the generalist vs specialist thing I'm reminded of the idea of T-shaped people. Broad general competence to allow you to meaningfully be part of the system, and deep specific competence to allow you a comparative edge.
Always end up wondering what the trade-offs are on how deep the tail of that is compared to the height of the top though.
In terms of the generalist vs specialist thing I'm reminded of the idea of T-shaped people. Broad general competence to allow you to meaningfully be part of the system, and deep specific competence to allow you a comparative edge.
Always end up wondering what the trade-offs are on how deep the tail of that is compared to the height of the top though.
1. http://en.wikipedia.org/wiki/Comparative_advantage