Why Racket? Why Lisp? (2014)
A fun essay that really tries to nail down the "Why" in a real-world way.It mentions that functional programming removes the tripwire of state mutation as one of the "whys", but my experience slightly differs here.I found, after years of struggling with the "why" of object-oriented programming and its early obsessions with design patterns, that functional programming simply resonated with me personally.  To this day, I have a bit of inner cringe when reading (for example) Java code.Early in my career, I thought my lack of "getting OOP" was due to some profound missing piece of understanding.  But then Lisp (and Clojure) just made sense.  Thinking functionally just works for me.  It's not so much that I couldn't use OOP but just that each time I worked in deeper OOP projects, I felt some internal friction or vague uneasiness with the code.I did find that functional programming made me significantly more comfortable with OOP languages.  YMMV.