La guerra de los frameworks y lenguajes

Enviado por Juan el Vie, 29/06/2018 - 11:46
Frog working with a wrench

Hace poco estaba en una conversación con algunos colegas y apareció esa famosa pregunta que a todos los programadores nos aqueja en algún momento de nuestras carreras: ¿Cuál es el mejor lenguaje o el mejor framework? ¿Hacia dónde debería encaminar mi preparación? ¿Debería especializarme en X o en Y? ¿Y si mejor tiro todo por la ventana y me dedico a otra cosa?

Sí, esta pregunta puede ser abrumadora y la cuna de innumerables desastres: desde tribulaciones profesionales en tu interior hasta enfrentamientos dignos de un yihadismo tecnológico (y si no me creen, enfrenten a los Javeros con los PHPeros). Yo mismo me he preguntado esto desde tiempos memorables y a veces pareciera que nos queremos encontrar con el Santo Grial de la programación, pero ahora soy más consciente de la naturaleza de esta pregunta y decidí compartir aquí mi punto de vista, visto desde las tecnologías que yo mismo he utilizado.

¿Puedes clavar un clavo con un desarmador?

Seguro que sí, ¿pero no sería más fácil si lo haces con un martillo? También hay casos donde se volvería más difícil la misión: ¿podrías apretar un tornillo con el mismo martillo? La misma analogía se puede aplicar a los frameworks y lenguajes de programación; según el objetivo que quieras lograr, te podría convenir más utilizar uno u otro. Mi criterio para elegir la tecnología de back-end para desarrollar un proyecto web se basa en tres criterios:

  1. Robustez del proyecto. Si se trata de un sistema de dimensiones corporativas, mi elección sería Java por mucho. Su máquina virtual te permite tener control sobre características más avanzadas del sistema (como el multithreading) y su API es una navaja suiza cargada con suficientes clases y funciones para implementar estructuras de datos y patrones de diseño que aportan al desarrollo. Java puede mostrar desde una página web hasta una aplicación para circuitos electrónicos, y justamente en esa versatilidad radica su desventaja: te puede requerir una letanía de instrucciones para lograr algo muy sencillo.
  2. Tiempos de entrega. Si la prioridad del proyecto es subir al DeLorean y entregar un sistema para ayer, la opción es Laravel. Tengo poco tiempo utilizando este framework y me ha sorprendido la rapidez con la que puedes obtener resultados. Justamente esta es la razón por la que muchas startups le apuestan a este framework; al ser empresas que requieren capitalizarse lo más rápido posible para sobrevivir en el mercado (contrario a una trasnacional de consultoría que ya está consolidada), pueden encontrar en Laravel una excelente herramienta para terminar más rápido sus proyectos. Si apenas se trata de un sitio web sencillo, Drupal o incluso Wordpress (para algo MUY sencillo) pueden resultar las mejores opciones.
  3. Infraestructura. En caso de tener ya establecido el espacio donde se desplegará el proyecto, la infraestructura también puede ser un factor determinante para elegir la tecnología a emplear. Por ejemplo, existen servicios de hospedaje para PHP y MySQL que pueden ser económicos y muy fáciles de administrar. En cambio, para una aplicación web Java se necesitará una solución más compleja que permita implementar un servidor de aplicaciones como JBoss o Tomcat.

En gustos se rompen géneros

Esta premisa también aplica para la elección de lenguajes y frameworks. Los ejemplos que acabo de mencionar se refieren al back-end para el desarrollo en web, pero un criterio de selección universal (¡y muy importante!) es qué te gusta: qué tipo de lenguajes, qué sistemas operativos, qué tipo de plataformas.

Si tu enfoque está en el desarrollo de front-end ahora te tendrás que debatir entre frameworks como React, Angular y Vue.js; si prefieres el desarrollo de móviles habrá que elegir entre Java para Android y Swift para iOS, por ejemplo. Este tipo de decisiones tiene que ver más con los intereses que tengas para tu desarrollo profesional y tienes que escoger siendo consciente de que tu elección habrá sido la correcta.

Otro ejemplo clave de este escenario es que, si de nuevo tuviera que desarrollar aplicaciones de escritorio para Windows como hace quince años, mi primera opción sería C#, y es que la integración de Visual Studio con el lenguaje y el sistema operativo es una completa chulada.

Jack of all trades, master of none (but oftentimes better than master of one)

Mi amigo y colega Israel Morales me pasó esta frase un día que le platicaba mis preocupaciones con respecto a especializarme en algún lenguaje y framework en particular; se utiliza para describir a alguien que domina varios campos aunque no se especializa en uno, y en el entorno práctico, ser multifacético también tiene sus ventajas. La anexión del but oftentimes better than master of one implica otro grado de compromiso en el que, aunque no seas el número uno en cada herramienta que dominas, sigas destacando sobre el todólogo promedio.

Parte de las habilidades de un buen programador consiste en identificar la mejor alternativa para cada caso, y esta puede ser una combinación de opciones al final del día. Por ejemplo, recientemente trabajé en un proyecto desarrollado en PHP que requería procesos más complicados, para los cuales las librerías requeridas no estaban preparadas para funcionar en PHP 7.2. La solución fue desarrollar un módulo con Java/Spring e integrarlo a la plataforma principal.

Dicho esto, sea mediante la especialización o no, el objetivo debe ser la actualización permanente y rescatar lo que nos sea útil de los demás enfoques.