Many people come to functional programming with years of experience in an object-oriented language. The learning process can be quite confusing. They’re used to solving their problems with objects and classes, but we tell them that they should embrace the concept of functions as values. As soon as they have internalised this idea, we ask them to unlearn this habit. Only by describing behaviour as data you will become a true functional programmer. In this talk, I’m going to walk you through the confusing journey of FP novices and explain the reasoning behind this volte-face. Why would you want to describe your behaviour as data when you’ve just discovered the elegance of higher-order functions?