And I wouldn't look at it as work. More like nerd-traveling: you get to see a lot of neat and unusual things, and when you're done, you appreciate home a lot better and have a better perspective on things. Having said that, I'd be sure you solve a few non-trivial problems. Traveling is no fun if you just take pictures and don't get out and participate.
In general, if you haven't tried a new way of making solutions in the last five years or more, you're sucking wind in this biz. That's advice just about _keeping up_, getting ahead is an even tougher game.
I think C++, for me, is the hardest to re-tune to. There's just so much stuff going on. And it's one of those languages where the code constructs themselves can lead to a lot of crazy complexity. Was that a multiple inheritance and a virtual base class, or just an interface? Do I have any friends? If not, do my parents have any friends? Are my operators overloaded? Is this a volatile method? If so, better stand back!
I'm not saying to code like this, but C++ stuff, even when written well, can just get gnarly as heck. You enter this entire zone and mindset when you're there, at least I do. Some other languages, like Java, are not that tough to come back to.
But do it smart. Use mentors for stuff at the fringes that you don't think you're going to keep doing over and over again, like hiring a lawyer or finding a PR firm. Specialize, but only lightly, in a few areas that have important correlations to the field your in. For programming, that would be knowing a couple of OOP languages, a couple of Functional languages, a couple of relational databases, and a couple of large datastore systems. You don't need a PhD, but you do need some practical experience in various ways of doing those things you're going to be doing a lot of. Once you learn 2 or 3 ways of doing the same thing, you'll have enough of the pattern to keep you going for a good while. Then there's just being honest with yourself. For instance, I suck at UI. So either somebody else would have to do it, or I would have to farm it out.
In the technology field, approximately 80% of working knowledge changes every few years. That means that it's not a question of being a specialist or generalist, it's a question of constantly relearning. What are you relearning? Making that choice is the key to your future survival as a company. There are two types of innovation -- the knd that happens as part of being a super specialist at the forefront of some small subset of knowledge. And then there's the kind that happens when you mix various fields in an unpredictable manner. Guess which one is a better model for the types of startups we talk about on this board. Specialization is a great place to start, but you have to move from there to somewhere else to run a startup.