One risk of starting with a modular system is that it is often hard to know what are the module boundaries and what is module A or module B.
Starting with a connected system makes moving things around easier and lets the modules and boundaries grow organically.
Then, when switching to modular starts, you refactor and isolate around real use cases, not imaginary ones, as you will at the beginning of the project.
Recently, I noticed that in my projects, I have an "incubation" area where systems are connected and where new feature starts their life. It is moved into the more modular, well-bordered area when things stabilize.
One risk of starting with a modular system is that it is often hard to know what are the module boundaries and what is module A or module B.
Starting with a connected system makes moving things around easier and lets the modules and boundaries grow organically.
Then, when switching to modular starts, you refactor and isolate around real use cases, not imaginary ones, as you will at the beginning of the project.
Recently, I noticed that in my projects, I have an "incubation" area where systems are connected and where new feature starts their life. It is moved into the more modular, well-bordered area when things stabilize.
Grow how a tree grows. One cell gets too big and then it splits.