I work for a large financial company that manages money for thousands of clients. This company has very complex business processes and they operate in a very dynamic environment.
This is a fairly old company and over the years they have implemented many heterogeneous systems to automate processes within the company.
There are rumors in the company that there may be an effort to move to "a system" (re-written from scratch) that consolidates the many disparate systems in place now.
Debate has arisen that questions the value of such a move:
One side claims a single system is easier and cheaper to maintain due to greatly reduced redundancy i.e. properly factored business logic, unified data model, reusable UI components, etc.
Other side claims that the company, clients, and products (financial instruments) are too complex and too dynamic to be pigeonholed by one system. Single system will risk breakages in one component when another is modified. There is no way and no reason to consolidate business logic because it is too client- and product-specific. Time to implement changes will increase because multiple higher level components will be affected by changes to lower level components.
Question: Should the company seek to invest time and resources in creating a unified data model, factoring business logic and creating reusable code at all layers? Or should they "copy and modify" in order to speed development time, reduce the chance of regression, and reduce complexity? Is there a false dilemma presented here (i.e will there be a net change one way or the other and does one answer necessarily preclude another)? To be clear, this really a matter of long term goals and priorities, not about a specific product design. The company will never eliminate a certain amount of redundancy and it would not be desirable for them to do so.