Software Should Not Work Like A Brain
I was writing quality FP code before OOP, and am still writing some (mostly managing) now, and will continue with FP. Why? Because the human brain is friggin awesome and powerful, but we don’t want programs to work like human brains and organize like cells.
Humans forget things. Humans make different conclusions in what appears to be exactly the same situation because non-deterministic factors so small as to be “invisible” from a high level change the outcome of a functional decision. Programming like that is how you end up with a car that decides when you push the brake pedal, “No. I don’t think I will.”
Humans make leaps of logic. Humans have inspiration. That is how we advance as a species. But humans make errors when they make leaps of logic. Sometimes we’re inspired to do really stupid things (see the show Jackass, for example). I don’t want a car or a plane that can be inspired to try something new, especially not on takeoff in the rain in heavy wind. I want a predictable automaton that does something way faster than a human within tiny tolerances and repeatabilty not possible from a person. That’s what programs are for — enhancing human brains, not replacing them.