Some things that come to mind are
1. Swappable config files (hard to do in frameworks like django where config is code)
2. Can't use proprietary 3rd party apis in core logic or if you do there has to be an open interface to be able to adapt to different vendors (payment_provider_interface vs stripe)
3. Minimize friction for new developer to spin up copy. Meaning if you're forced to rely on multiple services, use something like docker compose to allow a single command to bring up the who command after a git clone.
What are some of your ideas?