
Esta idea la tengo en la cabeza desde hace mucho tiempo, cuando leía y escuchaba a otros programadores, algunos incluso más viejos decir que ellos utilizan las mejores herramientas para un proyecto determinado. Que de cierta manera no existe una mejor herramienta, sino que una mejor herramienta para un problema determinado. Y este consejo o cita, en mi opinión no ayuda mucho a decidir qué es lo mejor o qué debieses aprender.
Antes de comenzar, puedes leer este post o ver y escuchar esta información en formato de video en nuestro canal de Youtube, te dejamos el link por si prefieres este formato. 😃 👍
Hola mundo y bienvenidos a este post. El consejo de utilizar la mejor herramienta para resolver un determinado problema es cómo el consejo para tener citas con otras personas, «solo sé tú mismo», y no encuentro que esto ayude mucho, sobre todo a los más nuevos. En este post me gustaría compartir mi pensamiento sobre cuál es el mejor mejor lenguaje o framework para resolver un problema en particular poniendo algunos ejemplos sobre la mesa. Y en mi opinión, el mejor lenguaje de programación que existe y el mejor framework que existe es… ninguno.
Y yo creo que este tipo de respuesta ya la veías venir, por lo que quiero extenderla ahora a cuál es la mejor herramienta para resolver un determinado problema. Que esto seguramente lo debes haber leído en más de algún foro o grupo, utiliza la mejor herramienta para resolver un problema. Y yo pienso que no existe una mejor herramienta, sino que existen muchas mejores herramientas.
Microcontroladores

Pongamos como ejemplo los microcontroladores. Estos en un comienzo solo aceptaban el lenguaje de programación assembly. Por lo que el «mejor» lenguaje para programar en microcontroladores era, en ese entonces, assembly. Sin embargo, eso ha ido cambiando con el tiempo, hoy puedes encontrar microcontroladores que aceptan C, Python o incluso JavaScript. Ahora, si Python es el lenguaje más demandado, ¿significa que solo debieses elegir microcontroladores con python? Yo creo que no, puedes seguir programando microcontroladores en C, assembly o JavaScript.
Desarrollo móvil
¿Lo mismo ocurre en el caso de hacer desarrollo de aplicaciones móviles, si vas a construir una aplicación para iOS existen varias alternativas, tienes React Native, Flutter, Swift y objective-C. Alguna de estas es mejor que la otra? No, si pienso que tienen fortalezas y debilidades. Cuando construyes en React Native debes utilizar JavaScript,tiene live reload lo que significa que puedes ver los cambios en tiempo real y como se encuentra construido en JavaScript puedes compartir el código fuente de la aplicación con una aplicación web, cuando lo haces en Flutter debes utilizar Go además que tiene varias herramientas de interfase gráfica que hace que construir aplicaciones en Flutter sea más fácil, y en el caso de desarrollo nativo puedes optar por Swift y objective-C, los cuales van a tener un desempeño mayor que las otras alternativas que te mencione, pero siempre que entiendas bien cómo funciona la arquitectura de iOS.


Cada una de estas tecnologías tiene fortalezas y debilidades, y para el 90% de las aplicaciones móviles que se vayan a construir, creo que podrías elegir cualquiera de estas tecnologías y el éxito del proyecto no va a depender de la tecnología, sino de cómo se gestiona el proyecto. Podrías utilizar una tecnología mala, pero si el proyecto se gestiona bien, este tiene muchas más posibilidades de tener éxito que si se elige la «mejor tecnología» para el caso, pero con una mala gestión del proyecto.
Pero es importante mencionar que para ese 10% restante de aplicaciones que se van a construir, si va a hacer una diferencia significativa elegir bien la tecnología, si vas a hacer un videojuego, lo mejor no sería utilizar react native o flutter. Pero eso lo que hará será introducirnos al mundo de las tecnologías de videojuegos, donde existen muchas librerías y frameworks. Y todas estas herramientas no aportarán un valor significativo a la hora de medir si el proyecto tendrá éxito o no. La gestión del proyecto siempre va a tener mucho más peso a la hora de tener éxito.
Desarrollo Web
En el caso del desarrollo de aplicaciones web ocurre algo similar, si necesitas construir un backend tienes muchas muchas opciones, tienes NodeJS, Ruby, PHP, python, java, scala, haskell y estas son solo algunas de las que se me vienen a la cabeza en este momento. Si tomas a expertos en los distintos lenguajes, todos van a darte múltiples razones de por qué su lenguaje es mejor que el otro. Y todos van a tener razón. Y al momento de medir el éxito que tiene una aplicación, el lenguaje en el cual se construyó va a ser poco relevante comparado con las decisiones que se tomaron en cuanto a la gestión.



Con este análisis que hago quiero darte a entender que existen muchas mejores herramientas para resolver un problema y no existe una única mejor herramienta para un determinado problema. Por eso existen múltiples frameworks para el desarrollo de frontend así también como múltiples lenguajes, y lo mismo ocurre en el backend, microcontroladores y etc etc.
Experiencia y tiempo de desarrollo
Luego de esto, quiero decirte que si existe un mejor lenguaje o un mejor framework para resolver un problema. Pongamos como ejemplo que existe un desarrollador experto en Python y tensor Flow, y tienes el juego mortal kombat, y necesitas enviar comandos al juego basados en los movimientos que haga el usuario, para esto vas a utilizar la webcam y un poco de machine learning. Incluso si el desarrollador tiene conocimientos en otros lenguajes como nodeJS y tensorflow.JS, sería contraproducente crear la solución en otras tecnologías que no sea Python y Tensorflow, ya que al convertirte en un experto de estas tecnologías tú ya sabes cómo se resuelven ciertos problemas de la mejor manera, cosa que no ocurrirá con herramientas con las que el desarrollador no sea un experto. Esto mismo ocurre si el desarrollador es experto en NodeJS y tensorflowJS, sería contraproducente resolverlo con Python y Tensorflow.
Algunos podrían contraargumentar que el desempeño de uno es mejor que el otro, pero eso tampoco es relevante. Déjame expresarme un poco más con este punto, cuando empiezas a construir una aplicación es importante priorizar que esta sea fácil de leer y mantener por otros desarrolladores, y esto en un comienzo prioriza más la velocidad de desarrollo, o sea poder crear nuevas funcionalidades en menor tiempo.
A medida que la aplicación empieza a crecer a esta le toma más tiempo agregar nuevas funcionalidades, a desarrolladores con menos experiencia les tomará más tiempo entender la base de código y realizar cambios será más difícil, y los cambios, sobre todo en etapa temprana de desarrollo, es lo que más se debe hacer porque la prioridad es buscar un market fit y no optimizar funcionalidades que no deben ser optimizadas. Por lo que dedicar tiempo a optimizar para velocidad, sobre todo en una etapa temprana, haría que la velocidad de desarrollo disminuya por la complejidad que se empieza a agregar. Y, las aplicaciones cuando se están creando necesitan primero funcionar, y cuando estas empiezan a tener problemas de rendimiento en ese caso es mejor solucionar solo la parte donde se está teniendo problemas de rendimiento.

Otra cosa que se debe considerar, hay muchas herramientas que cuando se construyeron no sabían exactamente qué es lo que iban a construir, en el caso de Flickr esta herramienta fue construida como una herramienta para Game Neverending de la empresa Ludicorp el cual era un videojuego multijugador masivo online, y fue entonces cuando se dieron cuenta de que la tracción que tenía Flickr era mucho mayor a Game Neverending, por lo que decidieron pivotear y destinar los esfuerzos a Flickr.
En el caso de Twitter cuando este se construyó su versión inicial, se hizo en Ruby on Rails, y luego de pasado el tiempo se dieron cuenta de los problemas que tenían, y luego de analizar todos los problemas decidieron migrar la plataforma a Scala. Por lo que debes también considerar que no sabrás con exactitud qué es lo que vas a construir. Por lo que en estos casos es mejor tener una herramienta lo suficientemente versátil como una leatherman o navaja suiza.

Estas herramientas te permiten cortar, atornillar, algunas hasta martillar, pero te da la sensación de qué… como no son herramientas especializadas, que cumplen con la función, pero que existen otras herramientas mejores. Si le preguntas a un carpintero qué herramientas va a necesitar y le das como opciones el martillo, serrucho y alicate… te dirá que no sabe, que probablemente todas. Pero no será hasta que sepa qué es lo que se tiene que construir para que pueda decirte qué herramienta utilizar. El desarrollo de software, sobre todo en emprendimiento y el mundo de las startups, son contadas las veces que se sabe con certeza que se construirá. Por lo que utilizar una herramienta con la cual te sientas más cómodo y que te permita resolver muchos problemas quizá no de la mejor forma como una leatherman, te ayudará a poder crear tu pequeño frankenstein, y luego de eso determinar con mayor exactitud qué vas a construir y por ende qué herramientas necesitas para la solución específica.
¡Elige tu lenguaje y comienza a desarrollar!
A lo largo de este post te hemos mencionado por que ningun lenguaje o framework es mejor que otro, te dejaremos algunos post con los que podras leer las ventajas de algunos lenguajes, librerias y frameworks:
- Los 7 lenguajes de programación más fáciles para aprender.
- Los lenguajes mejor pagados del 2022.
- Los 5 mejores lenguajes para aprender.
- 7 razones para aprender JavaScript
- 7 razones para programar en React
- ¿Qué es python y para qué nos sirve?
Si quieres aprender a programar con algunos lenguajes como JavaScript, su librería React o Python, te dejamos el link a la Academia de Hola Mundo donde podrás aprender sobre diferentes tecnologías.
Y esto ha sido todo de este post, Si te ha encantado, ¡golpea al botón de me gusta!, no olvides suscribirte a este blog, seguirnos en todas las redes como Youtube, Twitter e Instagram y por último, te invitamos a escuchar nuestra música «Hola Beats» diseñada para ayudarte a concentrarte y acompañarte en tu aprendizaje o trabajo, estamos en Spotify y en Apple Music.
¡Hasta la próxima!, y chao mundo
Comments (1)
Ruta para comenzar a programar con Hola Mundo – Hola Mundosays:
abril 20, 2023 at 12:33 pm[…] ¿Cuál es la mejor lenguaje y framework para programar? […]