As software engineers (or even as humans in genera), we are all faced with this dilemma. Whether to know everything about that one thing (master of one) or to attempt to know something about everything (jack of all trades). There must have been plenty of times in my life when I have stopped working on a particular skill and decided to jump boat onto something else.
The reason for this jump is mostly because the new thing’s caught my fancy and the old one isn’t proving to be as easy as I had initially thought (i.e. I am not becoming a world champion any time soon). This article does a great job of explaining this dilemma in a visual manner. The recommendations, though made from a software perspective are valid for every field.
I would also recommend that you read about T individuals. This is another great article to read on this topic (and yea, becoming a T individual is something we all ought to aspire to do).