I think that the rationale is that if you are already good at something, you probably like to work in that area, and it won't be a chore to become even better at it, you can become more "naturally" better.
I heard in recent coaching/leadership training that, as human beings, we have a tendency to focus on our weakness or negative feedback, even if you got some positive feedback at the same time. So it can cloud you judgement on how to improve because you miss the big picture.
But it is more in an overall development sense, and is rather orthogonal to develop cognitive skills or brain training.
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.
I heard in recent coaching/leadership training that, as human beings, we have a tendency to focus on our weakness or negative feedback, even if you got some positive feedback at the same time. So it can cloud you judgement on how to improve because you miss the big picture.
But it is more in an overall development sense, and is rather orthogonal to develop cognitive skills or brain training.