 I think functional programming changes the way you have to think and reason around your programs. It allows you to write short, compact code and that in turn translates to a maintainability and increased productivity. I think many studies show that no matter what programming language you use, it usually takes more or less the same amount of time if you write a line of Java as it does to write a line of Erlang or Haskell, but your Haskell and Erlang programs you tend to be a fraction of the size of what your programs in other kind of imperative and object-oriented programming languages tend to be. And so you know as soon as you've got a higher productivity you also have easier maintainability because there's much less code to maintain.