At my last job, the management greenlighted a full rewrite in Kotlin in order to attract/retain developers bored with Java and Python. The actual business project was boring since all the important design work was already finished by the architect. No language rewrite, no interested devs. So management made a quiet trade with ICs where everyone got what they wanted at the cost of future maintenance.
I learned that social whims (developer fun, preferences , dopamin) are weighted as much as technical rationales (performance, maintenance)
Initially, Kotlin attracted mid-level folks to transfer. I recall a roaming staff engineer who lead the project for a bit, and then wisely rotated outside of the org.
Long-term, the folks who remain are stuck and unhappy. The business got what it needed and moved on, leaving a system half in maintenance-mode, half feature-complete. Any Kotlin-only changes are mostly just bug-fixes or glue work with other team's SDKs. Any new features carry a lot of risk because the few people motivated to drum up new business (and write up requirements) left or quiet-quit.
In a weird way, the project naturally selected for people who would get stuck maintaining the artefacts of the project. It's a paradox that I can't fully comprehend.
On the contrary. The fact that there are two languages that “coexist” means that now we can have politics. The same would not be true if the choices were Java and, say Go, because then it’s a complete rewrite. There would still be the possibility of politics but the engineering decision would be so one sided as to make it difficult to leverage. With Java vs Kotlin, disingenuous folks pretend they are the same thing.
I learned that social whims (developer fun, preferences , dopamin) are weighted as much as technical rationales (performance, maintenance)