Your choice of programming language reflects the expediency of youth versus the wisdom of maturity. If Java, Python, PHP, Ruby, JVM and .NET all led you to class-based OOP hell, it’s time you break loose and onto the promised land of functional programming (FP). OOP is like taking the blue pill. OOP has led you to a make believe world, a misdirection, a sleight of hand, a reality distortion field.
But you don’t have to take my word for it. You may have experienced OOP and it gets the job done. Well, that is the nature of software. It may have solved your problems in the small scale but at what cost? What are the tradeoffs? Development complexity? Software is intangible so you better look out for things that are not directly measurable but affects the bottom line which is developer productivity.
Now, if you think functional programming is a silver bullet, you are missing the point of FP. Functional programming does not eliminate imperative programming (IP). Rather, the former complements the latter. Moreover, functional programming is a mere subset of declarative programming paradigm.
Which leads us to a corollary:
IT is 20% software development and 80% operations.
You may be using the best tools for software development but it won’t shield you from the larger problem of operations. Operations include storage, networking and computing, the backend stuff that are invisible to users behind the graphical user interface. Mastery of operations is the reason why you cannot simply topple Facebook or Twitter or Google or Amazon because software development is just a small part of the overall picture.