This post grew out of two years of interviewing JS/TS engineers. I'm genuinely interested in programming languages — and functional programming in particular — so I always liked to weave paradigm discussions into technical interviews. Over time, I noticed a curious asymmetry. When candidates talked about OOP, they were confident — but mostly at the conceptual level, rarely touching on how OOP is actually implemented in JavaScript specifically. With FP, the picture was different: less confidence overall, but when it came to criticism, the arguments were surprisingly concrete and consistent: "immutability is expensive in terms of memory" , "recursion is unsafe because of stack overflow" . What struck me was that these arguments almost always came from experience with JS — not Haskell, not Clojure, not Scala. That detail matters. Every paradigm exists on two levels: the conceptual (the ideal model) and the implementational (how a specific language expresses that model).…