I've ended up a generalist (mostly by accident) and recently noticed a fairly serious downside: because I tend to move from project to project, technology to technology, I often forget what I've learned, due to lack of re-enforcement. Furthermore, when I have to use an unfamiliar technology, I sometimes find myself doing things in ways are sub-optimal or unidiomatic. ("You mean I could have used a library for that? Damn!") A related problem is that, because technology advances so rapidly, it's difficult to keep up with a number of different fronts simultaneously. So when you go back to a previously used technology after a hiatus, you might now overlook recent advances.<p>To help with the first problem, I've started using Anki. For the last one I read HN. ;) But these are imperfect, and short of "become a specialist," I have no good answers.