| ▲ | sdfdfsfsdsdf an hour ago | |
It's called programming to an interface. type ThingDoer interface { DoTheThingIDontCareHow() (result, error) } func NewAmazingThingIMade(theThingINeedButIDontCareHowItDoesIt ThingDoer) { // You receive the superduper thing and dont care about it in any other way } func (a *Amazing) DoSomeThing() (result, error) { return a.DoTheThingIDontCareHow() } Nothing about "monoliths" prevents or hampers this development style. Once someone decides to do the Thing in another fashion, they are free to do so and you wouldn't have to change a thing. All problems you experience are organizational, not technical. It's psychology we should be studying, not computer science. Edit: In fact you introduced a network boundary which can fundamentally only complicate matters, not make them simpler. | ||