Much as I love the thesis of this post (I love it's formatting much much less -- more paragraphs breaks please) I don't agree that it is in fact possible to be an omni-competent generalist. Switching between Rails and Django is definitely pretty easy, but that experience isn't going to help you switch to, say, programming DSPs, or designing streaming algorithms, or architecting massively concurrent systems. There definitely is specialisation, and if you don't see it it's because you're blind to the box you're currently living in.
Total agreement with "You should always strive to become better!"