Object-Oriented programming provides solutions, is not a silver bullet.
Neither is Functional Programming. Point is there is no Silver Bullet. Programming is still hard. That doesn’t mean we should throw away encapsulation, inheritance, polymorphism. Use them when appropriate.
Functional programming has been part of OO since Smalltalk’s “BlockClosure” which is Smalltalk’s way of implementing “lambdas” and closures. In JavaScript you have decent support for functional programming (closures) and both prototypical- and class-based Object-Orientation.
Immutability? ES6 has that as an option so do most OO languages. Const.
Just because these Object- and Functional- tools are there doesn’t make programming easy. Why is that? It is because programming is isomorphic with proving theorems in logic and mathematics., see https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence .
Programming is as hard as proving theorems since it is isomorphic to proving theorems. If programming was easy then mathematics would be easy, and we know it is not. Why not? Because every problem is its own problem. There is no need to write a program that already exists, or prove a theorem that has already been proven. You might find a simpler proof, or simpler program for calculating the same thing. But it is difficult to come up with simpler, more efficient program that does the same thing. No Silver Bullet.
This has something to do with “Hilbert’s Program”. Hilbert hoped he could find a way to prove all theorems with some mechanical algorithm. But Godel proved that to be impossible.
Functional Programming is not a panacea, not a Silver Bullet. Mathematicians have worked hard with functions since who knows when, but their problems are not solved. They still don’t have a mechanical procedure for “doing mathematics”, Godel proved there never will be. Same with programming, because programming is isomorphic with proving theorems.