It might sound unexpected, but software development is extremely conservative and slow to accept new ideas. Few examples:
Agile Methods
A thing which can be considered a prototype of traditional agile team was introduced almost 50 years ago - it was Chief Programmer Team. In 1974 Ernest Edmonds published a paper “A process for the development of software for non-technical users as an adaptive system,” (General Systems, vol. 19, pp. 215–217, 1974) which describes iterative approach to software development - the core of Agile Methods.
Wider acceptance of these methods began another 30 years later, but even today you can see "scrum experience ... is a plus" in job descriptions, meaning that it's something relatively new for the hiring company.
OOP
The whole software development history is a fight with complexity. And most complexity in software appears from internal dependencies. One of the first and most successful attempts to fight this complexity was introduction of structural programming. Basically it introduced encapsulation for the code - every function/method is considered a black box with defined interface. From this point of view OOP is a natural extension of structural programming - it adds encapsulation to data. Due to this no one should be surprised that OOP did born in about the same time frame as structural programming - around second half of 60's.
Wide switching to OOP started somewhere in 90's and there are still areas (bare metal embedded software development) where many developers consider OOP as bad and harmful.
List above contains only most prominent examples which show how actually conservative software development is. The only thing which I still don't understand - why...
About Agile, my impression is that is not the final solution to everything as sometimes presented, it works on a very specific set of conditions; first of all, the new version has to be easy to deploy; for most embedded is not applicable, you have to deliver the entire system you generally can add code later, at least not easily, so any update is a huge annoyance.
I suspect that 20 years ago agile didn't run because deliver small updates in CD and before that in diskettes is far from ideal. OOP has an overhead, today, with modern PL is less and the computers are more powerful so the overhead is less relevant, but on the old days every extra byte and Hz counted.
This is where I get creative, this is a big stretch, but I think that the UNIX philosophy of do 1 thing is a kind of an old OOP, in those days you didn't do a file_manager_doit_all program, but you did: ls, rm, mv, cp, etc. they naturally chopped the programs as small as possible and used pipes, conditional, the entire Bash language as the glue. If you think about it, you had a bunch of "objects": ls, cp, etc. and a "connector" language, Bash to use those objects, the arguments of the commands where the public methods.
Maybe that's why that UNIX rule was sacred and today not so much, we got the encapsulation inside each program. All of this is just a huge oversimplification on my part based mostly on speculation and coffee, but kinda makes sense to me :D
And I don't think OOP is a "modern" or "best" way to do it, is a way, it adjust very well with some wind of problem and very poorly on others, is the experience, knowledge and general awesomeness of the programmer to know when and where. I think...