Trabajar como desarrollador implica lidiar con código, documentación, diagramas y mil pequeñas tareas que, si no se organizan bien, pueden convertirse en un caos. Con los años, he ido ajustando mi flujo de trabajo y he descubierto algunas herramientas que se han vuelto... diría que incluso imprescindibles en mi día a día como desarrollador de software. Vamos, si no las tuviese a mano, trabajaría menos contento.
Visual Studio Code
VS Code es mi editor principal. Lo uso casi para todo: proyectos grandes basados en C/C++/CMake, scripts para pruebas rápidas, para formatear un archivo concreto... La cantidad de extensiones que tiene hace que prácticamente cualquier necesidad quede cubierta. Aquí algunas que realmente marcan la diferencia, para mí:
Clang Format
Mantiene el código consistente entre proyectos, evita discusiones innecesarias y hace que revisiones y merges sean mucho más fáciles. En serio, mucho más fáciles. Además, puedes añadir un archivo .clang-format a tu proyecto y especificar en él cómo quieres que formatee tu código. También recomiendo activar la configuración de VS Code Editor: Format On Save, para formatear el archivo actual automáticamente cada vez que lo guardes. Utilizo la versión 12 ("clang-format-12" en Ubuntu 22.04 LTS).
Sinceramente, no le deseo a nadie revisar un merge entre una rama que está bien formateada, y una que no lo está.
Extensiones de Git
Las que suelo descargar casi siempre en mi IDE son:
- Git Graph: puedes ver todo el historial de commits como un gráfico de las ramas del proyecto. Puedes ver quién hizo qué, en qué rama y cuándo, con colores distintos para cada rama. Además, te permite hacer acciones como merge, rebase, checkout o revert directamente desde la vista gráfica, sin usar la terminal (aunque recomiendo saber hacerlo desde la terminal también).
- Git Blame: muestra dentro del código quién escribió cada línea y cuándo (esto para echar las culpas a un compañero es increíble). También te muestra el mensaje del commit en el que fue incluido; sirve para entender la responsabilidad de una línea o bloque de código.
- Git History Diff: comparar cambios entre diferentes commits o ramas de forma visual. Ideal para revisar código antes de un merge o entender qué cambió en el arreglo de un bug específico.
- Git Merger: te ayuda a resolver conflictos directamente desde VS Code, sin tener que usar comandos complicados en la terminal.
Git Blame es realmente un chivato, en más de una ocasión algunos compañeros y yo nos hemos girado a echarle la bronca a otro. Gracias Git Blame.
Temas coloridos (y muy guays)
Temas como Dracula Theme Official que, además de molar un montón, hacen que distinga mejor los diferentes elementos del lenguaje en el que esté programando. Esto vale oro, y se empieza a agradecer cuando llevas unas cuantas horas empecinado en un código que no funciona. Usa temas que te alegren, quiérete.
| Captura extraída de la página oficial de Dracula Theme |
Atajos de teclado que ahorran mucho tiempo
Quien no conoce a Dios, a cualquier santo le reza. Utilizo estos atajos de teclado de VS Code cientos de veces cada día. Estos son los mejores para mi gusto:
- Ctrl+D: para usarlo tienes que selecionar el nombre de una variable, o solo la mitad, o una condición completa; luego pulsa esa combinación de teclas y se destacarán todas las coincidencias dentro de ese archivo. Hasta aquí es como usar Ctrl+F, sin embargo, con Ctrl+D puedes, además, modificar por igual todas esas coincidencias, pues te permite escribir en todas esas ubicaciones a la vez. Es súper útil cuando quieres cambiar el nombre de una variable dentro de todo un archivo, o cuando quieres buscar cosas concretas rápidamente.
- Ctrl+Shift+F: te permite hacer una búsqueda (incluso con expresiones regulares) dentro de toda la carpeta que tengas abierta en VS Code. Los resultados aparecen ordenados por archivo y subrayados.
- Ctrl+Clic: esto funciona tanto en la terminal como en el código. En la terminal es muy útil para navegar directamente a la línea de código que te haya dado error al compilar, por ejemplo. En el código sirve para abrir la definición o declaración de una función que está siendo llamada, o para ver, si es posible, la implementación de algún método de alguna librería.
- Ctrl+Shift+Arriba/Abajo: esta combinación te permite ampliar la selección de líneas en las que puedes escribir simultáneamente. Esto salva muchísimo tiempo cuando tienes, por ejemplo, 13 variables seguidas declaradas como uint8_t y quieres pasarlas todas a uint16_t. Los novatos perderán minutos valiosos de sus vidas haciendo copy and paste pero nosotros somos unos pros y sabemos que podemos utilizar este comando (o bien Ctrl+D).
Son muchos comandos raros de primeras, así que recomiendo pasar unos minutos en un archivo en blanco haciendo algunas pruebas para familiarizarse. Realmente merecen la pena.
Ubuntu 22.04 LTS y terminal
Sí, me gusta mucho programar en Ubuntu. Es más, no me gusta programar en Windows, y de momento, es lo que hay. Ahora bien, como todo mortal, necesito algunos trucos que me hagan el día a día más cómodo en Ubuntu. Estos son los principales:
Combinaciones Alt + Drag y Alt + Resize
Este par de atajos de teclado y ratón no son nativas del sistema operativo, de hecho las encontré en Ask Ubuntu: "How to set Alt+mouse drag to move the window and Ctrl+mouse to resize the window unity (fresh install of 20.04)". Los dos comandos en cuestión son:
gsettings set org.gnome.desktop.wm.preferences mouse-button-modifier '<Alt>'
gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true
Estas instrucciones nos permiten mover ventanas en Ubuntu manteniendo presionada la tecla Alt y arrastrando con el clic izquierdo del ratón. Puede parecer una tontería, pero cuando estás nervioso programando (que suele ser a menudo por desgracia) tener que apuntar al borde de la ventana para poder arrastrarla puede ponerte entre la vida y la muerte. También sirve para cambiar el tamaño de las ventanas, esta vez con el clic derecho.
Comandos de terminal "find" y "grep"
Utilizo frecuentemente estos comandos con fines de búsqueda. Imprescindibles cuando estás buscando una línea concreta y te da pereza abrir VS Code. Estos son algunos ejemplos:
# Ejemplos con "find"
find ~/proyectos/codio -name "main.cpp" # Busca el archivo main.cpp dentro de la carpeta del proyecto codio
find ~/Documentos -type f -name "*.txt" # Encuentra todos los archivos .txt dentro de Documentos
find ~/proyectos/codio -type d -name "build" # Busca carpetas llamadas build dentro del proyecto
find ~/proyectos/codio -type f -mtime -7 # Encuentra archivos modificados en los últimos 7 días
# Ejemplos con "grep"
grep "void miFuncion" *.cpp # Busca la función miFuncion en todos los archivos .cpp del directorio actual
grep -r "ERROR" ~/proyectos/codio # Busca recursivamente la palabra ERROR en todo el proyecto
grep -v "//" main.cpp # Muestra todas las líneas de main.cpp que no contienen comentarios (//)
grep -n "return" utils.cpp # Muestra las líneas que contienen return y su número de línea en utils.cpp
# Ejemplos generados con ChatGPT ;)Terminator + Zsh
Usar Terminator combinado con Zsh hace que la navegación en terminal sea mucho más cómoda y potente:
- [Terminator] Permite dividir la terminal en paneles con Ctrl+Shift+E (vertical) y Ctrl+Shift+O (horizontal), perfecto para ver logs, correr procesos y probar comandos en paralelo sin tener que abrir 5 ventanas diferentes.
- [Zsh] Facilita alias y simplificaciones de comandos, como "mkdir && cd" -> "take", lo que reduce pasos repetitivos y acelera la creación de directorios y navegación.
- [Zsh] Atajos como "-" para volver a la carpeta anterior automáticamente o "!!" para repetir el último comando escrito hacen que el flujo sea mucho más fluido y natural.
Nano, un editor cutre pero querido
Cuando toca editar algo rápido desde la terminal (como por ejemplo el archivo ".bashrc"), conocer los atajos de nano hace que las modificaciones sean mucho más rápidas y menos propensas a errores tontos. Aunque no es una herramienta muy top, ahorra tiempo.
- Ctrl+O: guardar cambios y salir.
- Ctrl+X: salir del editor.
- Ctrl+K: cortar la línea actual.
- Ctrl+U: pegar la línea cortada anteriormente.
- Ctrl+W: buscar texto dentro del archivo.
- Ctrl+_: ir a una línea específica.
![]() |
| Vista del editor de texto Nano, extraída de su web oficial |
Microsoft OneNote
Recientemente he comenzado a usar OneNote como un espacio "personal" en el que hago apuntes y anoto mis dudas de cara a eventos futuros. Digo personal porque no lo escribo pensando en mostrarlo a compañeros, ni mucho menos a clientes. Me ayuda a mantener mis ideas organizadas y registrar información importante para ponerla en común cuando sea necesario.
Lucidchart
Cuando un proyecto requiere esquematizar información visualmente, esta herramienta es la primera en la que pienso. Es especialmente útil para presentar propuestas de arquitecturas de software a compañeros de forma clara, explicar el funcionamiento de un módulo concreto, etc. Con Lucidchart suelo hacer diagramas de flujo, de clases, de componentes...
Depuración y monitorización
Depurar software y solucionar bugs es, desde luego, un arte. Con el paso del tiempo, y gracias a muchos agobios, uno desarrolla lo que yo llamo el olfato del programador (me lo acabo de inventar). Y, ¿qué es esto exactamente? Saber qué herramienta de depuración usar según el problema que tengas delante.
Lo primero que hago es leer muy bien el error en la terminal y usar la memoria. Esto es ver si con lo que uno mismo conoce, puede solucionarlo al instante: errores de tipado, falta de declaración de cabeceras, y este tipo de descuidos que tiene cualquiera.
Si sigo sin entender qué está pasando exactamente, opto por poner varios prints repartidos por el código, donde yo vea necesario (olfato). He oído varias veces a desarrolladores infravalorando esta opción solo por ser un poco bruta (lo es), pero en mi opinión esto no va de ser elegante, va de solucionar las cosas bien y rápido.
En algunos casos, especialmente cuando hay un fallo de segmento y el software se detiene abruptamente en tiempo de ejecución, salto directamente al debugger de VS Code, a no ser que el último mensaje de la terminal nos dé una pista clara. Con esta herramienta puedo reproducir el fallo y ver cuál es la línea de código responsable.
Además, cuando necesito verificar si algunos paquetes de datos llegan o no correctamente entre diferentes equipos o servicios, utilizo Wireshark. Lo pongo a escuchar en la interfaz pertinente y analizo el flujo de la comunicación, utilizando filtros, en busca de pruebas que indiquen que mis paquetes de datos están siendo recibidos.
Para acabar, algunas manías
- Teclado de perfil bajo: tengo una forma de escribir muy rara, nunca supe utilizar todos mis dedos para escribir en un teclado, así que a veces arrastro los dedos para darle a dos teclas que están juntas más rápido. Si no tengo un teclado con las teclas bajitas me duelen las yemas de los dedos.
- Spotify: ¿debería ser ilegal programar sin una buena playlist?
- Fondo de pantalla divertido: siempre con precaución, no queremos que gente importante vea nuestro fondo de pantalla absurdo.
Estas son las herramientas y hábitos que hacen que mi trabajo sea mucho más eficiente y agradable. Ninguna hace magia por sí sola; lo importante es integrarlas en tu rutina, conocer sus ventajas y cuándo merece la pena usarlas. Así podrás enfocarte en lo realmente importante: programar y resolver problemas.
Si te interesa profundizar en cómo enfrentarte al inicio de un proyecto desde cero, te recomiendo leer mi post "La ansiedad que da mirar al abismo de un proyecto vacío". Ahí hablo sobre cómo organizar tus ideas, gestionar la inseguridad y dar los primeros pasos sin agobiarte, consejos que complementan las herramientas y tips que comparto aquí para programar más cómodo y eficiente en 2026.


No hay comentarios:
Publicar un comentario