I think it's doubtful that you're going to get a good
answer that doesn't involve the advice "study functional
programming for yourself". Program a little bit in a
language that makes it impossible or at least hard to program
imperatively (e.g. Haskell or ML). Read some books that
emphasize functional programming, like pretty much any
language primer for the aforementioned languages, the classic
Structure and Interpretation of Computer Programs, and Purely
Functional Data Structures. The light may or may not click
on, but that's probably the best way to try. No royal road
and all that...