This is a terrific post that describes why functional programming feels so much more satisfying to learn than imperative programming. Realizing I can use (map) and (reduce), for example, feels so much more valuable than learning how to use that PDF Factory class with its inheritance hierarchy and overloaded interface specifications. Yeah, I'll be teaching that to my children.