The truth is, while it doesn't get that much mentally harder to learn new technologies, it is very hard psychologically.
For someone used to a large paycheck, to being the go-to guy in the technology and set in their 9-to-5 ways, to get out of their comfort zone, and admit that what they know is no longer relevant is scary as hell, especially for those with families.
So, rather than update themselves and make up all that lost ground from getting too comfortable, they'll try to keep in place the old legacy systems only they can maintain.
I got caught in that trap too, one of my main responsibilities is maintaining a Forte 4GL system ( http://en.wikipedia.org/wiki/Forte_4GL ).
While I've kept myself relatively up to date, it was on Microsoft .NET technology only, and I'm still a few years behind. I wanted to supplement my income, and took a look at the online marketplace, and it confirmed what Hacker News was already showing me: my skills are useless, I don't know Ruby, Javascript, the open source stacks, Amazon Web Services or anything currently relevant and in demand.
I can either try to switch into management, or accept I'm obsolete and take a large pay cut (or try to improve myself on the side, probably by trying to do a startup) if I want to stay relevant.
I turned down that management offer, kicked butt where I could and got promoted to a principal engineer. It was at that point I realized I was in a dead end job, went nuts in my free time reading book after book, tutorial after tutorial... and two years later finally summoned the courage to do a Rails project pro-bono on the side for a small local marketing firm; for about 4 mos I was putting in 60-70 hour weeks between my day job and side gig.
Now I have another Rails project lined up for a NYC fashion site that pays about 15% more per hour than my day job and I've been contacted for no less than 5 full time Rails positions, one of which I interviewed for and turned down. The demand for this stack is fierce. And you know what? I'm madly head-over-heels in love with the latest and greatest the web has to offer (ie. meteor.js gives me goosebumps, and at the very least in the near term I want to do a front-end mvc project ala backbone). I'm not great - yet - but I feel like for once I'm really in the game. It's exhilarating. I feel more alive than I have since my early 20s. This NYC contract is about to be signed, and once that happens I'll be saying goodbye to the windows world altogether, join a co-working space, build a network, go to local tech meetups, etc, to ensure I have a steady stream of work. It also helps to have at least 6 mos of savings in the bank to mitigate risk.
Seriously, go thru easy/free books like Learn Python the Hard Way, Eloquent Javascript, Michael Hart's Ruby on Rails Tutorial, the tutorials on the W3C site. You should be able to do all that in a couple months, and that's probably 50% of the battle (okay - there's alot more, but once you have some foundation the rest will be much easier).
EDIT: Wanted to mention about the full time Rails positions, 3 were for small startups, 2 for larger companies. Naturally the small startups you can expect to take a pay cut if you're mostly maxxed out in your compensation in your respective area. But the 2 corporate Rails gigs the recruiters wanted to put me in at or slightly above my total compensation package at my current job (partly due to those being a mixed environment and needing someone with both C#/C++ and Rails skills).
"Now I have another Rails project lined up for a NYC fashion site that pays about 15% more per hour than my day job"
Contracting is vastly different than being an employee. Your employer pays considerably more than 15% more per hour for you (employer portion of taxes, portion of health insurance , etc.) As a contractor you'll be responsible for those expenses.
Health insurance can be had for barely more than the cost of fuel I was using in my daily commute, which is $200/mo. Yes, I have to do my own taxes, and yes they'll be a bit more, but as a sole proprietor I can also deduct many expenses. It's pretty much a wash. I firmly believe people make a bigger deal out of this than it is, it's a fear thing.
But this is beside my point, I'm transitioning out from Windows dev, and it doesn't have to be some huge sacrifice like many make it out to be. I have a plethora of full-time work I can take in front of me if I wish, I decided the 1099 route makes more sense for me at this moment in time.
Is it weird that I love doing this stuff so much, that the simple idea that I can go work anywhere means I can go on a 2 week road trip and work while doing that is vacation enough? Granted, me from 2 years from now might have a different take. But the fact that 'work' means going into a coffee shop, staying at home with my dogs on the couch, or going into a cool co-working space and collaborate with like-minded people... it's like my whole life will become this big vacation. Because I really love writing software, it's just exhilarating. 'Work' to me is having to slave through rush-hour, deal with water cooler talk, walk into a sea of cubes in a faceless corporation, spend hours upon hours in meetings that accomplish little, then put on my headphones and pretend I'm somewhere else. The work itself is what actually takes me away from that reality.
i.e., if you make $50k a year, charge $75/hr. If you make $100k/year, charge $150. How much do you think an associate attorney at a law firm that makes $150k per year is billed out at? CPA? Management consultant? All of these professionals are generally billed out at a median rate of nearly $200/hr. And the top end is astronomical, like $800/hr or more.
The hardest part about software consulting/contracting is learning to say a polite "fuck off" to the people not willing to pay your price. Everything else is easy. Making some money is the easy part. Earning respect is the difficult part.
"No less than 5 offers" - CHARGE MORE MONEY. As an engineer it is your responsibility to the craft to increase the prestige and respect of the job.
I also have another client who wants me to bid shorter term work (they did offer at a rate that's 40% higher) but I told them to hold off for now because I want to get used to the new contract first and make sure I'm comfortable with the cadence.
Key point - I will consistently be raising my rate, but for now I'm making almost as much as my day job and working much less hours, and I need to get out there network, get good, etc... and the rest will come. I'm approaching this in a way that aligns with my own principles. I'm not trying to be a bottom feeder in this market. I just am getting my feet wet with a minimal portfolio and simply happy to be in a position that I can make the transition into something I'd much rather be doing.
This is in Canada though, so I'm not taking the requirement to pay for your own medical insurance into consideration.
I was 35, working at a great job as a physicist. Amazing team (I was usually the dumbest guy in the room), amazing project, but I was bored. I knew that if this didn't make me happy, I needed to get out. I read a few PG essays, caught the startup bug, and started coding in the evenings.
Within 8 months, with a brand-new daughter and another that was two, I was gone from that job, working on my own. In that 8 months I had taught myself web-dev from scratch.
I knew nothing of Ruby, HTML, CSS or JavaScript. I had a smattering of Unix knowledge and had been coding data-analysis in Python and C for a while, but the amount I had to learn was staggering. I bought tons of books, learned tons, and (luckily) had no idea how much I still had to learn.
The first startup idea (online graphing software for physicists -- I didn't exactly reach far for the idea) was a complete flop. That's okay, though. I turned to consulting for a while. Gave some talks. Wrote part of a book. Met my co-founder by consulting for him for a while.
Now, things are good. Leanpub is growing steadily, and I couldn't be happier.
The point is, that you can and should teach yourself some new skills. You're way closer to being employable than I was, that's for sure. It may take some evenings and weekends, but they'll be some of the most fun evening and weekends you ever have. Find something that you want to do and build it. Fall in love with the idea, but be ready to dump it for something better.
The market for people with even a smattering of Rails knowledge is huge. iPhone dev is bigger. or Erlang. or fancy JavaScript using Socket.IO.
Location doesn't matter. Age doesn't matter (I'm 40 now, in Vancouver, not in SV, and I bet I could find 10 jobs at the drop of a hat). My blog isn't huge. My startup hasn't had "an exit".
There are excuses, and there is getting out there and having a blast learning and making your life better.
Seems like an easy choice. Go kick some ass.
I can see .Net sticking around for a while in one form or anther. Also AWS really isn't that complicated (at least from what I have used which is only really S3). Just think of it as another layer of abstraction around your Filesystem (FTP/Rsync with bells). You can figure S3 out in a few hours and I can't imagine EC2 being much more difficult if you're already familiar with Unix.
I think the crux of the problem here though is that you take a risk whenever you devote any significant time to learning a specific technology as to whether it will still be relevant in a few years.
This problem is made worse by the fact that often your employer will make that choice for you. Imagine being a young hire at your first coding job with ambitions of moving on to a career at Google after a couple of years to then be told that you are to be transferred to the COBOL/FORTRAN team where you will spend the next 2 years.
I think this is probably part of the reason that many developers are so keen to re-implement perfectly working systems in new languages. They will try and sell their boss on the benefits of technology XYZ and how it will be good for the business when really in the back of their mind they are thinking "I desperately want out of this job and XYZ would look great on my CV".
The flip side of that problem is dealing with the bright young things of all ages who thinks it'll be a couple of weeks work to rewrite that COBOL legacy app in in Clojure/MongoDB. Y'know - the one that's been correctly doing the interest payments for the last twenty years. How hard could it be?....
Guess what's not fixed one year and £200k later... :-)
Now we're looking at buying a proven software package - even though its price will be in the millions of dollars, it's better than trying to build it ourselves (I estimated three million dollars for an in-house project, and a big chance of failure, most certainly not satisfying user's expectations).
I wouldn't use 40 something developers in a large multinational as a representative sample. As the saying go, it's easy to retain average people, it's the exceptional people it's hard to keep around for long.
Also you mentioned .NET, the .NET ecosystem and culture is notoriously corporate, and not very innovative or leading edge, again that's not to say all of .NET is like that, but a large multinational is likely to fit that model pretty well.
As a framework, I'd say that it's actually pretty advanced.
Besides, I'm not sure what's so leading edge about bringing Ruby to .NET. Ruby is 10 years old and Java has had an implementation for much longer. I also have no idea what is leading edge about WCF (or WPF for that matter) though I really like the work Glenn Block has done recently for WCF and much of it is arguably very cutting edge REST stuff, so there are certainly exceptions, but they are just that exceptions.
If you're point is that MS shops are quick to embrace MS christened technologies, well that is relatively speaking true. However MS is often well behind the technology curve of even the .NET open source community (monorail predates MVC significantly) and generally speaking even further behind the ecosystems outside of .NET.
Bottom line, I see no evidence to support a claim that .NET development supports a significant culture of early adopters.
My point wasn't actually that Microsoft shops embrace Microsoft products quickly. You said that .NET doesn't have a vibrant ecosystem, but in the same breath mentioned that Monorail was implemented well before Microsoft created ASP.NET MVC. Ecosystem does not necessarily mean "vendor supplied", if anything a healthy software development ecosystem allows for alternative modules and frameworks. You have sort of proven my point :-)
As for IronRuby and F#, you seem to be asking a question to prove your point that very few people have adopted these technologies. For myself, I guess I'm not sure either - I would be curious to see if these technologies have been adopted by many .NET developers.
Also, you are contradicting yourself a little about the WCF technology. You can't say that there is no real cutting edge stuff being done, but then state that there is cutting edge work being done on REST, but that it's just an exception. "Cutting edge", by definition, is exceptional...
As to whether there are many early adopters: I guess we'll agree to disagree!
While the .NET open source eco-system is arguably decent, you've completely ignored two implied, but obvious points. The open source eco-systems outside of .NET are much, much stronger and people outside of .NET embrace open source, and leading edge far more easily.
That's really the whole argument and you've said nothing to contradict it, but feel free to ignore it. As a former contributor to Nancy and one of the rare .NET devs who's contributed a patch or two to almost every .NET project on Github I've used, I feel pretty comfortable making these observations.
Agreed that people outside of .NET embrace open source more easily, but disagree that they don't embrace leading edge technologies. As an example, when LINQ was released, it was widely taken up.
Where I'm disagreeing with you was in your statement "the .NET ecosystem and culture is notoriously corporate, and not very innovative or leading edge". It may well be a framework loved by corporations ("notorious" is an emotive term with no substance), but you haven't proven to me that they don't innovate or that the ecosystem or culture is not leading edge. I appreciate you've committed to .NET projects, which is awesome, but argument through authority isn't really anything to disprove what I've said!
Sorry if you feel that I've ignored your points, but I raised LINQ as just one example, you dismissed Microsoft's embracement of dynamic languages in the framework and WPF and WCF aren't innovative apparently. Like I say, we can agree to disagree!
Edit: I've reread the thread, and I can see the bone of contention. My fault here: I talked merely about the leading edge technologies, whereas I was objecting more to the assertion that there was little or a minority of innovation. Of course, I didn't actually state that so the discussion went on a bit of a tangent. Sorry about that!
I'm much happier this way than I ever would have been in a managerial role that I never wanted.
As long as I'm solving problems, facing challenges and feeling relevant, I don't believe I need to be the one doing the coding :)
Also what's old is new again but just done in different mediums.
It doesn't get at all harder to learn new technologies when you get older. In fact, it gets a whole lot easier.
There's an old saying "You can't teach an old dog new tricks", and this is true, to the extent that any cliche can be, when referring to people becoming set in their ways. For many professions, where the technology doesn't' change, this is true. For programmers "set in your ways" simply describes the method by which we pick up new technology since that's what the profession is all about. (I prefer books to youtube videos, for instance.)
Learning new languages and new technologies and new platforms is a whole lot easier now than it was 20 years ago, in part because the technology for delivering information is a lot more available (hell the internet alone is a huge impact) but also because, having learned a dozen languages the next language is a lot easier to pick up.