Why Racket? Why Lisp? (2014)
A fun essay that really tries to nail down the "Why" in a real-world way.<p>It mentions that functional programming removes the tripwire of state mutation as one of the "whys", but my experience slightly differs here.<p>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.<p>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) <i>just made sense.</i>  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.<p>I did find that functional programming made me significantly more comfortable with OOP languages.  YMMV.