Starting with Web 2.0, web applications are trying to get more and more powerful moving computation to client hardware resulting in the demand for front-end engineers rising in the last few years. If this trend continues the need for backend/infrastructure engineers is going to get highly competitive. Is my thinking correct? Having been a backend developer for many years is it time that I start learning front-end skills that is, UI frameworks, computation beyond browser machines (such as JS engine, Flash VM), CSS, etc.?
In my opinion, you should pick up some jquery-foo. All of that front-end glory is pointless without some backend magic. The fact that you're already familiar with the the backend stuff is good, but your practices will change a bit as you develop a working knowledge of doing asynchronous requests, and working with some of the nifty front-end items we're growing accustomed to.
Like you, I spent many years developing traditional backend logic before even considering the front-end realm. I later picked up on jQuery to start introduce some simple effects into my apps, but this soon ushered in the type of stuff you're talking about, logic. Actions beyond mere dropdowns and fade-outs.
I suppose this rant can be summed up with the request for you to reference jQuery in your next app, and start dabbling with its treasures of goodies. You'll come out smelling like roses, and feeling a great deal of pride for the work you'll be capable of.
As much as front-end technologies advance, and the need is rising, this need was always there. So I don't think back-end will be more competitive then it is today.
That said, you should learn some scripting language, JS with JQuery is a good start. Flash & SV are also a good idea as they are cross-platform, and used for more then just web-based applications. As for CSS, I would wait for HTML5 and CSS3 to be accepted by today's browsers, since building well styled web-pages with CSS is more of knowing that hacks & tricks of each browser, then knowing how to actually code in CSS.
Web development: front-end skills or backend skills? - BOTH.
Front end knowledge yes, A design-eye ... not essential
IMHO, every web programmer working on the backend should be very capable with front-end technologies; Understanding these is essential as it is a core part of the interaction between user and application logic (of which the developer should have end-to-end knowledge).
Nobody says you need to be a designer, but you should be capable of doing all the markup, JavaScript, Actionscript and so on. Not only is it simple to learn and pickup, but will increase your scope as a developer.
It also allows you to understand the UI designer's needs and possibilities, essential in getting the most "web2.0-ness" out of your application. Before you know it you will point at the screen and say:
Hey, Why don't we slap some JavaScript in there connected to an API to validate the form? Sure, it'll get validated on the server, but I can set the server-side API up no problems and expose it in whatever form (SOAP/POX/JSON/...) you need. I'm awesome!
Bottom line is, would you write a GUI-app without understanding how the GUI is built? Or how signals/events work? Or about the execution model of the UI framework? Na not really. Front/back are both vital pieces of the same puzzle - developing web applications (which you want to be the best at?)
Just because the front end is decoupled, doesn't mean it is any less essential than SQL knowledge. I consider it very important.
So yes, go forth and learn front-end skills! As long as people click, touch, slide, swipe and whatever else their screen to interact with your app, there will always be the demand and it will always be relevant to whatever is handling those actions and UI.
If you're looking for increasing your opportunities as a developer, I would suggest seeking to beef up your front end skills and then working to balance your knowledge of both.
Someone who has strong front end and back skills often are put in positions to lead teams or coordinate tasks between diverse groups. It's helpful to have someone that can connect the two.
You also, often, end up with a better resulting product when you understand how they work together.
For what it's worth, I'm not sure there is a simple answer to your question....
Front end dev can really have a lot of dealing with end users, if you're in a small team without dedicated analysts. So if you don't particularly enjoy this kind of thing, i think picking up these skills probably wont bring any more statisfaction to your work.
However, if you dont mind, and perhaps are even looking for a bit of a mix up in responsibilites, then i do think being able to move between front and back will make you more marketable. Though that won't necessarily translate into higher rates, rather just more opportunities.
For purely rate/wage maximisation, I'd suggest staying backend and specialising in multi-threaded, real time type stuff.