Saltar al contenido

Herramientas de desarrollo que se multiplican

Las herramientas, el shell, el editor y las automatizaciones que se multiplican a lo largo de una carrera, y cómo montar un entorno que no estorbe.

3 min de lectura
Gráfico que contrasta una línea plana de herramientas de uso único con una curva de crecimiento compuesto pronunciada, con mosaicos para formato al guardar, alias de git, hooks de pre-commit y scaffolding.

El multiplicador del tooling

Todo desarrollador tiene una configuración que le ayuda o le estorba. El efecto compuesto de un buen tooling es dramático a lo largo de una carrera: si tus herramientas te ahorran 30 minutos al día, son 120 horas al año. Más importante aún, reducir la fricción te mantiene más tiempo en estados de flujo.

No se trata de perseguir la última herramienta de moda. Se trata de invertir una vez en cosas que te devuelven valor cada día.

Terminal: la base

Tu terminal es tu centro de comando. El tiempo que pasas aquí es tiempo multiplicado.

Configuración del shell que no te estorba

shbash
# .zshrc — the essentials
# Better history search
bindkey '^R' history-incremental-search-backward
 
# Fuzzy file finder — changes how you navigate
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
 
# Smarter cd — jumps to frecent directories
eval "$(zoxide init zsh)"
# z myproject  → jumps to ~/code/projects/myproject
 
# Aliases that earn their keep
alias g='git'
alias gs='git status'
alias gl='git log --oneline --graph --decorate -20'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gd='git diff'
alias gds='git diff --staged'
alias ..='cd ..'
alias ...='cd ../..'
alias ll='ls -la'

Alias de Git para operaciones diarias

shbash
# ~/.gitconfig
[alias]
  st = status
  co = checkout
  br = branch
  ci = commit
  unstage = reset HEAD --
  last = log -1 HEAD
  visual = !gitk
 
  # Undo last commit, keep changes staged
  undo = reset --soft HEAD^
 
  # Show files changed in last commit
  show-files = diff-tree --no-commit-id -r --name-only -r HEAD
 
  # Clean up merged branches
  cleanup = "!git branch --merged | grep -v '\\*\\|master\\|main\\|develop' | xargs -n 1 git branch -d"
 
  # Pretty log
  lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

Editor: configuración de VS Code que escala

El editor es donde pasas la mayor parte del tiempo. Un editor bien configurado elimina pequeñas fricciones constantes.

jsonjson
// .vscode/settings.json — project-level settings committed to the repo
{
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.organizeImports": "explicit"
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.tabSize": 2,
  "editor.rulers": [100],
  "editor.minimap.enabled": false,
  "editor.bracketPairColorization.enabled": true,
  "editor.inlineSuggest.enabled": true,
  "files.trimTrailingWhitespace": true,
  "typescript.preferences.importModuleSpecifier": "non-relative",
  "typescript.updateImportsOnFileMove.enabled": "always",
  "search.exclude": {
    "**/node_modules": true,
    "**/.next": true,
    "**/dist": true,
    "**/.git": true
  }
}

Extensiones que vale la pena instalar

Para un stack TypeScript/React, estas son las que reinstalo en cada máquina:

ESLint                    — inline linting in the editor
Prettier                  — auto-formatting on save
GitLens                   — git blame, history, and diff in the editor
Error Lens                — surfaces errors inline instead of on hover
Import Cost               — shows bundle size of each import
Tailwind CSS IntelliSense — autocomplete for Tailwind classes
Thunder Client            — lightweight API testing (replaces Postman for quick checks)

El scaffold de proyecto que ahorra horas

Cada nuevo proyecto empieza de forma diferente. Un scaffold personal o un repositorio plantilla elimina la "hora de configuración" al inicio de cada proyecto.

shbash
# package.json scripts that the whole team uses
{
  "scripts": {
    "dev": "next dev --turbo",
    "build": "next build",
    "lint": "eslint . --max-warnings 0",
    "lint:fix": "eslint . --fix",
    "format": "prettier --write .",
    "format:check": "prettier --check .",
    "type-check": "tsc --noEmit",
    "test": "jest",
    "test:watch": "jest --watch",
    "check": "npm run type-check && npm run lint && npm run format:check",
    "prepare": "husky"
  }
}
shbash
# .husky/pre-commit — catch issues before they reach CI
#!/bin/sh
npx lint-staged
jsonjson
// lint-staged.config.js — run only on changed files
{
  "*.{ts,tsx}": ["eslint --fix", "prettier --write"],
  "*.{css,md,json}": ["prettier --write"]
}

Automatización: las cosas que nunca deberías hacer manualmente dos veces

shbash
#!/bin/bash
# scripts/new-feature.sh — start a feature branch with all setup done
 
BRANCH_NAME="feat/$1"
 
git checkout main
git pull origin main
git checkout -b "$BRANCH_NAME"
 
echo "Branch $BRANCH_NAME created and ready"
echo "Remember to: create a draft PR early, enable CI"
tstypescript
// scripts/check-env.ts — validate env vars at startup
const required = ["DATABASE_URL", "NEXTAUTH_SECRET", "NEXTAUTH_URL"] as const;
 
const missing = required.filter((key) => !process.env[key]);
 
if (missing.length > 0) {
  console.error(
    `Missing required environment variables: ${missing.join(", ")}`,
  );
  console.error("Copy .env.example to .env.local and fill in the values");
  process.exit(1);
}

El hábito que se acumula

Las mejores mejoras de tooling se acumulan porque cambian el comportamiento:

  • Formatear al guardar elimina las discusiones de formato en la revisión de código
  • Los hooks pre-commit eliminan los fallos de lint en CI
  • Buenos alias de git hacen que ramificar sea sin esfuerzo, así que ramificas con más libertad
  • Una terminal rápida te hace sentir más cómodo en la línea de comandos

Invierte una tarde en configurar bien tu entorno. Luego invierte otra cada vez que te descubras haciendo algo manual que se siente repetitivo. A lo largo de un año, el retorno acumulado de ese tiempo es enorme.

El objetivo no es tener la configuración más sofisticada, sino una donde las herramientas sean invisibles y solo estés pensando en el problema.

Wilfredo Rujel

Wilfredo Rujel

Ingeniero de Software Full Stack

Compartir esta publicaciónX