At which point in time did Lisp or COBOL programmers realized that their respective skillset has died, never to return? When do we as Java programmers would do the same? Mind you now that even James Gosling doesn't even care about Java 'The Language' anymore. The past few years have been real difficult times particularly in the java job market. This year my experience says competition (read outsourcing) would take it to a completly new levels. Perhaps 'its over' with Java. Time to re-skill. Any recommendations?
Well, LISP was never a widely used language commercially anyway, and Clojure is basically a new LISP for the JVM, so it might be that thanks to Rich Hickey LISP is as widely used as ever these days!
COBOL isn't dead, although I don't know how many people are still writing new COBOL systems. But there are still a huge number of systems out there that were written in COBOL - doing all the boring stuff like running payrolls etc that today's developers often never think about - and I still see jobs advertised for people with COBOL skills to maintain existing systems.
As for Java, it's pretty much saturated its market. Everybody who is ever going to use Java is probably doing so, and it has become the COBOL of the early 21st century. Like COBOL, there will be masses of Java systems - ad jobs for people to maintain them - around for decades.
But I think you're right that regular Java development skills no longer seem to be such a premium commodity on the job market, presumably because so much of the work has been outsourced/offshored to low-cost locations (or low-cost developers are being imported in large numbers as here in the UK).
As I'm only peripherally part of the Java ecosystem anyway, I'm not sure where to go from here as a developer.
Obviously, you can try to move up the "value chain" and become a designer or architect: because so much work gets outsourced, there is a real problem with producing clear requirements, designs and specifications etc that can be fed across multiple departmental/corporate/linguistic interfaces to large teams of relatively inexperienced developers working thousands of miles away. It's weird that in these days of Agile development, so many projects are being forced back into "Big Up Front Design" to make the outsourcing/offshoring model work (if it works at all). That's probably why there are also still plenty of testing jobs around - people still need to check if the software they paid for actually works.
Another area I think is interesting is new languages on the JVM, especially Scala, which looks like a promising new direction - it's not yet a commodity skill but it might be one to get into and beat the rush. JVM-based languages obviously allow more experienced Java developers to re-use their Java experience, while giving them a niche area that will hopefully take a while to become part of the bulk offshoring market.
I don't think there's much future in the "developed world" for anybody with routine "commodity" development skills, i.e. where there is scope for cheap offshore suppliers to ramp up their in-house capacity to provide those skills as they have done so successfully with Java. If you live in places like the USA or UK, you simply cannot compete with somebody on a Mumbai salary who has similar skills. So I suspect we need to either offer more specialised skills or get out of coding work altogether.
Like Chris said, the platform evolves and the existing programmers need to learn the new skills to increase their value. Cobol programmers have newer languages like RPG, RPGLE and automation packages like synon.
Similarly the java people would stick around with the jvm and learn new languages on it. To move on the value chain, you need to be professional programmer, not a java or some other technology specific programmer.