Starting with a monolith could lead to really difficult refactorings unless you structure the code in a way that it can be easily decoupled.
Microservices -> monolith : difficult refactoring
Microservices with poorly chosen context boundaries -> microservices with well chosen context boundaries: very difficult refactoring.
This is why Martin Fowler recommends starting with a monolith and refactoring into microservices unless you have extensive experience building out very similar applications in the same domain.
https://gocardless.com/blog/getting-started-with-coach/ was the framework.
That idea had a lot of influence from Smalltalk, where the natural way of developing was in a monolith. So tactics like that which are about decoupling by default were a good idea in that context.