The summary.
WEIGH LIBRARIES AND MAINTENANCE ABOVE EVERYTHING ELSE
Writing what a mature library provides is expensive and usually worse, and a language nobody in your organisation knows is a liability regardless of its merits.
Several domains decide for you: machine learning, mobile platforms, browsers, embedded work and shared hosting.
MOST APPLICATIONS ARE NOT LIMITED BY THEIR LANGUAGE
They are limited by queries without indexes, requests in loops, and algorithms scaling badly. Changing language does not fix a slow application.
Where performance genuinely matters, use a fast language for that part, not the whole system.
LIMIT HOW MANY LANGUAGES ARE IN USE
Each is a permanent commitment to expertise, tooling and maintenance. Require a reason and an accountable owner before adding one.
NEVER IMPLEMENT THE SAME BUSINESS LOGIC IN SEVERAL LANGUAGES
The implementations diverge, and the difference becomes a bug. Implement once and expose it as a service.
Avoid sharing a database between services — the schema becomes a dependency nobody can change.
PIN THE LANGUAGE VERSION IN THE PROJECT, AND PLAN UPGRADES BEFORE SUPPORT ENDS
An unmaintained dependency is what usually blocks an upgrade. Identify it early.