$

Antes de escribir la solución, quiero entender qué se rompe de verdad

Soy desarrollador full-stack, titulado en Desarrollo de Aplicaciones Web. Pero antes de tocar el primer componente ya llevaba años dando soporte a sistemas en producción 24×7, y eso cambia cómo abordo un problema: primero busco la causa, no el parche más rápido. Debajo van tres ejemplos reales de eso, no adjetivos sueltos.

pablo@dev — zsh

$ uname -a

Formación
DAW (2024) · ASIR (2018)
Ubicación
Galicia, España
Idiomas
Español · Gallego · Inglés
Buscando
Primera posición como desarrollador

$

4 saltos

Por dónde he pasado

Cuatro puestos antes de dedicarme al desarrollo. Cada uno se despliega con lo que de verdad aporta.

traceroute — carrera
hoppuestotiempo
1Técnico de redes y soporteactualEDNON · mar. 2024 → actualidad2 a 9 m

Compaginado con la búsqueda de mi primera posición como desarrollador. Gestión, soporte y monitorización de una red corporativa 24×7 — datos, voz, WiFi y seguridad — con resolución de incidencias de primer nivel, tickets, informes periódicos y copias de seguridad.

2Desarrollador de aplicaciones webIndra · prácticas · oct. → dic. 20233 m

Backend sobre arquitectura de microservicios: endpoints REST, mantenimiento de la interfaz en React y refactorización de servicios existentes dentro del flujo de revisión del equipo.

3Técnico de redes y soporteEDNON · ago. 2022 → sept. 20231 a 2 m

Mismas funciones que el puesto actual.

4Técnico y administrador de sistemasDoezos Consultoría IT · 2019 → 2020—

Desarrollo y mantenimiento de webs de clientes en PrestaShop y WordPress, con el hosting, el dominio y el servidor detrás gestionados también por mí.

destino alcanzado · desarrollo full-stack

$

3 comprobaciones

Cómo trabajo

No son tres virtudes en una lista — es el mismo criterio dejando un rastro distinto cada vez, con un proyecto real detrás de cada uno. Elige cuál mirar.

commit e6a19c2 · Indra

Cómodo en código que no es mío

En las prácticas en Indra no partía de cero: eran endpoints REST sobre microservicios ya en producción, con su propio flujo de revisión. Entender una convención ajena antes de tocarla es un hábito, no una excepción.

entrada: código que no es mío

  • ✓ tcp
  • ✓ dns
  • ✓ tls
  • ping: no basta

Diagnóstico antes que reinicio

Dando soporte a una red corporativa en 24×7 aprendes a no conformarte con 'no responde': hay que mirar dónde se rompe de verdad. Es el mismo criterio detrás de NetPulse: checks reales por TCP, DNS y TLS, no un ping que solo dice sí o no.

salida: causa identificada

  • build
  • jugable
  • TS

Por fases, sin dejarlo roto entre pasos

CodeQuest RPG era una prueba de concepto abandonada a medias. Lo reconstruí en fases: la migración a TypeScript fue archivo por archivo, comprobando build y juego jugable en cada paso, en vez de una reescritura de golpe que se rompe a mitad sin que te enteres.

salida: nada roto entre pasos

git show e6a19c2 --statpartiendo de un repo existente

En Sistema de Reservas, la API y el frontend son dos repositorios separados que se despliegan por separado (Fly.io / Cloudflare Workers) y solo se hablan por una variable de entorno — el mismo criterio de tratar un servicio ajeno como una caja negra con un contrato, no como código propio a medio camino.

evidencia

API y frontend separados, cada uno con su contrato y su despliegue.

Ver Sistema de Reservas
git status --shortlo que todavía no sé hacer
??

Todos los proyectos de esta web los he decidido yo. No he trabajado todavía en un equipo de producto grande, con roadmap ajeno y prioridades que no controlo — es exactamente lo que busco ahora.

??

Docker y los PaaS los uso para desplegar lo mío, pero no he operado contenedores a escala ni montado observabilidad de verdad (métricas, trazas, alertas). Sé lo que falta porque lo he visto funcionar desde el otro lado.

??

Mi experiencia con datos es relacional. NoSQL, colas y todo lo que va con procesamiento asíncrono lo he leído, no lo he puesto en producción.

$

3 reglas

El papel real de la IA en mi trabajo

Escribo estos proyectos dirigiendo a Claude, no a mano línea a línea. No lo escondo porque no hay nada que esconder: acelera la escritura, pero no decide qué construir, ni por qué, ni cuándo algo está terminado.

workflow-ia.md
1

## La arquitectura, el modelo de datos y qué se descarta los decido yo antes de pedirle nada a la IA — no le paso el problema entero y espero una app hecha.

2

## Reviso cada diff como si fuera de un compañero de equipo: nada se sube sin que entienda por qué está ahí y qué pasaría si lo quitara.

3

## Si no puedo defender una línea en una entrevista, no está terminada — el criterio de 'hecho' no es que compile, es que sea mía de verdad.

$

15 elecciones

Stack, con el motivo de cada elección

No es una lista de logos: cada tecnología está aquí por un motivo concreto, el mismo que aparece en los casos de estudio. Abre una ficha para leerlo y ver en cuántos proyectos está viva.

lsof — stack

frontend/

4 piezas
React5/7

Rendimiento y estabilidad en interfaces con pantallas que se montan y desmontan mucho, no solo formularios estáticos.

Next.js (App Router)4/7

Server components para no exponer claves de API al navegador y cachear datos con fetch + revalidate, sin montar una capa de caché propia.

Tailwind CSS5/7

Utilidades para iterar rápido en la maquetación sin mantener una hoja de estilos propia a mano.

Zustand1/7

Un único store organizado por dominios, sin la ceremonia de Redux para el estado que de verdad necesita ser global.

backend/

4 piezas
Node.js + Express1/7

API REST clásica cuando el cliente ya es un proyecto frontend separado, sin necesidad de un framework full-stack.

NestJS1/7

Estructura por módulos y servicios que encaja con patrones de estrategia (un tipo de comprobación, una clase) y con schedulers propios.

PostgreSQL2/7

Relaciones reales (FKs, UNIQUE constraints) y agregados con índices compuestos que encajan mejor en un modelo relacional que en un documento.

Prisma1/7

Migraciones versionadas y modelo tipado, en vez de escribir SQL a mano en cada cambio de esquema.

infra/

3 piezas
Dockersolo en el build

Build multi-stage con runtime final solo con el compilado y las dependencias de producción — imagen más pequeña, sin el toolchain de compilación.

Fly.io / Render2/7

PaaS con capa gratuita, barata para un proyecto de portfolio, a cambio de cold starts que hay que mitigar explícitamente (keepalive, reintentos).

Cloudflare Workers3/7

Despliegue automático desde main vía Wrangler, en el edge y sin los cold starts del resto del stack, sin infraestructura propia que mantener.

tooling/

4 piezas
TypeScript5/7

Tipado en cliente y servidor; strict cuando el proyecto lo permite desde el principio, progresivo cuando se parte de JS existente.

Vitest + Playwright3/7

Vitest para la lógica de negocio sin levantar navegador; Playwright para un e2e real del flujo completo cuando hace falta.

pnpm1/7

Workspaces para compartir tipos entre backend y frontend en un monorepo sin duplicar interfaces que se desincronizan.

GitHub Actions4/7

CI (lint, typecheck, test) en cada push y pull request, gratuito para proyectos personales.