</AS>

Aleix Soler

2025

Cómo un proyecto de 71h se convirtió en 109h

Lo que tenía que ser un proyecto acotado acabó desbordándose. Una historia real sobre mala estimación, cambios de diseño e imprevistos de hosting.

La llamada que lo cambió todo

Era un martes de enero cuando Pau me llamó. Artista digital, amigo de hace años, y con esa voz de "tengo una propuesta interesante". La empresa donde trabaja él necesitaba una web corporativa y la persona que lo tenía que hacer se había negado. "¿Lo harías tú?"

Acababa de cerrar las modificaciones de mi web personal. Tenía tiempo. Tenía ganas. Y, seré honesto, hacía tiempo que no hacía ningún proyecto externo y me hacía ilusión volver.

"Sí", dije. Así de simple. Sin preguntas.

Ahora, siete meses después, sé que esa respuesta me costó 40 horas extra de trabajo y un buen susto con el hosting.

El briefing que parecía sencillo

Los requerimientos eran claros: web corporativa con "home", página de empresa, contacto y un catálogo de productos organizado por categorías. Nada del otro mundo. También querían un back office para que los empleados pudieran gestionar todo el contenido.

Mientras íbamos hablando, ya iba calculando mentalmente el trabajo que podría conllevar. Con Pau haciendo el diseño, yo me podía centrar solo en el desarrollo. Perfecto.

Pero aquí vino la primera decisión importante: cómo enfocar técnicamente el proyecto.

La elección del stack

WordPress o similares era la opción obvia. Pero yo quería un reto. No había tocado un CMS tradicional en años y francamente, no me apetecía volver. Al mismo tiempo, tampoco quería reinventar la rueda construyendo un CMS desde cero.

La solución: Headless CMS.

Después de investigar varias opciones, me decidí por Strapi. Era simple, fiable, y no quería sorpresas desagradables en un proyecto profesional donde iba solo. Para el frontend, Nextjs era mi elección natural. Perfecto para webs híbridas donde necesitas páginas estáticas para SEO y dinámicas para el catálogo.

Estaba motivado. El stack estaba decidido y sabía que podía sacar el proyecto adelante.

El presupuesto que pareció realista

Con el diseño en manos de Pau, pude centrarme en calcular horas de desarrollo:

  • Backend con Strapi: 18 horas (configuración, entidades, permisos, pruebas)
  • Frontend con NextJS: 37 horas (landing, páginas, catálogo, filtros)
  • DevOps y deployment: 16 horas (hosting, tests, toques finales)

Total: 71 horas.

Ahora venía la parte complicada: qué cobrar por hora? Pedí a la IA que me hiciera un estudio de mercado. 400 webs analizadas después, el resultado era claro: freelancers seniors cobraban entre 35-50€/hora.

Pero yo hacía tiempo que no trabajaba para terceros. ¿Síndrome del impostor? Quizás. El caso es que decidí ponerme a 20€/hora (el precio/hora de los juniors).

1.420€ + 15% de imprevistos ≈ 1.650€ redondeados

El presupuesto fue aceptado y empecé el desarrollo el 15 de abril.

Cuando la realidad te da una bofetada

Las primeras semanas fueron fantásticas. El backend con Strapi funcionaba de maravilla. El frontend avanzaba según lo previsto. Pau y yo trabajábamos en sintonía perfecta.

Hasta que llegó el momento de colgar la web.

"Tenemos hosting contratado", me habían dicho al principio. Yo, inocentemente, asumí que sería compatible con lo que estaba construyendo.

Error garrafal.

Su hosting estaba montado para WordPress y PrestaShop - el típico hosting compartido que solo entiende de CMS tradicionales. No podía deployar aplicaciones NodeJS, ni modificar proxies, ni poner crons, ni acceder a los logs. Si tenía acceso a la máquina, estaba completamente capada.

Para cambiar a un VPS normal que soportara mi stack con este proveedor: 500€ más al año. Parecía mentira.

Pasé dos semanas abriendo tickets. Cada conversación era más frustrante que la anterior. Pregunta que hacía, pregunta que esquivaban. Era claro que solo entendían de WordPress y cuando les hablaba de NodeJS ponían cara de no entender nada.

Al final me enfadé. Fue el momento de cambiar de proveedor.

La migración que no había previsto

La solución fue migrar todo a Hetzner. Hosting moderno, escalable, y mucho más barato. Una máquina Linux donde tuviera control completo para hacer las cosas bien y sin fricciones.

Pero cuando vi que el cliente pasaría de pagar 350€/año a solo 130€, decidí migrar todos sus servicios. No solo para ahorrarles dinero, sino porque era el único camino lógico.

Esto implicó mucho más que simplemente cambiar de servidor:

  • Migrar todos los correos corporativos de la empresa
  • Reconfigurar DNS
  • Enseñar a los empleados a usar Thunderbird en lugar del webmail que tenían
  • Documentar los procesos nuevos

Lo que tenía que ser "colgar la web" se convirtió en una migración completa de infraestructura.

Cada tarde, después del trabajo, me ponía con la migración. Los empleados me enviaban capturas con dudas sobre la nueva configuración. Hice de técnico IT sin haberlo presupuestado. Es lo que tiene la pasión por el trabajo, supongo.

Pero cuando vi el ahorro final de 220€/año, valió la pena todo el dolor de cabeza.

La realidad de los números

Cuando cerré el proyecto el 1 de julio, hice recuento de horas:

71 horas presupuestadas → 108.91 horas reales

Donde fallé:

  • Frontend: de 37h a 57h (cambios de diseño sobre la marcha)
  • DevOps: de 16h a 39h (la migración no prevista)
  • Backend: 18h a 10h (Strapi fue más rápido de lo que pensaba)

Lo único que acerté fue el backend. ¿El resto? Desastre total de presupuesto.

Las lecciones que me han costado caras

Esta experiencia me ha enseñado que el desarrollo es solo una parte del proyecto. Las preguntas que debería haber hecho desde el primer día:

  • ¿Qué hosting tienen actualmente?
  • ¿Qué tecnologías soporta?
  • ¿Cómo tienen configurado el correo corporativo?
  • ¿Quién gestiona dominio y DNS?

También aprendí que los cambios de diseño durante el desarrollo matan cualquier presupuesto. Pau estaba muy involucrado (cosa buena para el resultado final), pero cada ajuste se convertía en más horas invertidas.

Para la próxima vez: diseño aprobado = diseño final. Punto. O encontrar alguna estrategia para gestionar mejor estas modificaciones estéticas, ya sea poniéndoles precio específico o estableciendo fechas concretas para cambios dentro del presupuesto inicial.

Lo que haré diferente

La web fue un éxito. El cliente está contento. ¿Pero económicamente? Acabé cobrando mucho menos de lo que debería haber tocado por hora y eso que ya partía de bajo.

Ahora sé que:

  • Hay que hacer un descubrimiento técnico antes de aceptar cualquier proyecto.
  • Trabajar por 20 €/hora es insostenible cuando el mercado paga entre 35 y 50 € por un freelance con experiencia.
  • El DevOps siempre esconde sorpresas: hay que multiplicar cualquier estimación por 1.5.
  • No se puede modificar el diseño una vez aceptado sin revisar el impacto real en tiempo y coste.

Pero sobre todo, que preguntar sobre el hosting no es paranoia, es profesionalidad. Una web que no se puede colgar con los requisitos que tiene no aporta ningún valor.

La próxima vez, la primera pregunta será: "Explícame la infraestructura actual". Puede parecer aburrido, pero me habría ahorrado 20 horas de mi vida.

Qué vendrá después

A pesar de los dolores de cabeza, esta experiencia con Pau ha sido muy enriquecedora. Gestionar un proyecto así mientras trabajas a jornada completa no es fácil, pero hemos creado una buena dinámica: él llevando la parte visual y de marca, yo la tecnológica.

De hecho, estamos abiertos a hacer más proyectos juntos. Si tenéis alguna web entre manos, ya sabéis dónde encontrarnos.

Ahora mismo tengo la cabeza puesta en mi home lab. Este mes toca configurar Home Assistant y empezar a jugar con domótica. Quizás sea el tema del próximo post, o quizás no. Me gusta el caos.

Ah, y si queréis ver el resultado final de tanta migración: angel-europa.com

¡Hasta la próxima!