¿Cómo se puede determinar el mejor lenguaje de programación para un proyecto más allá de simplemente elegir el conocido por la mayoría de los miembros del equipo?

Bueno, ¿cómo defines mejor?
Definiría el mejor lenguaje como “el que permite que el equipo resuelva el problema más rápido”
Con eso en mente, “el conocido por la mayoría de los miembros del equipo” suena como un candidato líder.

La excepción sería si el equipo conoce un idioma que no se adapta a la tarea en cuestión. Por ejemplo, si el equipo solo conoce Python pero necesita construir algo con requisitos de latencia muy bajos. Pero si ese es el caso, independientemente del idioma, ¿sabe el equipo cómo abordar ese problema?

En la rutina diaria del desarrollo, los lenguajes de programación son herramientas, no fines en sí mismos. El desarrollo de software es un servicio que los desarrolladores brindamos para el negocio, y como proveedores de servicios debemos elegir las herramientas que nos permitan cumplir con nuestros objetivos comerciales de la manera más eficiente posible.

Si codifica algo ahora en un idioma que conoce y resulta demasiado lento, está en un lugar excelente: tiene un software que funciona y ahora puede comenzar el proceso de creación de perfiles y optimización del rendimiento (lo que podría implicar reescribir un puñado de funciones en un lenguaje de nivel inferior).

Si elige un idioma que su equipo no conoce, está buscando inmediatamente una demora significativa antes de comenzar a trabajar con el software y probablemente no será más rápido. En ese punto, todavía tiene que pasar por el paso de creación de perfiles para descubrir dónde el programa es lento.

Hay exactamente dos reglas de optimización del rendimiento que debe conocer.

1) No lo hagas.
2) (Solo expertos) Mida primero, luego optimice, luego vuelva a medir.

[Cortesía de Code Complete].

Intentar elegir un idioma con anticipación en función de cómo creas que funcionará contraviene ambas reglas. Vaya con lo que sabe y solucione los problemas de rendimiento más tarde.

Si su equipo está compuesto por varios programadores, entonces parece probable que al menos algunos de ellos tengan la capacidad de hacer esa evaluación. El proceso debe incluir una evaluación inicial de los requisitos fundamentales (por ejemplo, arquitectura objetivo, criterios de rendimiento). Eso debería reducir el campo de posibilidades a un rango razonable de idiomas elegibles. Asigne a cada idioma una ponderación con respecto a la calidad del producto si el proyecto va a usar ese idioma. A partir de ahí, cree una matriz de programadores frente a lenguajes de programación. Haga algún tipo de evaluación de cuánto podría contribuir cada programador en cada idioma elegible y multiplíquelo por el factor de ponderación para ese idioma. Para cada idioma, sume las contribuciones ponderadas de cada programador. El idioma con la suma más alta gana. Esa es la parte fácil, ya que es bastante objetivo.
La parte difícil es determinar la calidad del producto terminado para cada idioma. Muchos factores intervienen en eso; mucho más allá de la eficiencia del tiempo de ejecución. El mantenimiento del código, el estilo de distribución, la portabilidad, la esperanza de vida, el tiempo de comercialización y probablemente otros factores entran en la fórmula de calidad. Evaluar la capacidad de cada miembro del equipo para contribuir en cada idioma puede ser difícil. Si pocos miembros tienen habilidad en alguno de los idiomas candidatos y si hay algún riesgo real involucrado, considere si el equipo correcto está reunido. No tengas miedo de dejar que eso sea un factor decisivo.
En el camino, evalúe su evaluación original. Si la información nueva cambia el resultado, considere si se merece una repetición.