Most of the time, developers who decide to start learning Scala, Clojure or any other programming language based on the Functional Programming concepts find themselves frustrated in front of concepts such as Functors, Monads or Monoids to name a few, not knowing from where to begin and how to approach them. Those concepts are often used by the more experienced developers making the unexperienced ones wonder if they are ever going to write a Scala program in their life. I believe that those concepts are equally simple and important, and do not have to stop beginners from embracing a language like Scala.