I'm 44. I develop web-based intranet apps for a Fortune 500 corp.
My job involves lots of coding in Java, with occasional excursions into SQL and RPG. Lots of HTML and CSS, as well. We make heavy use of Hibernate, which reduces the amount of actual SQL we have to touch.
I despise Java. The core language is very weak, so you have to have significant numbers of external libraries added in to accomplish anything. This results in a very large, complex API which no one can hope to learn the ins-and-outs of. You actually need something like Eclipse or NetBeans, where the editor can look at what you've entered and suggest methods, based on context. It really doesn't help when you tell the system you need a "List" of something, and it needs help figuring out which of the "List" classes to use.
Prior to this gig, I've coded largely with vim (no, I'm not trying to start a vi - emacs flamewar). I used the word completion functions but, otherwise, the code flowed from my fingers into the editor with relatively little input from the editor. Once I got "in the zone," I could code for hours at a time and accomplish a great deal. These Java-based editors need you to stop while it thinks about what to propose, which breaks the flow. I never, ever, get "in the zone" with Eclipse. And, due to the breadth of the libraries and the different classes and methods, I've never been able to code Java, effectively, with vim.
Add in the fact that everyone wants to tie in all these frameworks which abstract stuff away, many of which are built on "convention over configuration." This results in a lot of programmers who are little more than technological "sorcerer's apprentices," copying-and-pasting stuff from one project to the next because, well, that worked in the last project and they really have no clue HOW it works; this project needs to do something similar so, hopefully, it will work in this one, too.
On a recent project, I requested assistance from the most experienced Hibernate guy in the place. Something I was trying to do wasn't working. After digging around in it for a half hour, he told me I'd just have to dig into the documentation and figure it out because he had no clue why it wasn't behaving. Oh, and when I figured it, let him know what finally worked. The most experienced Hibernate guy was, in the end, just another "sorcerer's apprentice," who didn't really comprehend the "magic" he was wielding.
I'm not happy with being a "sorcerer's apprentice," but I don't have time to dig through the piles and piles of code which constitute the multiple layers of stuff we're building on. Expecially when you consider the fact that each of the layers are evolving, and we may replace the library in this layer with a completely different one in six months.
I don't have any kind words for RPG, either. It's a legacy language which predates widespread use of SQL. Some of the code I'm dealing with has been in production for two decades, back when the company was all green-screen apps and no intranet. The beancounters who run corporations don't want you ripping out piles of old stuff and replacing it; that old stuff has been in use for years, has been thoroughly tested and debugged. Who cares if it's hard to read and maintain? Who cares if the original developer, the only person who ever knew how it worked, retired years ago? It works! Modify it if you absolutely must, but don't replace it. Oh, and expect a s**tstorm if your modifications end up breaking something.
A year ago, I was wondering if I was getting too old for programming work. I loathed my job. Why do I put up with that place? Because there are precious few options in this town, I'm not in a position to relocate, I still need an income and that pays better than most jobs in this area. So, I put my head down and kept plowing along. Wondering how hard it would be to get a prescription for anti-depressants.
About six months ago, I started retraining myself. I started reading books about design and User Experience. If you're wanting to learn more about those, I highly recommend "The Inmates Are Running the Asylum" and "The Design of Everyday Things." I've also been learning more about Javascript. I've used it for the better part of a decade, but never wrapped my head around the object-oriented aspects of it. I acquired and read "Javascript: the Good Parts" and "Eloquent Javascript."
My most recent project has allowed me "stretch my legs" a bit, in the user experience design area, and to tackle a lot of jQuery. While it took some doing to wrap my head around jQuery, I'm finding I enjoy it immensely. It's not as limited as Java and RPG. And being able to make the browser do all kinds of nifty stuff is very gratifying.
I don't love my job, but some of the more recent work, involving jQuery and a little bit of Perl, have made it more enjoyable. But I had to find the motivation, time and energy to start retraining myself. The good news is that was that the financal cost was a ebooks e-books for my reader. In another six months, I hope to have enough modern Javascript, jQuery and UXD on my resume to be able to jump to a better paying employer, maybe even going independent.