Functional programming didn't enter our homes with full power, although, you could tell it's trying. We'll look at simple functional concepts, which can be used as fresh method of looking at old problems, e.g., code duplication, error handling and control over side-effects. I hope to convince you, that with functional thinking it's easier to handle the code complexity and you won't have to sacrifice your effectiveness. Examples in Java, Scala and Haskell.