Hay herramientas de programación que son muy importantes de manejar para un junior de forma de lograr crecer profesionalmente. No es necesario que las conozcas todas, lo importante es conocer y dominar aquellas relacionadas con los lenguajes y stacks que trabajas.
Algunas de estas:
- Línea de comando.
- Control de versiones.
- Herramienta de depuración.
- Herramientas de construcción y empaquetado.
- Herramientas de automatización de pruebas.
Línea de comandos:
Es importante que un junior tenga habilidades básicas en línea de comandos para poder moverse por los sistemas operativos y utilizar herramientas de línea de comandos para el desarrollo y la gestión de aplicaciones. Hay muchas acciones potentes que se pueden realizar fácilmente en una línea de comando.
- Comprimir y/o minificar todos los archivos CSS y JS de un proyecto
- Transformar archivos:
- Reducir el tamaño de una imagen con imagemagick en un porcentaje a o una dimensión específica
- Transformar una imagen a webp o avif o cualquier otro formato necesario
- Realizar consultas a API con el comando
curl
- Conectarse a otros computadores via SSH
- Programar tareas para que se ejecuten a una hora en específico o cada cierto tiempo con Cron
- Redireccionar salidas de un programa para ingresar esos valores
Buscar todos los archivos de un tipo dentro un proyecto
Control de versiones:
Es fundamental que un junior aprenda a usar un sistema de control de versiones, como Git, para gestionar el código fuente y colaborar con otros desarrolladores en proyectos. El control de versiones es tan importante que debería ser utilizado incluso cuando se trabaja de forma individual en un proyecto. Git es el sistema más utilizado pero existen otras alternativas como SVN y Mercurial. No recomendaría jamás construir un proyecto sin control de versiones.
¿Qué se puede hacer con control de versiones?
– Revertir un cambio reciente
– Descubrir fácilmente quien ingresó un cambio en un código
– Encontrar quien removió un archivo o eliminó una línea de código
– Crear una rama y trabajar independiente de los cambios que está realizando un equipo de trabajo
– Armar pipelines de deployment
Particularmente con Git y Github es muy fácil colaborar en proyectos opensource o descargarlos y modificarlos para estudiarlos.
Herramientas de depuración:
Las herramientas específicas para depurar dependen mucho del lenguaje o stack.
Para un desarrollador web son muy útiles aquellas incorporadas en los navegadores. Desde el mismo inspector de elementos podemos depurar problemas de posicionamiento de elementos en CSS, problemas de especificidad, tiempo de carga de assets, requests via XHR, así como incluso podemos establecer breakpoints para identificar un problema puntual en un código script de JavaScript.
Otros herramientas muy interesantes para depurar pero específicas del lenguaje son:
- Pry y Byebug: Para ruby
- Nodejs Debugger y ndb (para node)
- PDB, PDB++: Para python
- JDB: Para Java
- GDB: para C, C++
Algunas de estas herramientas se pueden integrar con un editor de código como VSCode de forma de poder obtener una experiencia de desarrollo potente. Adicionalmente algunos IDEs vienen con herramientas para depurar integradas como por ejemplo los IDEs de Jetbrains Rubymine y Webstorm entre otros
Herramientas de construcción y empaquetado:
Estar familiarizados con herramientas de construcción mejora mucho la experiencia de desarrollo. Existen múltiples herramientas para automatizar tareas como la minificación, la compilación de código, la creación de paquetes y la optimización de aplicaciones. Estas herramientas son específicas al stack que se esté trabajando y pueden llegar a tener propósitos muy distintos. Algunas muy famosas son:
- Java: Maven y Graddle
- Javascript: npm, webpack, gulp y grunt
- Python: setuptools
- Ruby: rake
- C y C++: Make y Cmake
- Multiplataforma: Meson
Herramientas para la automatización de pruebas
- Selenium: Selenium es una herramienta de automatización de pruebas de código abierto que permite automatizar pruebas en navegadores web.
- Appium: Appium es una herramienta de automatización de pruebas de código abierto que permite la automatización de pruebas en aplicaciones móviles para iOS y Android.
- Robot Framework: Robot Framework es una herramienta de automatización de pruebas de código abierto que permite la automatización de pruebas en múltiples plataformas, incluyendo web, móvil, escritorio y sistemas embebidos.
- Cypress: Cypress es una herramienta de automatización de pruebas de código abierto que se enfoca en las pruebas de extremo a extremo para aplicaciones web modernas.
En resumen, hay una amplia gama de herramientas de programación disponibles para ayudar a los desarrolladores a mejorar sus habilidades y crecer profesionalmente. Desde herramientas para el desarrollo web hasta la automatización de pruebas, depuración y gestión de versiones, estas herramientas pueden ayudar a aumentar la productividad, mejorar la calidad del código y acelerar el proceso de desarrollo.
Sin embargo, más allá de las herramientas, lo más importante para el crecimiento profesional de un desarrollador es mantener una actitud de aprendizaje constante y estar dispuesto a adquirir nuevas habilidades y conocimientos. Al adoptar un enfoque de aprendizaje continuo y aprovechar las herramientas adecuadas, los desarrolladores pueden mejorar sus habilidades y avanzar en su carrera profesional de manera efectiva.