Enhancing knowledge portfolio
Andy Hunt and Dave Thomas authors of The Pragmatic Programmer suggest the need for Pragmatic Programmers to enhance their knowledge portfolios by learning a new language each year. In an interview the duo were asked about the languages a Java Programmer should learn and their replies were as follows:
ANDY: For sheer mind expansion, you might want to look at a dynamically typed language. Ruby comes to mind, of course. Dylan and/or Self might be interesting just to see some other approaches inheritance and such.
DAVE: I'd also suggest Java developers have a look at AspectJ, which is not so much a new language as an add-on to Java, allowing functionality to be spliced in to existing code. In general, look for languages with different philosophies to the ones you're using. Have a look at Haskell, or Self, or Smalltalk, and see what good ideas you can bring back to your existing environments.