I have been programming, non professionally for about 23 years and find I am a little stuck in my ways. I find a tool I like, and it stays that way for year after year. Unfortun
Read developers blog. Try to keep a fair amount of resources in your feed reader and go through them every day (or so). Just pick up the things you like.
Most coders write their opinions, their view, and so on. You can learn A LOT by just reading what others do and filtering what you like or find interesting and what you don't. Books are helpful to, but, with 23 years of experience and just wanting to be up to date... I'd recommend blogs...
Some blogs I read:
Stackoverflow is a great resource too. Not just for finding answers to your problems but also for reading answers to other problems. Seriously, I've found myself quoting some answer from stackoverflow a lot of times lately... or applying something I've seen here.
For what is worth, being up to date with the current tendencies (like TDD or Aspect Oriented Programming) is like being up to date with the world itself. You get up in the morning, and read the newspaper, maybe just the headlines and then something specific, for about 5 or 10 minutes. Then you read the articles you find interesting but you're somewhat conscious about the most important things that are happening. This is the same, but those blogs (and some others) are your newspaper for the programming world.
You will need some alternative approach to the topics. I have found the "Heads on..." series to be both entertaining and technically sound.
Have a look on Heads on Java: http://oreilly.com/catalog/9780596009205
Personally, I learned a lot from watching lectures and tech talks posted by google. They have a ton of content about software engineering. Watching videos is obviously a very different learning experience than reading but most of the people are very intelligent and are talented speakers.
http://www.youtube.com/GoogleDevelopers
http://www.youtube.com/GoogleTechTalks
You might find these lectures on functional programming by Erik Meijer enlightening.
It sounds like your programming logic skills are fine. It seems to me like the best way for you to update your skills is to pick up a copy of C# (Express is free) - Or java (I'm a .net guy) and convert one of your old applications, you will then find real world issues and will be able to solve them (With the help of SO) using the 'Modern' methods.
Good luck.
I lot of "new" concepts are not actually new. Most "modern" language features are derived from early functional languages, for example. Techniques such as TDD and Agile are just codifications of things that have been done for a long time, just perhaps not in the mainstream. Nor are they hard to understand per se.
I suspect your biggest obstacles will be terminology. You may be used to hearing buzzwords, but when you look at what they mean you just find them explained in terms of other buzzwords.
My recommendation is to persist. Find your way back to where things are explained in terms you can relate to then work back out. Once you've done that with a few concepts you'll feel a lot more confident in tackling more, and have a better idea of which things you really want to concentrate on.
For language related things this is probably easier because you can go back to, for example, Lisp and find the concepts explained in terms of what was familiar in the 60s and before! (of course you can find more recent coverage too).
For design and process related subjects just reading up on their histories in wikipedia should give you some clues.
Keep your focus narrow enough to not be overwhelmed, but broad enough to take account of the eco-system that a tool or technology exists in.