Todos los desarrolladores de software, no importa en que sector trabajemos, todos tenemos lenguajes de programación favoritos o lenguajes que preferimos por encima de otros, ya sea porque muchas de estas son muy divertidos de usar, otras porque son las que nos enseñaron en algun bootcamp, universidad o fue el primero que aprendimos, y otros porque simplemente son muy bien pagados.
Así que en este video les mencionaré mis lenguajes y herramientas de software favoritos como desarrollador de software en general, es decir les mencionare algunos lenguajes y frameworks dedicados a aplicaciones web Fullstack, otro aplicaciones moviles, aplicaciones de consola, aplicaciones de Red o Backend y asi. Porque hay lenguajes que brillan mucho que otros en algunas areas, asi que ciertas veces es una buena idea escoger el mejor lenguaje para hacer un mejor trabajo.
Empecemos.
Typescript para Desarrollo Web FullStack
Ok no es sorpresa para muchos de ustedes saber que, uno de los lenguajes que más uso sea Javacript, de hecho casi la mayor cantidad de contenido que creo en el canal es de Javascript, Nodejs y herramientas basadas encimas de esta como React, Nextjs, Nestjs, y asi.
Ahora Javascript es el lenguaje base de la web, pero en particular el lenguaje que más uso en proyectos reales, es Typescript, la razon es simple, Si eres un solo desarrollador y con un solo lenguaje quieres crear el Frontend y el Backend, iras por Javacript, pero si quieres tener un entorno muy productivo de desarrollo, donde puedas encontrar Bugs al momento de desarrollar y no cuando tu cliente esta probando la aplicacion, es posiblemente que escogeras Typescript.
Y en realidad no es que tengas que escoger entre Javascript o Typescript, sino que sabiendo Javacript despues de dominarlo, puedes actualizar tus proyectos a Typescript, lo que significa que pueddes extender todo lo que conoces de Javascript más nuevas herramientas y paquetes.
Y bueno las ventajas que te da el usar Typescript es:
- Usar un lenguaje de tipado estatico, que a medida que vas escribiendo ya te esta dando errores de cosas que a veces no notamos. De hecho el tener estos errores que son molestos ayudan a que tu tengas las molestias y no tus clientes, ademas qu hace que estes mas seguro al ser mucho mas explicito con lo que estas escribiendo.
- Tener autocompletado de codigo por parte de tus editores. Como vas a estar escribiendo muchos tipos de datos esto ayuda a mejorar experiencia de desarrollo, es decir es mucho más rapido completar el código ademas que si usas herramientas como Copilot, este autocompletara un poco mejor, al tambien poder leer bloques de codigo con mas informacion, es decir tienes, variables, funciones, clases y demas que estan mejor especificadas.
- Tienes un proceso más de revision. Typescript evalua todo tu proyecto en caso quieras estar más seguro de que tu código no fallara en producción. Esto te puede dar más confianza que solo subir tu codigo. En mi caso cada vez que hago un push a master y veo que al pasar el
buildde typescript sin errores, te da un poco mas de tranquiliadas al saber que tu código esta más limpio y esta más seguro con solo pasar ese proceso. claro eso sino tienes el modostrictdesativado o si evitas usaranypor todos lados.
Y todo hace que cuando tengo la tarea de crear un proyecto grande y lo tengo que hacer solo o la mayor parte del trabajo solo, uso frameworks que hacen uso de Typescript como lenguaje, como Nestjs para el backend, Nextjs para el frontend, o React Native para la aplicacion movil, o Nodejs, o React, en donde es posible usar Typescript comunmente, ademas que he conocido muchas mas cosas de Javascript al forzarme a aprender realmente los tipos de datos en mas profundidad.
Python para Machine Learning
Quizas muchos o casi todos ustedes ya lo saben, pero si Python de por si es un lenguaje popular, lo es mucho más en el mundo del Machine Learning y la ciencia de datos, de hecho asi como Javascript tiene una enorme cantidad de paquetes, frameworks y modulos para la web, Python tiene una cantidad inmensa de paquetes de Inteligencia artificial, de hecho desde el 2023, cuando se populario los proyectos de IA gracias a ChatGPT, muchos proyectos open source que ya venian desarrollandose otros años tambien ganaron notoriedad, y la gran mayoria de estos usaban Python como lenguaje de programacion.
Y Actualmente webs como Hugging Face, o replicate tienen muchos modelos abiertos de Inteligencia artificial que podemos usar para transformar texto a imagenes, crear videos con prompts, trasnscribir audio, y mucho mas, que estan escritos en python, por lo que si quieres aprender como funcionan estos por debajo encontraras su codigo en estse lenguaje.
Y de hecho, escoger Python para machine learning o ciencia de datos viene en gran parte a los módulos producidos que existen actualmente como PyTorch, TensorFlow, y una variedad de otros paquetes de Python que sirven para tareas específicas como manipulación de datos (pandas), visualización (matplotlib, seaborn), procesamiento de imágenes (OpenCV), y una amplia gama de herramientas de preprocesamiento y modelado estadístico (scikit-learn), o LangChain para poder ejecutar multiples modelos Inteligentes. Lo que quiere decir que es mucho más fácil crear un proyecto de IA en este lenguaje.
Y no es que sea muy complicado usar estos modelos, por supuesto todo lleva su estudio, pero si entran en webs como Hugging Face y ves los ejemplos, muchos de estos ya te dan la guiara para simplemente descargar el proyecto y empezar a probarlo en tu computador o ejecutarlo en la nube con una API.
Ademas que como el lenguaje tambien se puede usar para desarrollo web backend tambien estos modelos pueden exponer una API facilmente con modulos como Flask, o FastAPI, para poder integrarse con otros lenguajes o Framework web frontend, lo que quiere decir que si a futuro una empresa te contrate para desarrollar una web con alguna funcionalidad inteligente, puedas usar Python para rapidamente implementar estas caracteriticas y añadirlo a tu Stack de lenguajes que uses.
Aunque por supuesto Python tambien tiene otros usos en desarrollo web Tanto es así que este lenguaje su comunidad quiero permitir usarlo en mucho más como para desarrollar aplicaciones frontend con Frameworks como Flet, Reflex o aplicaciones multiplataforma usando Flet, y estoy seguro que seguiran apareciendo.
Todo esto hace que escoga a Python por encima de otros lenguajes como R, cuando se trata de funcionalidades inteligentes, ademas que es uno muy simple de aprender.
Dart para desarrollo de apps moviles con Flutter
Cuando hablamos de desarrollar aplicaciones moviles siempre se menciona a Swift para crear apps en iOS, y a Kotlin o Java para crear apps en Android, sin embargo, cuando hablamos de desarrollo de aplicaciones moviles multiplataforma, hay dos eternos rivales: React Native por parte de Javascript y Flutter por parte de Dart.
Y ambos de hechos tienen comunidades muy grandes, React Native su comunidad esta activa ya que React de por si es una biblioteca muy popular sino la mas popular para crear aplicaciones web, y muchos desarrolladores web entran al desarrollo movil por React Native, y Flutter porque de cierta forma tambien esta inspirado en React, pero soluciona muchos problema que tiene React native y le añade una experiencia de desarrollador placentera.
Auqnue si tuviera que escoger entre ambos, en lo personal me voy por Flutter si solo tengo como tarea crear la aplicacion movil, esto es debido a que la experiencia de desarrollo en Flutter es mucho más comoda y rapida que en React Native.
Ademas que Dart como lenguaje en realidad no estan distinto de Javascript de hecho la idea era que Dart reemplace a Javascript en cierto punto, pero esa es otra hitoria que ya he tratado en otro video.
El asunto es que desarrollar con Flutter es mucho más comodo que React Native porque tiene herramientas que responden más rapido cuando se desarrolla, las aplicaciones moviles pesan mucho menos, y las actualizaciones que recibe por parte de Google, son muy frecuentes, ademas que su comunidad es grande y continua creciendo y creando paquetes enfocados en desarrollo movil, lo que lo vuelve un framework estable al haber muchas empresas que dependen de este framework, la escritura de codigo tambien esta inspirado en los componentes web que poseen frameworks como React.
Y al ser un entorno que resuelve muchos de los errores de su competidos, tiende a fallar menos, cuando estas ejecutando un emulador, o ejecutas comandos para lanzar herramientas.
Ahora Flutter tambien de hecho te permite crear aplicaciones web y de escritorio, sin embargo el crear aplicaciones web con Flutter no me parece muy comodo ya que aqui Javascript tiene un ecosistema mucho mas grande, pero aun asi es posible, de hecho hay proyectos como FlutterFlow por ejemplo que es un plataforma No Code que te permite crear webs con componentes de Flutter solo arrastrando y soltando elementos, y configurandolos, y todo en la web, pero si es cierto que estos no son de las mejores opciones para crear proyectos escalables, yo lo usaria solo para crear pequeñas herramientas de software que hacen algo muy puntual, como mostrar datos en una tabla o crear formularios sencillo y asi.
Es decir me gusta usar Dart y Flutter como Framework movil, es muy bueno, pero para desarrollar aplicaciones web ya sea Frontend o backend tambien hay otros lenguajes mejor pensado para esto.
Go para desarrollo web Backend
Crear aplicaciones Backend yo creo que actualmente debe ser de los desarrollos más comodos actualmente para un desarrollador, no solo porque los Frameworks y paquetes no cambian mucho como pasa en el mundo frontend, sino porque hay tan buenas herramientas y frameworks que simplifican mucho el desarrollo de APIs o logica de Backend, por ejemplo en Java esta Spring Boot, en PHP esta Laravel, en Python esta Django, en Javascript esta Nestjs, en C# esta ASP NET Code y asi. Todos estos ofrecen una buena experiencia de desarrollo encima de lenguajes populares.
Pero en mi opinion un lenguaje que es muy placentero de crear APIs mas que en estos frameworks, es Go, no solo porque fue un lenguaje creado para crear APIs o aplicaciones Backend y aplicaciones de Red, sino porque las herramientas de desarrollo, su comunidad, y la empresa que lo respalda hace que sea uno de los mejores lenguajes para crear codigo de Backend actualmente. Este lenguaje fue desarrollado por Google, y este lo usa mucho en produccion en sus productos principales por lo que muchas otras empresas sienten la confianza de usarlo tambien.
El lenguaje posee un tipado estatico, es rapido, es compilado, tiene muchos paquetes enfocados en Backend con el que puedes crear REST APIs, GraphQL Apis, o usar Websockets y gRPC haciendo que tengas no solo un lenguajes que es comodo en desarollo sino que tiene un rendimiento superior a otros lenguajes como Nodejs o Python, y claro no sera tan rapido como C o Rust, pero si es mucho mas comodo usar su sintaxis y entorno en proyectos backend que estos lenguaje, lo que lo coloca en medio de lenguajes rapidos y con una buena experiencia de desarrollo.
Ahora, aunque puedes usar Go con muchos Frameworks y muchas dependencias en Go, el lenguaje esta tan enfocado en crear aplicaciones de Red que muchos usan solo la biblioteca estandar de Go y evitan usar modulos de terceros, lo que ayuda a que un proyecto pueda crecer con el tiempo. Ademas que el lenguaje es una gran opcion en arquitectura de microservicios tambien.
Aplicaciones como Docker, Kubernetes, Terraform y muchas otras herramientas moderna de la nube estan creadas en este lenguaje.
Y como siempre pasa con muchos lenguajes este tambien siempre quieren sacarlo a hacer mucho más es por eso que tambien esta Wails, pero si vas a usar el lenguaje seriamente, el entorno donde mas brilla es aplicaciones Backend y aplicaicones de red, con interfaces de terminal por supuesto.
Bash para herramientas de Terminal
Aunque muchos de ustedes no lo crean, crear aplicaciones de terminal se vuelve un requisito fundamental, ya sea que seas un desarrollador web o un DevOps que trabaje principalmente desde la terminal, ya sea desplegando aplicaciones o creando programas de backend. En mi caso, me he encontrado frecuentemente en la necesidad de crear scripts cuando he tenido que desplegar aplicaciones en servidores Linux. Es común encontrarse con tareas como automatizar backups, ejecutar varios comandos de herramientas como Docker, programas de Python y comandos de terminal al mismo tiempo. Además, la creación de scripts en la terminal es esencial para tareas como la configuración del entorno, la gestión de la infraestructura, la monitorización del sistema y la automatización de procesos repetitivos. En resumen, dominar la creación de scripts en la terminal es una habilidad imprescindible para cualquier desarrollador o administrador de sistemas que busque optimizar su flujo de trabajo y aumentar la eficiencia de sus operaciones.
Es decir, si pasas mucho tiempo usando comandos de terminal en tu día a día, seguramente querrás automatizarlos, y un lenguaje muy bueno para esto es Bash Script. No es un lenguaje complicado, ya que, aunque puedes utilizar otros lenguajes como Python, Go, JavaScript con Node.js, Ruby, C# o Java, y prácticamente cualquier lenguaje de backend, puede llevarte más tiempo crear comandos simples de terminal en esos lenguajes, donde a veces necesitarás paquetes adicionales y demás. En cambio, en Bash Script puedes automatizar todo a medida que vas creando tus scripts.
Así que, hasta el momento, no he encontrado un lenguaje más simple para crear scripts que el propio Bash Script. Este lenguaje es peculiar porque no es muy avanzado; de hecho, ni siquiera soporta el tipo de dato flotante. Sin embargo, al apoyarse en programas de terminal de Linux, es posible crear programas elaborados uniendo múltiples comandos.
Además, como es un lenguaje que lleva muchos años siendo usado para este propósito, existe mucha información y ejemplos que pueden ayudarte a entender más rápidamente cómo realizar determinadas tareas.
Todo esto hace que escoja Bash Script cuando necesito automatizar tareas repetitivas en mi flujo de trabajo diario, especialmente aquellas relacionadas con la administración de sistemas, el despliegue de aplicaciones, la configuración de entornos y la ejecución de comandos en la terminal para que todo esto sea rapido de hacer y ahorrar algo de tiempo a futuro.
Escoge tu mejor herramienta
En fin como pueden ver los lenguajes que uso no solo son los mas populares sino que tambien son muy faciles de aprender, y hasta yo diria divertidos, porque el enfoque de aprender algo para usarlo, es algo que te motiva a seguir aprendiendolos porque creas software con ellos.
Y no siempre escojo estos lenguajes, siempre depende de los requerimientos del proyecto, pero tal cual les he mencionado, si actualmente tuviera que crear solo una app movil iria por Flutter, si solo tuviera que crear un Backend iria por Go, si es un proyecto de ML iria por Python, si tengo que crear aplicacones web fullstack Typescript o si tengo que automatizar comandos o programas de terminal bash es una opcion rapida.
Todo esto hace que estas herrmientas no solo ayuden a hacer un mejor trabajo sino que incluso lo vuelvan divertido porque cada una tiene mejores caracteristicas en estos entorno, asi que te sera comodo usarlos
Pero estos son los mios, asi que si ustedes tienen sus lenguajes favoritos y el porque tambien comentenlo para que otros puedan tomarlo en cuenta y decidirse que lenguaje aprender.