$

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
hoppuestohostventanatiempo
1Técnico de redes y soporteactualEDNONmar. 2024 → actualidad2 a 7 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ácticasoct. → 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 soporteEDNONago. 2022 → sept. 20231 a 2 m

Mismas funciones que el puesto actual.

4Técnico y administrador de sistemasDoezos Consultoría IT2019 → 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 etapas

Cómo trabajo

Lo mismo que hacía con una incidencia a las tres de la mañana, aplicado a escribir código. Tres etapas en orden, cada una con un proyecto que la demuestra.

runbook — incidente
01etapa 01

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
02etapa 02

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
03etapa 03

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
--codigo-ajenopartiendo de un repo existente

En Sistema de Reservas, la API y el frontend son dos repositorios separados que se despliegan por separado (Fly.io / Vercel) 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
Known issueslo que todavía no sé hacer
#1

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.

#2

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.

#3

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.

$

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. Los siete puntos de cada ficha marcan en qué proyectos está viva.

lsof — stack

frontend/

4 piezas

React

5 / 7 proyectos

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

Next.js (App Router)

4 / 7 proyectos

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

Tailwind CSS

5 / 7 proyectos

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

Zustand

1 / 7 proyectos

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 + Express

1 / 7 proyectos

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

NestJS

1 / 7 proyectos

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

PostgreSQL

2 / 7 proyectos

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

Prisma

1 / 7 proyectos

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

infra/

3 piezas

Docker

solo 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 / Render

2 / 7 proyectos

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

Vercel

2 / 7 proyectos

Despliegue automático desde main, sin infraestructura propia que mantener para el frontend.

tooling/

4 piezas

TypeScript

5 / 7 proyectos

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

Vitest + Playwright

3 / 7 proyectos

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

pnpm

1 / 7 proyectos

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

GitHub Actions

4 / 7 proyectos

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