Mi setup que nunca pensé que sería tan productivo
Mi setup que nunca pensé que sería tan productivo
Después de 15 años usando Windows como mi sistema operativo principal, di el salto a Linux. No fue una decisión técnica puramente — fue una necesidad de eficiencia que cambió completamente mi forma de trabajar.
Este es el setup que me permite ser productivo como desarrollador solo, enfocándome en resolver problemas reales en lugar de luchar contra mi entorno de trabajo.
El cambio: Windows → Linux
Durante mucho tiempo, había querido sacar el mayor provecho del sistema operativo. La memoria RAM (actualmente tengo 16gb) siempre fue el problema principal: consumo excesivo insostenible; luego de cierto tiempo, era inmanejable la lentitud con que el sistema operativo se comportaba.
Ya después de pensarlo mucho y ver mis posibilidades de cambiar el hardware, no tuve otra opción, que darle una oportunidad al sistema operativo que por mucho tiempo me ha llamado la atención (tenía experiencia manejándolo anteriormente con varias VMs en AWS) pero ya con fines mayores, utilizarlo en mi día a día de trabajo (Desarrollador Solitario).
El cambio a Ubuntu ha sido muy suave, debido a la paridad que tiene con Windows, pero en un principio fue un poco cuesta arriba. Soy mucho de utilizar shortcuts que actualmente no se encontraban ni de la misma manera, ni con la misma facilidad.
Hacer la transición a open source no conseguía el mismo producto, ni con los mismos acabados, pero sí tenía las mismas cualidades.
A partir de mi cambio mental: “No busques el mismo producto, busca la solución más viable y posible”. Este cambio, me dió a entender que el mundo open source era todo un laberinto, y al mismo tiempo un universo de personalizaciones, olvidándome de los detalles, podía obtener la misma fiabilidad a cuestas de aprender y evolucionar en conjunto con mi productividad.
Mi experiencia: nunca pensé que con solo hacer el cambio a Linux podía revolucionar mi productividad, ser más eficiente, amar más el proceso sin esperar el resultado.
Hardware minimalista: Linux no necesita potencia bruta
Una de las revelaciones más grandes: no necesitas una máquina de última generación.
Mi hardware actual
-
Monitor(es):
-
CRUA 27’
-
Dell 23’
-
Periféricos:
Mouse:
Y respecto al teclado, me gusta utilizar el teclado empotrado de la laptop, simple, ergonómico y bastante callado.
¿Por qué funciona?
Linux es increíblemente eficiente:
- Menos overhead del sistema operativo
- No hay procesos innecesarios en background
- Control total sobre qué corre y cuándo
- Actualizaciones que no te interrumpen
La terminal: ¿Por qué dejé de hacer clic?
Este fue el cambio más transformador. La terminal no es solo “más rápida” — es fundamentalmente superior para desarrollo.
Ventajas de la línea de comandos
Velocidad:
# GUI: Abrir app → Buscar carpeta → Click → Click → Click
# Terminal:
cd proyecto && code .
Reproducibilidad: Todo comando se puede documentar, compartir y automatizar.
Composabilidad:
# Buscar archivos Python modificados hoy y contar líneas
find . -name "*.py" -mtime -1 | xargs wc -l
Poder:
- Operaciones batch instantáneas
- Manipulación de texto con sed/awk/grep
- Scripts que automatizan tareas repetitivas
- Control total del sistema
Mi shell: zsh
Configuración personalizada:
- Aliases que uso diariamente
- Funciones custom para tareas comunes
- Prompt informativo pero minimalista
Herramientas esenciales del setup
Mi stack es intencionalmente simple. Cada herramienta tiene un propósito claro.
1. GitHub: Más allá de git
No solo control de versiones:
gh
CLI para PRs y issues- GitHub Actions para CI/CD
- Gestión de proyectos y tareas
- Documentación centralizada
Comandos que uso a diario:
gh repo clone usuario/repo
gh pr create
gh issue list
2. VS Code: El editor versátil
Mis Extensiones clave:
- AutoDocstring
- AWS toolkit (también en el shell con el SDK nativo)
- Astro (para este blog/journal)
- JavaScript and TypeScript nightly
- ES7 + React/Redux/React-Native
- Highlight Matching Tag (importante cuando en el desarrollo hay muchos tags)
- Import Cost (me gusta ser eficiente al momento de importar)
¿Por qué VS Code?
- Equilibrio perfecto entre simplicidad y poder
- Excelente integración con terminal
- Remote development
- Extensibilidad infinita
3. Claude/ChatGPT: Copiloto de aprendizaje
Esto merece atención especial. No los uso para “generar código mágicamente”, los uso para:
Aprendizaje acelerado:
- Explicaciones de conceptos complejos
- Comprensión de código legacy
- Exploración de nuevas tecnologías
- Debugging de problemas oscuros
- Code review / Aprendizaje sobre mejores prácticas
Productividad real:
- Generar boilerplate rápido
- Refactoring suggestions
- Documentación automática
- Pair programming virtual
“Como desarrollador solo, Claude es mi rubber duck inteligente”
Mi workflow con IA:
- Entender el problema del negocio
- Diseñar la solución
- Usar IA para acelerar implementación
- Revisar, adaptar y gestionar el código generado
- Aprender del proceso
4. Mi biblioteca personal: Conocimiento curado
Libros técnicos no son decoración — son referencias activas.
Mis referencias constantes:
- The Essential Data Warehouse library - Para todo lo relacionado con data warehouse.
- Streaming Systems - Para todo lo que se refiere a procesos streaming
- Data Management at Scale - Para todo el manejo de equipos de información
- Programming Scala - Para todo lo que involucre programación con scala
- Introduction to Data Mining - Para los procesos de data mining
- Think Bayes - Mi fuente de referencia para python y pensamiento bayes
- Programming Typescript - Para todos los pequeños detalles que siempre se olvidan en typescript
- Effective TypeScript - Mi fuente de referencia en temas avanzados de typescript
- Design Patterns: Elements of Reusable Object-Oriented Software - La biblia de patrones de diseños para la programación orientada a objetos.
entre otros…
Cómo los uso:
- Consulta rápida de conceptos
- Profundización cuando el Stack Overflow no basta
- Fundamentos que no cambian con las modas
- Perspectivas de expertos validadas
Markdown: Mi sistema nervioso organizacional
Archivos .md
para TODO:
Task lists
## Sprint Actual
- [ ] Feature X
- [ ] Bug fix Y
- [x] Refactor Z
Documentación técnica
# Proyecto XYZ
## Arquitectura
- Diagrama
- Decisiones técnicas
## Setup
- Pasos de instalación
- Variables de entorno
Notas de reuniones
# Reunión Cliente - 2024-10-13
- Problema identificado
- Solución propuesta
- Next steps
Knowledge base personal
# Cómo hacer X en Python
# Error Y y su solución
# Patrones que funcionan
Ventajas:
- Versionable con Git
- Legible en cualquier editor
- Exportable a cualquier formato
- Búsqueda con
grep
Filosofía: Eficiencia sobre facilidad
Este es el núcleo de mi productividad.
Entender el problema del negocio primero
Antes de escribir código:
- ¿Qué problema resuelve esto?
- ¿Para quién?
- ¿Cómo se mide el éxito?
- ¿Cuál es el MVP real?
“La mejor línea de código es la que no tienes que escribir”
Solución eficiente ≠ Solución fácil
Fácil: Usar framework X porque todos lo usan Eficiente: Evaluar si necesitas framework o vanilla basta
Fácil: Copy-paste de Stack Overflow Eficiente: Entender el por qué y adaptar
Fácil: Agregar dependencia para todo Eficiente: Escribir 10 líneas propias cuando tiene sentido
Constraints creativos
Linux me forzó a:
- Pensar antes de instalar
- Entender qué hace cada comando
- Depender menos de GUIs
- Automatizar lo repetitivo
Estos “límites” me hicieron mejor desarrollador.
Cómo esto me hace productivo siendo desarrollador solo
Ventajas de mi setup:
1. Arranque rápido De apagado a escribir código: < 3 minutos
2. Sin distracciones
- Terminal = foco
- Sin notificaciones invasivas
- Control total del ambiente
3. Reproducible Todo mi setup está en dotfiles:
git clone mis-dotfiles
./install.sh
# Listo
4. Escalable Las herramientas crecen conmigo:
- Scripts se vuelven más sofisticados
- Aliases evolucionan
- Workflow se optimiza constantemente
Desafíos y trade-offs
Curva de aprendizaje:
- Primeras semanas son duras
- Exige disciplina
- No todo tiene GUI
Mantenimiento:
- Tú eres tu propio IT support
- Troubleshooting requiere conocimiento
- Updates ocasionalmente rompen cosas
¿Vale la pena? Absolutamente.
Conclusión: Productividad intencional
Mi setup productivo no es el más común ni el más “cool”. Es intencional.
Cada herramienta tiene una razón de ser:
- Linux: eficiencia y control
- Terminal: velocidad y poder
- Markdown: simplicidad y portabilidad
- IA: aprendizaje acelerado
- Libros: fundamentos sólidos
El setup no te hace productivo — tus decisiones sí.
Mi productividad no viene del hardware o las herramientas. Viene de:
- Entender problemas antes de resolverlos
- Elegir eficiencia sobre conveniencia
- Aprender constantemente
- Automatizar lo repetitivo
- Documentar todo
- Mantener una actitud positiva frente a lo desconocido
¿Cuál es tu setup? ¿Qué herramientas consideras esenciales? Me encantaría conocer tu workflow.
Recursos mencionados:
Conecta conmigo: