I think micro-services can actually make this worse.
The issue is that the early coders write macros and other tooling that makes it harder for future coders to understand. In other words, they develop their own service-specific language.
With one big service, you would expect a somewhat consistent set of practices. So, one language for the entire service.
With micro-services you can have a different language for each service. Worse, each language might be only slightly different.
If you end up with a consistent language across all of your micro-services, then you’re back to the original problem.
(I’ve experienced this effect first-hand. If I’m not disciplined I’ll do a bunch of meta programming that makes me _way_ more productive, but makes it much harder for another programmer to understand.)