I've seen a lot of posts lately re: monoliths vs. microservices. I had an experience today along those same lines.

I was looking for the place in code where we sent a specific bit of data to CloudWatch. I had to look in THREE different microservices before I found it. If I had been able to search ONE codebase I would have spent myabe a third of the time looking.

This isn't to say microservices are bad. However, I have come to realize that my preffered approach is monolith first. When you find aspects of your code that need to scale independently from your monolith, it's time to break it off into it's own microservice.

If you start the other way around, you end up with a lot of cognitive load and context switching. Having to swtich between projects and languages constantly is a mental drag and increases what you need to know in order to add features to your application.