Imagine a machine that when you opened it up had wires running every which way such that you could not get your hand inside to unscrew anything and even if you did you could not pull it out.
Hardware designers learned long ago that harnesses were necessary to route needed cables to the minimum number of destinations.
There are no cables in software but there are function calls and data references which are the software equivalents of wires. Software designers have begun to manage system complexity by reducing the ways programs could interact with each other and internally by the use of encapsulation.