Consejos al elegir un lenguaje de programación o framework

Cuando comenzamos un proyecto es fundamental elegir bien el lenguaje de programación o framework que vamos a utilizar para desarrollarlo.

Esta acción de elegir la plataforma, que parece sencilla y no lo es, en el futuro será la que nos provocará más o menos problemas según lo acertada que fue nuestra decisión.

En mi caso siempre me hago una serie de preguntas para tomar esta decisión, evitando apresurarme para luego no tener que lamentar nada.

Elegir un lenguaje de programación o framework

Dominio del lenguaje

No tiene sentido encarar un proyecto nuevo utilizando un lenguaje que apenas dominamos. Es preferible demorar el proyecto mientras aprendemos que hacerlo sobre la marcha. Aprender un lenguaje de programación no lleva demasiado tiempo, sin embargo dominarlo si, inclusive años.

El dominio del lenguaje es fundamental. También tener este control nos da confianza para solucionar los problemas venideros.

Si están comenzando con un lenguaje de programación aprendan lo suficiente para embarcarse en un proyecto serio. Nunca se termina de aprender todo pero es necesario tener la confianza suficiente para trabajar de forma cómoda.

Si tomamos el domino del lenguaje como variable las opciones se reducen considerablemente.

Comunidad del lenguaje.

Algo que me parece indispensable es que el lenguaje seleccionado cuenta con una comunidad activa de programadores por todo el mundo. Esto que no parece importante lo es y mucho. Rara vez no tendremos alguna duda o problema cuando escribamos un proyecto y sin una comunidad activa encontrar una solución puede volverse algo muy agotador.

Entender que lo nuevo no siempre es lo mejor

Por suerte cada día aparecen nuevas tecnologías, todas prometen mejoras y soluciones a problemas viejos, pero saben una cosa, no siempre lo nuevo es mejor. Y este punto es similar al anterior, a veces un lenguaje es tan nuevo que los problemas que van surgiendo casi no tienen solución. Otro detalle es que un lenguaje o framework nuevo cuenta con una mayor indice de bugs en sus primeras versiones que en sus posteriores.

Depender de que un lenguaje se actualice para realizar un proyecto no es una decisión inteligente.

Esto no significa decir que no existan fantásticas soluciones nuevas, pero hay que analizar fríamente todo antes de embarcarnos con una plataforma que todavía no esta del todo probada.

Eso si, si analizamos todo, hacemos unas pruebas y los resultados son los esperados, adelante. Que algo sea nuevo tampoco significa que sea malo. Simplemente precaución.

Rendimiento

Con el tiempo aprendí una cosa y es que el rendimiento de un lenguaje de programación o framework se encuentra estrechamente relacionado al programador. Ya saben que no existen malos lenguajes sino programadores que hacen mal las cosas.

benchmark

Hace un tiempo era de leer mucho acerca de benchmarks y demás, sin embargo con el tiempo me di cuenta que estos análisis no siempre son fiables y difícilmente sean 100% ciertos.

Por ejemplo correr PHP sin utilizar un sistema de cache como APC tiene determinado consumo y con cache los resultados cambian totalmente. Este factor rara vez sea contemplado por alguien que hace una prueba de rendimiento del tipo PHP vs X.

La mejor forma de probar el rendimiento de algo es haciendo pruebas.

También me ocurre algo similar con las base de datos noSQL. Muchas personas me hablan de que son magnificas sin embargo MySQL bien configurado tiene un rendimiento excelente. Entonces llego al punto de no necesitar usar una solución noSQL.

Se me ocurren muchísimos ejemplos más y de seguro muchos programadores que lean estas lineas tendrán configuraciones de batalla para optimizar sus códigos.

Recursos disponibles

¿Nunca encontraron un programa fantástico pero se dieron cuenta que los recursos de su sistema eran insuficientes?

Esto me paso algunas veces, sobre todo con bases de datos, a veces las soluciones optimas se salen del presupuesto, así de sencillo. Quizás lo óptimo sea dedicar X cantidad de Gigas a la cache de MySQL pero no podemos afrontar ese gasto, entonces debemos utilizar otra solución. Todas estas preguntas son importantes, reconozco que muchas son muy difíciles de responder sin hacer pruebas exhaustivas, sin embargo algunas podemos prevenirlas evaluando algunos puntos.

No olviden nunca este factor, al menos que tengan un presupuesto enorme, algo que rara vez sucede.

Mantenimiento

La pregunta que se deben realizar es ¿es fácil mantener este código?

Es algo que no siempre nos preguntamos y es muy importante para evitar quebraderos de cabeza. En determinados escenarios no es fácil mantener actualizado un sistema, parece mentira pero no lo es, ¿nunca trabajaron con una plataforma que cuando actualiza a una nueva versión implica que tengamos que reescribir muchas lineas de código? yo si, y les aseguro que no es nada lindo.

Cuando estamos pensando en elegir un lenguaje de programación es fundamental evaluar si el mantenimiento será sencillo, si con cada actualización tendremos que modificar muchas cosas. Para saber esto no hace falta más que mirar el logs de cambios.
jQuery es un buen ejemplo de esto que les digo. Cada vez que el framework se renueva tendremos una muy completa documentación para saber que funciones pasan a la historia, cuales son las mejoras y demás. Esta clase de documentos facilitan muchísimo la vida del programador, inclusive de cara a mejorar el rendimiento de nuestros proyectos.

Herramientas adicionales

¿Alguna vez tuvieron la mala suerte de tener un memory leak? Si comparten conmigo esa desgracia saben de la importancia de tener buenas herramientas de auditoria a mano. Cuando pensamos en un lenguaje de programación hay que evaluar todo su universo y parte importante de él son las herramientas disponibles.

Una buena elección del lenguaje de programación viene de la mano de una evaluación de herramientas disponibles.

Proveedores disponibles

Este punto esta pura y exclusivamente orientado a desarrolladores web.

Cuando elijan el lenguaje de programación o framework verifiquen que la empresa de alojamiento tenga un buen soporte. Por ejemplo si eligen Ruby on Rails revisen que el soporte sea el adecuado. Muchas veces las empresas de alojamiento demoran mucho con las actualizaciones y si el control que tenemos de nuestro servidor es muy limitado no tendremos opción mas que mudar nuestro proyecto hacia otra empresa con las actualizaciones al día.

Rara vez, por no decir nunca, la empresa de hosting actualizará alguna versión por el pedido de unos pocos usuarios. Y mejor ni hablemos si la actualización que estamos requiriendo aún no esta liberada como estable.

No verificar el soporte es un problema a futuro, por lo tanto cuando elijan un lenguaje busquen una impresa que tenga integrado al 100% la plataforma con su servicio.

Oferta laboral

Nunca hay que olvidar que un buen proyecto crece y con dicho crecimiento las necesidades de expansión.

Cuando elijan una plataforma verifiquen si existe una oferta laboral cualificada disponible y si es accesible económicamente hablando. Rara vez un proyecto grande cuenta con un solo programador y si el día de mañana debemos agrandar nuestra plantilla que esto no sea un problema.

Bibliotecas disponibles

Recurrir a bibliotecas escritas por otras personas puede ser una buena o mala idea. Si la biblioteca esta probada por miles de usuario lo más probable es que no tengamos problemas y evitemos consumir el tiempo de escribirla nosotros mismos.

Una biblioteca popular se actualiza, soluciona bugs y nos permite desligarnos de escribir determinada tarea. En jQuery tenemos los plugins, en Ruby on Rails las gemas, en PHP completas bibliotecas escritas por miles de personas, todos aspectos que facilitan considerablemente nuestra vida.

Estos son algunos factores que considero importantes, de seguro hay muchos más, los invito a dejar un comentario hablando sobre ellos 🙂