main content

Cómo documentar correctamente un proyecto de desarrollo web a medida

He perdido la cuenta de las veces que he abierto un repositorio heredado y me he encontrado un README vacío -- o peor, un README que mentía. Un proyecto de desarrollo web a medida no está terminado cuando pasa a producción. Está terminado cuando otro desarrollador puede clonarlo, entenderlo y modificarlo sin llamar a nadie. Eso casi nunca pasa.

El patrón se repite: equipos que invierten meses en una plataforma sólida entregan al cliente un producto sin especificaciones actualizadas, sin guía técnica, sin nada que permita retomar el trabajo sin fricciones. El coste: mantenimiento inflado, dependencia del equipo original y cada cambio futuro convertido en ingeniería inversa. Vamos a ver cómo evitarlo.

Por qué la documentación es crítica en proyectos a medida

Cuando trabajas con WordPress o Shopify, el framework te da contexto. Cualquier desarrollador con experiencia en esas plataformas abre un proyecto ajeno y se orienta rápido. Las convenciones hacen el trabajo pesado.

En un desarrollo a medida no tienes esa red de seguridad. Las decisiones de arquitectura, los flujos de negocio, las integraciones con terceros, las reglas de dominio específicas... nada de eso se deduce del código. Si no está escrito, no existe para quien no participó en el diseño. Así de simple.

Documentar no es un gasto. Es una inversión medible en tres frentes:

  • Menos horas de mantenimiento. Un equipo que hereda un proyecto bien documentado localiza, entiende y modifica componentes mucho más rápido.
  • Menos errores tontos. Cuando las reglas de negocio están escritas dejan de depender de la memoria de un solo desarrollador. Y la memoria falla.
  • Más autonomía para el cliente. Una buena documentación de usuario permite al equipo interno resolver dudas operativas sin abrir un ticket al proveedor.

Tipos de documentación que necesita un proyecto web a medida

No toda la documentación sirve para lo mismo ni la lee la misma persona. Un proyecto completo debería cubrir, como mínimo, estos bloques.

Especificación funcional

La especificación funcional describe qué hace el sistema desde la perspectiva del negocio. Nada de detalles técnicos aquí: requisitos, flujos de usuario, reglas de validación, roles y permisos, criterios de aceptación. Punto.

Este documento es el contrato real entre cliente y equipo. Se redacta antes de escribir la primera línea de código y se actualiza cada vez que cambia el alcance. Si no haces esto, luego vienen las discusiones del "yo pedí X" contra "nosotros entendimos Y". Su formato habitual:

  • Descripción general del proyecto y objetivos.
  • Listado de módulos con sus casos de uso.
  • Diagramas de flujo para los procesos complejos.
  • Matriz de roles y permisos.
  • Requisitos no funcionales: rendimiento, disponibilidad, seguridad.

Documentación técnica

Esta va dirigida al equipo de desarrollo -- el actual y el que venga después. El objetivo es que cualquier profesional cualificado pueda entender la arquitectura, levantar un entorno local y trabajar con el código sin tener que preguntar "oye, y esto por qué está así".

Lo mínimo que debería incluir:

  • Arquitectura general. Diagrama de componentes, stack tecnológico, patrón arquitectónico (MVC, microservicios, monolito modular) y la justificación de las decisiones. El "por qué" vale más que el "qué".
  • Estructura del repositorio. Organización de carpetas, convención de nombres, ficheros clave. Parece trivial hasta que te toca buscar la configuración de colas en un proyecto con 400 archivos.
  • Guía de configuración del entorno. Paso a paso para levantar el proyecto en local: dependencias, variables de entorno, base de datos, servicios externos. He visto onboardings de tres días convertirse en media hora con una buena guía de setup.
  • Flujo de trabajo con Git. Estrategia de ramas, convención de commits, code review, política de despliegues.
  • Decisiones de diseño (ADR). Los Architecture Decision Records son oro puro. Documentan por qué se tomó cada decisión, qué alternativas se evaluaron y en qué contexto. Cuando seis meses después alguien pregunta "por qué usamos Redis aquí", el ADR responde sin arqueología.

Documentación de API

Si el proyecto expone o consume APIs, cada endpoint necesita su ficha: ruta, método HTTP, parámetros de entrada, formato de respuesta, códigos de error y ejemplos reales. No ejemplos genéricos con foo y bar -- datos que se parezcan a lo que el endpoint maneja de verdad.

El estándar de facto es OpenAPI (antes Swagger). Genera documentación interactiva desde la especificación, facilita la integración con terceros y permite automatizar pruebas contra la propia spec.

Puntos que marcan la diferencia:

  • Documentar casos de éxito y de error. El 404 y el 422 importan tanto como el 200.
  • Versionar la API y reflejar cambios en la documentación.
  • Mantener la spec sincronizada con el código real, idealmente generándola de forma automática.

Guías de usuario

Las guías de usuario van dirigidas a quienes operan el sistema cada día: administradores de contenido, personal de atención al cliente, responsables de operaciones. No necesitan saber qué hay un Nginx detrás; necesitan saber cómo dar de alta un producto o cómo exportar un informe.

Una buena guía de usuario:

  • Organiza el contenido por tareas, no por secciones de la aplicación. "Cómo crear una campaña" le dice más al usuario que "Módulo de campañas".
  • Incluye capturas de pantalla anotadas cuando la interfaz no es autoexplicativa.
  • Anticipa errores frecuentes y explica cómo resolverlos.
  • Se actualiza con cada release que toque la interfaz o los flujos de trabajo.

Documentación de traspaso (handoff)

Esta es, probablemente, la más ignorada de todas. Y la más cara de no tener. La documentación de traspaso permite transferir el proyecto a otro equipo, sea interno del cliente o un nuevo proveedor.

Un documento de traspaso completo incluye:

  • Accesos a todos los entornos (desarrollo, staging, producción) y servicios de terceros.
  • Inventario de infraestructura: servidores, dominios, certificados, CDN, servicios cloud.
  • Estado actual del proyecto: funcionalidades completadas, deuda técnica conocida, tareas pendientes.
  • Contactos clave y acuerdos de soporte vigentes.
  • Procedimientos de despliegue y rollback.

Cuándo documentar: el momento importa

Uno de los errores clásicos es dejarlo todo para el final. En la práctica eso significa que la documentación no se hace o se hace a toda prisa bajo la presión de una entrega. Resultado: un PDF de 10 páginas que nadie va a leer porque no refleja la realidad del sistema.

La documentación tiene que ser un proceso continuo, integrado en el flujo de trabajo diario:

  • La especificación funcional se redacta en la fase de análisis y se revisa en cada iteración.
  • La documentación técnica se escribe a medida que se construye cada componente. El README del repositorio se crea el primer día. Primer día, no último.
  • La documentación de API se genera o actualiza con cada endpoint nuevo o modificado.
  • Las guías de usuario se elaboran conforme se completan funcionalidades, no cuando ya estás empaquetando la entrega.
  • La documentación de traspaso se va alimentando durante todo el desarrollo, registrando accesos e infraestructura desde el arranque.

El truco que mejor funciona: incluir la documentación en la definition of done de cada tarea. Si no está documentada, no está terminada. Sin excepciones.

Herramientas para documentar proyectos web a medida

La herramienta concreta importa menos que la disciplina. Dicho esto, elegir bien facilita la adopción.

  • Confluence o Notion para documentación funcional y guías de usuario. Colaboración en tiempo real, versionado, organización jerárquica.
  • Markdown en el repositorio para documentación técnica. README.md, CONTRIBUTING.md, carpeta docs/. La documentación viaja con el proyecto. Si haces checkout de una rama antigua, ves la documentación de esa versión. Un wiki externo no te da eso.
  • OpenAPI / Swagger para APIs. Swagger UI o Redoc generan interfaces navegables desde la spec.
  • Diagramas como código con Mermaid, PlantUML o draw.io. Se versionan con el código, sin licencias extra.
  • ADR Tools para gestionar Architecture Decision Records con estructura consistente.

Lo que importa de verdad: que la documentación sea accesible para su audiencia, versionada, y que mantenerla no sea un suplicio.

Cómo mantener la documentación viva

Documentación desactualizada es peor que no tener documentación. Genera falsa confianza y puede provocar errores graves. He visto a gente seguir un runbook obsoleto y tumbar producción un viernes a las seis de la tarde.

Cuatro prácticas que funcionan:

  • Incluirla en las revisiones de código. Si un PR cambia un comportamiento documentado, la documentación se actualiza en el mismo PR. No en otro. No "la semana que viene".
  • Asignar un responsable. Sin un responsable explícito, la responsabilidad se diluye y nadie revisa nada.
  • Automatizar lo automatizable. Documentación de API generada desde el código, diagramas de base de datos desde el esquema, changelogs automáticos. Menos trabajo manual, menos desfase.
  • Revisar en cada release. Antes de cada despliegue a producción, verificar que la documentación refleja el estado real del sistema.

El impacto real en costes de mantenimiento

Los números son claros. Según estudios del sector, los equipos que trabajan con código mal documentado dedican entre un 40 y un 60 por ciento más de tiempo a mantenimiento comparado con proyectos bien documentados. En desarrollos a medida, donde la rotación de personal y los cambios de proveedor son habituales, la diferencia es todavía mayor.

Un caso que he visto repetido: empresa contrata desarrollo a medida, el proveedor entrega sin documentación, dos años después necesitan cambios. El nuevo equipo necesita semanas solo para entender la arquitectura antes de tocar una línea. Esas semanas son miles de euros que se habrían ahorrado con una inversión modesta en documentación.

La documentación no es un PDF -- es una práctica de ingeniería

Documentar un proyecto de desarrollo web a medida no es un extra ni un capricho de gente perfeccionista. Es una práctica profesional básica que protege la inversión del cliente, reduce costes futuros y permite que el software evolucione sin fricciones.

La clave: tratarla como parte del proceso de desarrollo, no como un apéndice que se añade cuando ya no queda presupuesto. Especificaciones funcionales, documentación técnica, documentación de API, guías de usuario y documentación de traspaso forman el conjunto mínimo que todo proyecto serio debería incluir.

Si estás planificando un proyecto de desarrollo web a medida y quieres que la documentación se gestione de forma profesional desde el primer día, hablemos sobre tu proyecto. Una buena documentación empieza por una buena planificación.