Not to get far off topic, but functional doesn't have to mean Haskell etc. The more I more imperative code I write, the more and more it looks functional because it makes it easier to think about at any level without looking at everything. In fact, I believe that if software building was taught functionally (without the super abstract stuff), more people could understand programming better. The main benefit of functional style is it takes the step-by-step time element of code execution out of the equation. You basically get to treat everything like a black-box. Some things you can't, so you take note of those rather than worry about it all the time.
I read this great reply in /r/ProgrammingLanguages[0] that really spelled out the pros/cons of certain languages/type systems so that I don't think that Haskell is for me, even if I put in the effort to get better at it. F# is more my cup of tea.