¿Cuáles son los criterios más importantes al seleccionar un lenguaje de programación para el backend de un sitio web?

Al igual que con todas las preguntas que comienzan con “qué lenguaje de programación …”, la respuesta comienza con “Depende …”. Depende de cuál sea su propósito de preguntar (averiguar qué aprender para hacer algo, o averiguar qué aprender para conseguir un trabajo, o averiguar a quién contratar para construir un sitio web, etc.). Una vez que aclare eso, depende de las consideraciones económicas / de mercado, de la naturaleza del sitio web, de la escala de rendimiento y tráfico que necesita, la escala de complejidad en la base del código y, en cierta medida, los tipos de características que desea (algunas características son más difíciles de codificar en algunos idiomas y en algunas plataformas).

Por consideraciones de mercado. Un idioma con el que esté familiarizado es obviamente una ventaja, pero si está hablando de contratar el trabajo realizado en lugar de hacerlo, resulta “un idioma en el que puede contratar fácilmente personas para trabajar”, es decir, qué tan grande es el grupo de talentos para ese idioma en su área.

Una pregunta similar y relacionada es dónde se venderá el trabajo, a quién, etc. Si solo lo hace por usted mismo, entonces esto no importa. Si está tratando de decidir dónde invertir su tiempo de aprendizaje para que sea más comercializable, sí importa. Si planea vender un servicio, probablemente no importe, pero si está construyendo un producto (especialmente para el mercado empresarial o para cualquier mercado en el que es probable que el cliente quiera hacer mucha personalización) Podría hacer una gran diferencia.

Para los factores más prácticos, en última instancia, PUEDES hacer casi cualquier cosa en casi cualquier idioma (siempre que Turing esté completo), pero eso no significa que DEBERÍAS (o quieras).

Los lenguajes populares para el trabajo de back-end web son PHP, Java, Ruby. En los últimos años, Python ha comenzado a ser más popular y los chicos geniales han estado haciendo mucho Javascript de back-end (node.js y similares).

Por ejemplo, PHP es un lenguaje desordenado, inconsistente y a menudo poco elegante, pero hace el trabajo bastante bien para sitios web de tamaño moderado (donde “moderado” puede ser una gran cantidad de usuarios, dependiendo de lo que esté haciendo para cada usuario)

En el otro extremo, PHP también se puede usar para sitios web muy grandes y de muy alta escala, si sabes lo que estás haciendo y tienes las herramientas y la infraestructura adecuadas. Facebook, por ejemplo, usa mucho PHP. Pero probablemente el 90% de los programadores de PHP no tienen el conocimiento y la experiencia para hacer ese tipo de trabajo. Esto no es una reflexión sobre PHP o sobre los programadores de PHP, sino más bien sobre la probabilidad de que cualquier proyecto PHP se realice a ese tipo de escala.

Sin embargo, esta no es una propuesta de todo o nada. En un extremo, tiene un único servidor apache con php y una base de datos. En el otro, tienes una loca infraestructura a nivel de Facebook. En el medio, puede hacer cosas inteligentes con el diseño de su software, lo que facilita el procesamiento de solicitudes a través de múltiples front-end de apache a un servidor de base de datos central al hacer el trabajo sin estado. Puede usar una herramienta como memcache para hacer una caché compartida y reducir la carga de la base de datos. Puede hacer cosas inteligentes con la arquitectura de la aplicación en sí misma para que sea más fácil agotar la carga en los servidores, etc.

Del mismo modo, los mundos java, ruby, python y back-end javascript tienen sus propias estrategias, plataformas y herramientas de infraestructura para este tipo de cosas.

Depende de muchos factores, incluido el alcance, los plazos, los planes para la expansión futura, su equipo y su experiencia, un conjunto de requisitos no funcionales (como la seguridad, la escalabilidad, el rendimiento, etc.). Esos factores lo guiarán a seleccionar este o aquel idioma dependiendo de las plataformas que los soporten, las bibliotecas / marcos disponibles para esos idiomas que facilitarán su desarrollo, etc.

Consideraría el problema no solo desde la perspectiva de la selección del idioma, sino también desde el punto de vista de la selección de plataforma y tecnología.

Lo principal aquí en mi opinión no es ir con lo que está de moda, sino ir con lo que es adecuado para el problema particular en cuestión.

Herramientas para el trabajo … ¡NO!

Si tiene más de 5 años de experiencia con cualquier idioma, úselo. Es más importante poder expresarse bien en un idioma que tener que usar el idioma perfecto para el trabajo.

No convierta un proyecto de calidad de producción en una plataforma para aprender un nuevo idioma.