I tell anyone who wants to do development/engineering to jump jobs or be a contractor. I've worked at a few places where the lead or manager has been there for 10 years and his skills are so outdated, he'd suffer terribly if he lost the job. This one guy I worked with only knew classic asp. Nobody does classic asp anymore. I was hired to help with deployment after the company decided it was time to move to newer technology (MVC C#). The guy was so out of his mind because he didn't understand the technology. He knew the system well, but he didn't know how to work with anything other than classic asp and the local system.
If you work too long somewhere, you will get pigeonholed into old technology. If you get laid off, you'll be struggling. Companies usually keep their systems for years, so it's bound to happen if you're at any one place for too long.
Another advantage I have (I've been engineering for 15 years now) is that I have no family or responsibilities. Everyone my age wants full-time jobs with benefits. There is a need for senior devs who only want to work 3-6 month contracts. There is actually a shortage in my area. So, if I ever want a job, I have no problem with competition because no one wants the 3-6 month stints like I take, and it's senior level so I get paid well.
Every place I've been I've learned something new, I've networked with cool people, and it's increased my marketability.
I can relate to you when you say if you stay in a job you get pigeonholed into old technology. Although I didnt resort to old technology, I have been a Barber for 7 years now and recently quit that profession. Where I moved to there is no industry here. Plus I want to get benefits. The downfall is i have no job experience in construction, or anything really and I'm almost 29. Shit is hard to find a job because I have a record and tattoos on my hands and ya it makes a hell of a hard time to find employment. My fault though! I just need a chance!