A company exists to provide a value to its customers. In school we would talk about how to look at the value chain in a company. Simplistically, the value chain is a manufacturing term that discusses how value is added to the component pieces to arrive at a valuable output. Many organizations will then optimize this chain of steps to either decrease cost or increase the value of the offering.
When the value chain of a company and its organizational hierarchy don't align, you will some of the worst possible systems get built. In the end, people are the one's guiding which systems are built and implemented. If those people aren't motivated to align their thinking with the value chain then inefficencies will be introduced. I'm a big fan of understanding how the company is operating today and where the company is going into the future as a means of understanding how systems have been built.
In the beginning of a company's life, human's control most of the process. Its easy to change how you do things, you simply ask the person next to you to try this rather than that. If it works, it stays around. If it doesn't you try something else. Well, software doesn't work that way. It won't change unless you change it. The older the system, the scarier the system, the more likely a company will let the crappy process stay and will instead optimize around it.
Sometimes this is for the better, and sometimes this becomes a massive drain on the organization. They apply band-aide after band-aide to the solution trying to find something that works. When the real solution is to simply fix the automated solution.
My purpose in discussing this centers around how we build out our software systems. Its no secret that companies are racing to further automate their systems and processes. But budgets are controlled by departments. Departments exist to manage people, and the heads of each department can be changed as needed across time. Even with this change, the business processes rarely change.