Like many developers, I’ve spent a lot of time thinking about objects. I started doing object-oriented programming (OOP) in 1989, and was arguably still doing it up until 2012. The concept of objects arose in GUIs and simulations, where it is natural to think about sending message to things. Over time though, the idea of messages took a back seat to the idea of locking data up in little containers where each class provides a namespace of functions to operate on it.
The accounting department classifies software development work as a capital expense. That means, at least according to accounting, new software represents new capital investment that should increase productivity. This highlights a big divergence in the way accounting views software versus the way we should look at it.
We used to have a saying, “KLOCs kill.” The more lines of code, the more risk you have. As your system gets bigger it gets more complicated and difficult to work with. Code has a carry cost... you have to keep maintaining it. It has obsolescence risk. Undeployed code is exactly like unfinished automobiles: nobody pays you for it. Maintaining it is a liability not an asset. Excess code is a boat anchor that will weigh you down until you drown.