Yeah, the “Kingdom of Nouns” piece was fun, and I enjoyed it, and as a greybeard who learned to program on a greenscreen in the early 90’s it struck a familiar nerve for me. But it’s not pure truth either. I read a ton of folks like Paul Graham back in the day riding high on how they write a super-awesome thing in LISP and I’m like… that’s great, but it sounds like you had a dream team and I bet that team would have done great even if they were using COBOL or FORTRAN, you know? And yes, OOP isn’t perfect, which is why criticisms like “Kingdom of Nouns” is appealing. Plus, there’s a certain minimalistic or simplistic freedom in sitting down in vim or emacs grinding out all of this text that does super-algorithm stuff.
But most business programming is moving data around. Classifying and sorting and organizing data, taking it from Bucket A, filtering by Condition X, and combining it based on identifying Attribute Prime, with data from Bucket B which is filtered by Condition Z. And yup, stuff like LINQ gives us a DSL to manipulate this stuff easily, and LINQ is FP-ish (it certainly depends on FP stuff like lambdas!). And sure, languages like JavaScript have ways to write in an FP style when it makes sense.
But so many times I see FP-ish code and I think, “this is just ‘code elegance’ for no gain”, if I took perfectly reasonable, though verbose code, turned it into FP to satisfy my sense of programming aesthetics, and now the junior developers can’t understand the code… was that really a win? I don’t think it is.
J.Ja