I find reasoning about component interest harder in a monolith. Monolith code has free reign to access other parts of the monolith; instead of having to understand a component's inputs and outputs, you have to keep the entirety of the monolith in mind when reasoning through any particular piece of code.
Smaller services are also easier to test, for the same reasons. Services force the team to limit scope. While one can try to do the same in a monolith, it's too easy to "just this once" rely on some back channel data passing or assumption of the internal state of another part of the monolith.
Smaller services are also easier to test, for the same reasons. Services force the team to limit scope. While one can try to do the same in a monolith, it's too easy to "just this once" rely on some back channel data passing or assumption of the internal state of another part of the monolith.